[coverage] Conformance findings: GEOSPATIAL-009

Đang mở
#504 0 bình luận 0 reaction 0 người được giao Xem trên GitHub

Maintainer thường phản hồi trong vòng 1 ngày

Chưa có ai nhận issue này.

Đánh giá

Độ khó
4/5
Thời gian dự kiến
3-5 ngày
Mức phù hợp với người mới
55/100
Loại issue
Lỗi
Độ rõ ràng
Đặc tả rõ ràng
Mức độ hoạt động
Sôi nổi
Công nghệ
databases, go
Lĩnh vực
database

Hướng nghiên cứu

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.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

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

Ngôn ngữ chính
Go
Star
53
Fork
70
Merge trung bình
2 ngày 12 giờ
Pull request đã merge (30 ngày)
16

Chuẩn bị môi trường

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của databricks/databricks-sql-go

Tất cả issue của databricks/databricks-sql-go

Issue tương tự

Thêm issue về Go

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.