Repository navigation
[coverage] Conformance findings: SESSION-017 #1668
Copy link
Copy link
Closed as not planned
Labels
Description
Summary
Surfaced by the multi-language coverage fan-out while conformance-testing these SPEC-IDs against databricks/databricks-jdbc. 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-jdbc) is fixed, then flips green as a tripwire.
Findings
- SESSION-017 [sea]: SEA backend (usethriftclient=0) connect+query eagerly loads the Apache Thrift protocol stack (org.apache.thrift.TSerializable via the generated TFetchResultsResp), leaking the
thrifttop-level namespace on a path that never speaks Thrift on the wire- failing test:
testNonThriftBackendDoesNotLoadThriftStack(see the coverage PR diff undertests/)
- failing test:
- SESSION-017: SEA backend (usethriftclient=0) connect+query eagerly loads the Apache Thrift protocol stack (org.apache.thrift.TSerializable via the generated TFetchResultsResp), leaking the
thrifttop-level namespace on a path that never speaks Thrift on the wire — breaks builds that vendor their own Apache Thrift
Reproduce & Expected
SESSION-017 — Validates that selecting the SEA/REST backend never loads the driver's Apache Thrift protocol stack, while the Thrift backend still does.
Reproduce:
SELECT 1 AS test_valueExpected (per the shared spec):
- completes without an exception
- result has exactly 1 row(s)
- full assertion contract:
result:
- no_exception: true
description: Every probe completes without error on every backend the driver speaks
- label: connect_and_query
row_count: 1
description: 'The query still returns its single row -- deferring the Thrift references
must
not break execution on either backend.
'
- label: backend_import
thrift_stack_loaded: false
description: 'Loading the public entry point and the non-Thrift backend components
loads no
Thrift protocol module. Protocol-agnostic: these components are the same
artifacts regardless of which backend the run selects.
'
- label: thrift_backend_import
thrift_stack_loaded: true
description: 'The Thrift backend still loads the Thrift protocol stack -- guards
against a
"fix" that hides Thrift so far that the Thrift path itself breaks.
'
- label: legacy_symbols
symbols_resolve: true
description: 'The historically public protocol-typed symbols still resolve. Resolution
may
load the Thrift stack; that is permitted and deliberately NOT asserted.
'
protocol:
sea:
- label: connect_and_query
thrift_stack_loaded: false
description: 'A SEA connect + query loads zero Thrift protocol modules -- the
behavior
that unblocks callers vendoring their own Apache Thrift.
'
thrift:
- label: connect_and_query
thrift_stack_loaded: true
description: 'A Thrift connect + query legitimately loads the Thrift stack; asserting
the
non-loaded invariant here would be wrong.
'Context
- The behavior was first fixed in a DIFFERENT driver — reference PR: Lazy-load Apache Thrift so the SEA/kernel paths never import it databricks-sql-python#907 — which seeded the shared language-neutral spec. This issue tracks the same conformance gap in databricks/databricks-jdbc; 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/1432
Reactions are currently unavailable
Activity
github-actions commentedon Sep 26, 2026
This issue has been marked as Stale because it has been open for 30 days with no activity. If you would like the issue to remain open, please remove the stale label or comment on the issue.
github-actions commentedon Oct 3, 2026
This issue was closed because it has been inactive for 7 days since being marked as stale.