Skip to content

[coverage] Conformance findings: GEOSPATIAL-009 #992

Closed

Description

@peco-engineer-bot

Summary

Surfaced by the multi-language coverage fan-out while conformance-testing these SPEC-IDs against databricks/databricks-sql-python. 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-python) is fixed, then flips green as a tripwire.

Findings

  • GEOSPATIAL-009 [thrift]: Thrift backend cannot fetch any result with duplicate column aliases: fetchall_arrow()'s pyarrow.concat_tables(promote_options="default") in utils.py raises ArrowInvalid "Can't unify schema with duplicate field names" (fetchall() too, via the same path), so a legal SELECT 'x' AS g, geom AS g is unreadable — the kernel backend handles it fine, and the connector's own row conversion already renames to ordinals for exactly this reason
    • failing test: test_duplicate_column_alias_reports_each_column_own_logical_type (see the coverage PR diff under tests/)

Reproduce & Expected

GEOSPATIAL-009 — A result set may contain TWO columns with the SAME name — SQL permits duplicate output aliases — and the driver must report each column's own type by POSITION.

Reproduce:

SELECT 'plain' AS g, geom_0 AS g
FROM {catalog}.{schema}.geo_types_{unique} WHERE id = 1

Expected (per the shared spec):

  • result has exactly 1 row(s)
  • result has 2 column(s)
  • col 0 is named g
  • col 1 is named g
  • col 0, row 0 == 'plain' (type Utf8)
  • full assertion contract:
result:
- row_count: 1
- column_count: 2
- column:
    index: 0
    name: g
- column:
    index: 1
    name: g
- column:
    index: 0
    row: 0
    type: Utf8
    equals: plain
- geo_logical_type:
    index: 1
    type_name: GEOMETRY
    type_text: GEOMETRY(0)
- geo_logical_type:
    index: 0
    geospatial: false

Context

Activity

  1. cathleeny commented on Oct 20, 2026

    @cathleeny
    Collaborator

    Closing since its a duplicate of #989 (#989 is broader and more detailed, so keeping that one instead)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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