[coverage] Conformance findings: GEOSPATIAL-009

Aberta
#504 0 comentários 0 reações 0 responsáveis Ver no GitHub

Mantenedores costumam responder em até 1 dia

Ninguém assumiu esta issue ainda.

Avaliação

Dificuldade
4/5
Tempo estimado
3-5 dias
Facilidade para iniciantes
55/100
Tipo de issue
Bug
Clareza
Claramente especificada
Status de atividade
Ativa
Stack de tecnologia
databases, go
Domínio
database

Direção de pesquisa

Start with internal/backend/kernel/rows.go, where newKernelRows imports the Arrow C schema, and inspect the coverage PR diff under tests/ for TestDuplicateColumnAliasReportsEachColumnOwnLogicalType. Reproduce with the supplied SQL using two output columns aliased as g; done means the driver returns both columns without panicking and reports each column's value and logical type by position.

Escrita pelo modelo de indexação a partir do texto da issue.

Descrição

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

  • GEOSPATIAL-009 [sea]: SEA/kernel backend PANICS ("arrow: duplicate field with name") instead of reporting each column's own logical type by position when two result columns share one SQL output alias: newKernelRows imports the Arrow C schema via a name-keyed arrow.StructOf (ImportCArrowSchema in internal/backend/kernel/rows.go), crashing the caller's process
    • failing test: TestDuplicateColumnAliasReportsEachColumnOwnLogicalType (see the coverage PR diff under tests/)
  • GEOSPATIAL-009: SEA/kernel backend PANICS ("arrow: duplicate field with name") instead of reporting each column's own logical type by position when a result has two columns sharing one SQL output alias: newKernelRows imports the Arrow C schema via a name-keyed arrow.StructOf (ImportCArrowSchema in internal/backend/kernel/rows.go), which rejects a legal duplicate alias and crashes the caller's process

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

Linguagem predominante
Go
Estrelas
53
Forks
70
Merge médio
2d 12h
PRs com merge (30d)
16

Preparar o ambiente

Primeiros passos

  1. Leia a issue inteira e depois o guia de contribuição do projeto.
  2. Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
  3. Faça um fork do repositório e trabalhe em uma branch.
  4. Abra um pull request que referencie o número da issue.

Mais de databricks/databricks-sql-go

Todas as issues de databricks/databricks-sql-go

Issues semelhantes

Mais issues de Go

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.