Summary
Surfaced by the multi-language coverage fan-out while conformance-testing these SPEC-IDs against databricks/databricks-sql-go. 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-go) is fixed, then flips green as a tripwire.
Findings
- COMPLEX-015 [thrift]: nested DOUBLE leaves in a complex-type JSON rendering use Go's default float formatter ("100", "1e+21", "0.0001") instead of the reference JVM-Double.toString spelling ("100.0", "1.0E21", "1.0E-4")
- failing test:
TestDoubleLeafTextSpellingInsideComplexType (see the coverage PR diff under tests/)
- COMPLEX-016 [thrift]: nested TIMESTAMP leaves append Go's time.Time zone suffix ("2025-01-24 07:07:41 +0000 UTC") instead of the bare wall clock ("2025-01-24 07:07:41"), diverging from the driver's own top-level TIMESTAMP text path
- failing test:
TestTimestampLeafTextSpellingInsideComplexType (see the coverage PR diff under tests/)
- COMPLEX-015: nested DOUBLE leaves in a STRUCT/ARRAY/MAP JSON rendering use Go's default float formatter ("100" for 100.0, "1e+21", "0.0001", lowercase/signed exponent) instead of the reference JVM-Double.toString spelling ("100.0", "1.0E21", "1.0E-4"), so container text differs from every other driver (databricks-odbc#197 alignment)
- COMPLEX-016: nested TIMESTAMP leaves in a STRUCT/ARRAY/MAP JSON rendering append Go's time.Time default zone suffix ("2025-01-24 07:07:41 +0000 UTC") instead of the bare session-timezone wall clock ("2025-01-24 07:07:41"), diverging from the driver's own top-level TIMESTAMP-to-text path (databricks-odbc#197 alignment)
Reproduce & Expected
COMPLEX-015 — Verify that when a driver renders a complex type (STRUCT / ARRAY / MAP) through its TEXT surface (a JSON string), a DOUBLE leaf inside that container is spelled with the reference layout: * a FORCED…
Expected (per the shared spec):
- result has exactly 1 row(s)
- full assertion contract:
result:
- row_count: 1
- complex_leaf_text_spelling:
column: s
leaves:
sci: 3.2033798725730455E8
small: '1.0E-4'
whole: '100.0'
big: 1.0E21
tiny: '1.0E-7'
one: '1.0'
neg: '-2.5'
- complex_leaf_text_spelling:
column: a
elements:
- 1.0E7
- '9999999.0'
- '0.001'
- complex_leaf_text_spelling:
column: m
leaves:
k: '1.0E-4'
- complex_leaf_text_round_trips:
columns:
- s
- a
- m
COMPLEX-016 — Verify that when a driver renders a complex type (STRUCT / ARRAY / MAP) through its TEXT surface, a TIMESTAMP leaf inside that container is spelled as the session-timezone WALL CLOCK -- the same spel…
Expected (per the shared spec):
- result has exactly 1 row(s)
- full assertion contract:
result:
- row_count: 1
- complex_leaf_text_spelling:
column: s
leaves:
whole: '2025-01-24 07:07:41'
frac: '2024-01-15 12:30:45.123456'
- complex_leaf_text_spelling:
column: a
elements:
- '2025-01-24 07:07:41'
- complex_leaf_text_spelling:
column: m
leaves:
k: '2025-01-24 07:07:41'
Context
Summary
Surfaced by the multi-language coverage fan-out while conformance-testing these SPEC-IDs against databricks/databricks-sql-go. 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-go) is fixed, then flips green as a tripwire.
Findings
TestDoubleLeafTextSpellingInsideComplexType(see the coverage PR diff undertests/)TestTimestampLeafTextSpellingInsideComplexType(see the coverage PR diff undertests/)Reproduce & Expected
COMPLEX-015 — Verify that when a driver renders a complex type (STRUCT / ARRAY / MAP) through its TEXT surface (a JSON string), a DOUBLE leaf inside that container is spelled with the reference layout: * a FORCED…
Expected (per the shared spec):
COMPLEX-016 — Verify that when a driver renders a complex type (STRUCT / ARRAY / MAP) through its TEXT surface, a TIMESTAMP leaf inside that container is spelled as the session-timezone WALL CLOCK -- the same spel…
Expected (per the shared spec):
Context