Skip to content

[coverage] Conformance findings: COMPLEX-015,COMPLEX-016 #435

Description

@peco-engineer-bot

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions