[coverage] Conformance findings: STATEMENT-028
Maintainer thường phản hồi trong vòng 1 ngày
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 2/5
- Thời gian dự kiến
- 1-3 giờ
- Mức phù hợp với người mới
- 72/100
Hướng nghiên cứu
Bắt đầu với _check_command_not_in_error_or_closed_state và bài kiểm thử đang lỗi test_failed_operation_error_exposes_server_sql_state trong diff của PR về coverage tại tests/. Theo dõi cách xử lý payload trạng thái thao tác cuối cùng và nơi phát sinh ServerOperationError. Công việc hoàn tất khi lỗi hiển thị SQLSTATE do máy chủ báo cáo nếu payload có trường này, và bài kiểm thử được nêu chạy thành công.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
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
- STATEMENT-028 [thrift]: Thrift backend drops the failed operation's server-reported SQLSTATE:
_check_command_not_in_error_or_closed_stateraisesServerOperationErrorfrom the terminal operation-status payload but never forwards that payload's top-levelsqlState, so the error exposes nosql_state— while the kernel backend sets that exact attribute on the same exception class, making SQLSTATE availability depend on which wire protocol delivered the failure- failing test:
test_failed_operation_error_exposes_server_sql_state(see the coverage PR diff undertests/)
- failing test:
Reproduce & Expected
STATEMENT-028 — Validates that a statement which COMPILES and then FAILS AT RUNTIME on the server raises an error carrying the server-reported SQLSTATE as first-class error metadata -- a dedicated field/accessor on…
Reproduce:
SELECT raise_error('boom')
Expected (per the shared spec):
- full assertion contract:
result:
- error:
present: true
- error:
contains:
- boom
- error_sql_state:
present: true
length: 5
condition: the terminal operation-status payload carried a SQLSTATE for the failed
operation
description: 'The error exposes a 5-character SQLSTATE. Gated on the server actually
sending one:
if the terminal payload carries none the driver must NOT invent one, and a surface
that mandates a SQLSTATE may report its own generic state (e.g. ODBC `HY000`).
'
- error_sql_state:
equals_wire_value: true
condition: the terminal operation-status payload carried a SQLSTATE for the failed
operation
description: 'Equal to the operation-level SQLSTATE the protocol blocks below locate
on the wire
for this run.
'
- error_sql_state:
not_equals: '00000'
description: 'Never the enclosing status/transport envelope''s success SQLSTATE
-- that envelope
reports that the status call succeeded, not how the query failed.
'
protocol:
thrift:
- response_field:
method: GetOperationStatus
path: sqlState
present: true
occurrence: last
condition: GetOperationStatus response operationState == ERROR_STATE
- response_field:
method: GetOperationStatus
path: status.statusCode
equals: SUCCESS_STATUS
occurrence: last
condition: GetOperationStatus response operationState == ERROR_STATE
sea:
- response_field:
operation: ExecuteStatement
path: status.sql_state
present: true
occurrence: last
condition: execute response status.state == FAILED
- response_field:
operation: GetStatementStatus
path: status.sql_state
present: true
occurrence: last
condition: status response status.state == FAILED
Context
- The behavior was first fixed in a DIFFERENT driver — reference PR: https://github.com/databricks/databricks-sql-nodejs/pull/563 — which seeded the shared language-neutral spec. This issue tracks the same conformance gap in databricks/databricks-sql-python; the reference PR is for cross-referencing the intended behavior, NOT a change to this repo.
- Coverage PR carrying the reproducing xfail test(s): https://github.com/databricks/databricks-driver-test/pull/1946
- Ngôn ngữ chính
- Python
- Star
- 236
- Fork
- 162
- Merge trung bình
- 13 giờ 13 phút
- Pull request đã merge (30 ngày)
- 23
Chuẩn bị môi trường
- Không có Dockerfile hay tệp Docker Compose
- Có mẫu pull request
- Đọc hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của databricks/databricks-sql-python
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
databricks/databricks-sql-python#1034 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Token federation: `_exchange_token` raises KeyError('access_token') on error responses, discarding the real failure reasonCó thể đã có người làm @TangoEnSkai đã nhận 81 ngày trước. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 76/100
databricks/databricks-sql-python#904 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 84/100
databricks/databricks-sql-python#865 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
engineer-bot
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 76/100
databricks/databricks-sql-python#860 · 3 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Cursor.close() leaks server-side handle for async commands that were never fetchedCó thể đã có người làm @nanookclaw đã nhận 176 ngày trước. Đang mởbug engineer-bot
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
databricks/databricks-sql-python#791 · 5 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
Tất cả issue của databricks/databricks-sql-python
Issue tương tự
-
premises-missing
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
WingedGuardian/GENesis-AGI#4432 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 83/100
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 78/100
huggingface/skills#301 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 68/100
intuitem/ciso-assistant-community#5275 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
comp/desktop P3 type/feature
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
NousResearch/hermes-agent#154285 ·
Maintainer thường phản hồi trong vòng 1 ngày