[coverage] Conformance findings: CLOUDFETCH-019

Offen
#903 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

Bewertung

Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Anfängerfreundlichkeit
52/100
Issue-Typ
Bug
Klarheit
Größtenteils klar
Aktivitätsstatus
Ruhig
Tech-Stack
python
Bereich
backend, databases

Rechercherichtung

Beginne mit dem fehlschlagenden Test test_invalid_client_side_cloudfetch_knob_value_does_not_fail_session_open im Coverage-PR-Diff unter tests/, und verfolge anschließend die Verarbeitung der Thrift-CloudFetch-Optionen im Python-Treiber. Reproduziere nicht-positive und übergroße Werte und verifiziere, dass die Abfrage mit mindestens einer Zeile erfolgreich ist, die ungültige Konfiguration in OpenSession nicht enthalten ist und CloudFetch weiterhin Daten herunterlädt.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Beschreibung

Summary

Surfaced by the multi-language coverage fan-out while conformance-testing these SPEC-IDs against databricks/databricks-sql-python. Each finding is committed as an expected-failure (xfail) test in the coverage PR — the test asserts the CORRECT (post-fix) behavior and stays red until THIS driver (databricks/databricks-sql-python) is fixed, then flips green as a tripwire.

Findings

  • CLOUDFETCH-019 [thrift]: Thrift backend forwards a non-positive max_download_threads unvalidated to ThreadPoolExecutor(max_workers=0), so the first CloudFetch-sized query raises ValueError: max_workers must be greater than 0 instead of warning and degrading to the driver default of 10
    • failing test: test_invalid_client_side_cloudfetch_knob_value_does_not_fail_session_open (see the coverage PR diff under tests/)
  • CLOUDFETCH-019: Thrift backend forwards a non-positive max_download_threads unvalidated to ThreadPoolExecutor(max_workers=0), so the first CloudFetch-sized query raises ValueError: max_workers must be greater than 0 instead of warning and degrading to the default of 10 — a cosmetic client-side tuning typo breaks querying outright

Reproduce & Expected

CLOUDFETCH-019 — A bad value for a client-side CloudFetch tuning knob must degrade to the driver default, never fail the connection.

Reproduce:

  • Same knob as CLOUDFETCH-018 (this driver's client-side CloudFetch knob), set
    to a value that is not a positive integer — e.g.
    adbc.databricks.cloudfetch.max_chunks_in_memory = "not-a-number". Use "0" or
    "-1" where the driver's option surface is typed and cannot carry a
    non-numeric string.
  • The same knob set far above any plausible ceiling — e.g. "100000" (the
    reference kernel clamps at 256).

Expected (per the shared spec):

  • completes without an exception
  • result has at least 1 row(s)
  • completes without an exception
  • result has at least 1 row(s)
  • [thrift] OpenSession request configuration.cloudfetch_max_chunks_in_memory is absent
  • [sea] CreateSession request session_confs.cloudfetch_max_chunks_in_memory is absent
  • full assertion contract:
result:
- label: not_a_positive_integer
  no_exception: true
- label: not_a_positive_integer
  row_count_min: 1
- label: above_maximum
  no_exception: true
- label: above_maximum
  row_count_min: 1
protocol:
  thrift:
  - label: not_a_positive_integer
    request_field:
      method: OpenSession
      path: configuration.cloudfetch_max_chunks_in_memory
      present: false
  - label: not_a_positive_integer
    cloud_downloads_min: 1
  sea:
  - label: not_a_positive_integer
    request_field:
      operation: CreateSession
      path: session_confs.cloudfetch_max_chunks_in_memory
      present: false
  - label: not_a_positive_integer
    cloud_downloads_min: 1

Context

Vorherrschende Sprache
Python
Sterne
233
Forks
152
Ø Merge
21 Std. 5 Min.
Gemergte PRs (30 T.)
10

Beitragsleitfaden

Beitragsleitfaden öffnen

Erste Schritte

  1. Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
  3. Forken Sie das Repository und arbeiten Sie in einem Branch.
  4. Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.

Mehr aus databricks/databricks-sql-python

Alle Issues in databricks/databricks-sql-python

Ähnliche Issues

Weitere Issues zu Python

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.