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
- STATEMENT-026 [thrift, sea]: Connection.setCatalog issues
SET CATALOG unconditionally instead of only on change — it never compares against the session's tracked current catalog, so scoping to the catalog the session is already on still costs an extra server round-trip (ES-2115589)
- failing test:
testCatalogScopingSkippedWhenAlreadyCurrent (see the coverage PR diff under tests/)
- STATEMENT-026: Connection.setCatalog issues
SET CATALOG unconditionally instead of only on a genuine change: it never compares the requested catalog against the session's tracked current catalog, so every call costs an extra server round-trip even when the session is already on that catalog (ES-2115589; ODBC issues the change only on change)
Reproduce & Expected
STATEMENT-026 — Validates that catalog scoping is issue-ON-CHANGE, not per query: with scoping opted in and the session ALREADY on the requested catalog, the driver issues NO catalog-change statement, and the bare 2…
Reproduce:
SELECT COUNT(*) FROM `<test schema>`.`<test table>`
SELECT COUNT(*) FROM `<test schema>`.`<test table>`
Expected (per the shared spec):
- completes without an exception
- result has exactly 1 row(s)
- completes without an exception
- result has exactly 1 row(s)
- [thrift] exactly 0
ExecuteStatement call(s)
- [sea] exactly 0
ExecuteStatement call(s)
Context
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
SET CATALOGunconditionally instead of only on change — it never compares against the session's tracked current catalog, so scoping to the catalog the session is already on still costs an extra server round-trip (ES-2115589)testCatalogScopingSkippedWhenAlreadyCurrent(see the coverage PR diff undertests/)SET CATALOGunconditionally instead of only on a genuine change: it never compares the requested catalog against the session's tracked current catalog, so every call costs an extra server round-trip even when the session is already on that catalog (ES-2115589; ODBC issues the change only on change)Reproduce & Expected
STATEMENT-026 — Validates that catalog scoping is issue-ON-CHANGE, not per query: with scoping opted in and the session ALREADY on the requested catalog, the driver issues NO catalog-change statement, and the bare 2…
Reproduce:
Expected (per the shared spec):
ExecuteStatementcall(s)ExecuteStatementcall(s)Context