[coverage] Conformance findings: RESULTFETCH-020
Maintainers usually reply within 1 day
Nobody has claimed this yet.
Assessment
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Newbie friendliness
- 49/100
Research direction
Start with the failing TestDuplicateColumnNamesSurviveResultFetch in the coverage PR and trace the SEA/kernel path through kernel.newKernelRows and cdata.ImportCArrowSchema, where duplicate fields trigger the panic. Reproduce with the single-row query, then check row-oriented and Arrow fetches plus multi-chunk and JOIN cases. Done means duplicate column names and both positional values survive every fetch surface without an exception.
Written by the indexing model from the issue text.
Description
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
- RESULTFETCH-020 [sea]: SEA/kernel backend panics with
arrow: duplicate field with name "a"(arrow.StructOf via cdata.ImportCArrowSchema in kernel.newKernelRows) for any result with two identically named columns, including a single-row single-chunkSELECT 1 AS a, 2 AS a; the server returns both columns, so the failure is client-side Arrow schema assembly- failing test:
TestDuplicateColumnNamesSurviveResultFetch(see the coverage PR diff undertests/)
- failing test:
- RESULTFETCH-020: SEA/kernel backend panics with
arrow: duplicate field with name "a"(arrow.StructOf via cdata.ImportCArrowSchema in kernel.newKernelRows) for any result containing two identically named columns, including a single-row single-chunkSELECT 1 AS a, 2 AS a; the server returns both columns correctly, so the failure is client-side Arrow schema assembly
Reproduce & Expected
RESULTFETCH-020 — A query whose result set contains two columns with the SAME name is valid SQL (e.g.
Reproduce:
- Execute a one-row query with two identically named columns and read the
result fully, through every fetch surface the driver exposes (row-oriented
fetch-all / fetch-one, and the native Arrow/columnar accessor if present). - Execute a duplicate-named query whose result is large enough to arrive in
more than one chunk/batch, and read every row. Exercises concatenation of
multiple equal-schema chunks. Chunk/batch COUNT is server- and driver-
dependent and is deliberately NOT asserted -- only that all rows and both
columns survive. ORDER BY id makes the first data row deterministic so the
two columns can be told apart positionally (0 vs 1000000). - Execute a JOIN whose two sides share a column name, so the duplication comes
from SELECT * rather than from explicit aliasing.
Expected (per the shared spec):
- completes without an exception
- result has exactly 1 row(s)
- result has 2 column(s)
- col 0 is named
a - col 1 is named
a - col 0, row 0 == 1 (type Int32)
- col 1, row 0 == 2 (type Int32)
- completes without an exception
- result has exactly 200000 row(s)
- result has 2 column(s)
- col 0 is named
a - col 1 is named
a - col 0, row 0 == 0 (type Int64)
- col 1, row 0 == 1000000 (type Int64)
- completes without an exception
- result has exactly 1 row(s)
- result has 2 column(s)
- col 0 is named
id - col 1 is named
id - col 0, row 0 == 1 (type Int32)
- col 1, row 0 == 1 (type Int32)
Context
- The behavior was first fixed in a DIFFERENT driver — reference PR: https://github.com/databricks/databricks-sql-python/pull/995 — which seeded the shared language-neutral spec. This issue tracks the same conformance gap in databricks/databricks-sql-go; 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/1884
- Dominant language
- Go
- Stars
- 54
- Forks
- 71
- Avg merge
- 16h 3m
- Merged PRs (30d)
- 21
Getting set up
- No Dockerfile or Docker Compose file
- No pull request template
- Read the contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from databricks/databricks-sql-go
-
Difficulty 2/5 1-3 hours Newbie friendliness 70/100
databricks/databricks-sql-go#494 ·
Maintainers usually reply within 1 day
-
Difficulty 4/5 3-5 days Newbie friendliness 54/100
databricks/databricks-sql-go#547 ·
Maintainers usually reply within 1 day
-
Difficulty 3/5 1-2 days Newbie friendliness 66/100
databricks/databricks-sql-go#546 ·
Maintainers usually reply within 1 day
-
Difficulty 4/5 1-2 days Newbie friendliness 52/100
databricks/databricks-sql-go#521 ·
Maintainers usually reply within 1 day
-
Difficulty 4/5 1-2 days Newbie friendliness 56/100
databricks/databricks-sql-go#520 ·
Maintainers usually reply within 1 day
All issues in databricks/databricks-sql-go
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 86/100
Maintainers usually reply within 1 day
-
kind/features
Difficulty 2/5 1-3 hours Newbie friendliness 73/100
TencentBlueKing/bk-nodemgr#3991 ·
Maintainers usually reply within 1 day
-
meta
Difficulty 2/5 1-3 hours Newbie friendliness 62/100
last9/last9-mcp-server#554 ·
Maintainers usually reply within 1 day
-
Difficulty 1/5 Under an hour Newbie friendliness 85/100
-
Plain-http federation signing external_url fails startup with "invalid federation request signature"Open
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
Maintainers usually reply within 1 day