[coverage] Conformance findings: CLOUDFETCH-019

オープン
#903 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る

まだ誰も着手していません。

評価

難易度
4/5
見積もり時間
3〜5日
初心者へのやさしさ
52/100
issue の種類
バグ
明瞭さ
おおむね明確
活発さ
静か
技術スタック
python
領域
backend, databases

調査の方向性

tests/ 配下の coverage PR diff にある失敗しているテスト test_invalid_client_side_cloudfetch_knob_value_does_not_fail_session_open から始め、Python ドライバーの Thrift CloudFetch オプション処理を追跡します。非正値と過大な値を再現し、クエリが少なくとも 1 行を返して成功すること、無効な設定が OpenSession に含まれないこと、そして CloudFetch が引き続きデータをダウンロードすることを検証します。

索引モデルが issue の本文から書いたものです。

説明

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

主要言語
Python
スター
233
フォーク
152
平均マージ
21時間 5分
マージ済み PR(30日)
10

コントリビューションガイド

コントリビューションガイドを開く

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

databricks/databricks-sql-python のほかの issue

databricks/databricks-sql-python の issue をすべて見る

似ている issue

Python の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。