Expose Arrow `Struct` columns as JDBC `STRUCT` metadata in the Flight SQL JDBC driver.

未關閉 適合新手
#1,100 0 則留言 0 個 reaction 已指派 0 人 在 GitHub 檢視

還沒有人認領這個 Issue。

評估

難度
2/5
預估耗時
1-3 小時
新手友好度
76/100
Issue 類型
功能
描述清晰度
描述清楚
活躍度
冷清
技術堆疊
java
領域
database

研究方向

從 flight/flight-sql-jdbc-core/src/main/java/org/apache/arrow/driver/jdbc/utils/SqlTypes.java 開始,該檔案將 ArrowType.Struct 對應至 Types.JAVA_OBJECT,並檢查相關的 ArrowFlightJdbcStructVectorAccessor.java 實作。更新中繼資料對應,使 Struct 欄位回報 JDBC STRUCT,並驗證 ResultSetMetaData 對這些欄位回傳 STRUCT 和 "STRUCT"。

由索引模型根據 Issue 內容生成。

描述

Type: enhancement
Describe the enhancement requested

Please expose Arrow Struct columns as JDBC STRUCT metadata in the Flight SQL JDBC driver.

Today, Arrow Struct is mapped to java.sql.Types.JAVA_OBJECT, which makes
ResultSetMetaData report:

  • getColumnType(...) == Types.JAVA_OBJECT
  • getColumnTypeName(...) == "JAVA_OBJECT"

This hides the fact that the column is structurally a JDBC STRUCT, even though the driver
already has struct-specific accessor support.

Why this matters

JDBC clients often rely on ResultSetMetaData to understand result schemas before reading
rows. When STRUCT columns are reported as JAVA_OBJECT, clients cannot distinguish:

  • struct/object-like columns
  • generic opaque objects

This makes schema inspection, BI tooling, ORM adapters, and generic JDBC consumers harder.

Current upstream evidence

In
flight/flight-sql-jdbc-core/src/main/java/org/apache/arrow/driver/jdbc/utils/SqlTypes.java:

  • ArrowType.Struct maps to Types.JAVA_OBJECT

In flight/flight-sql-jdbc-core/src/main/java/org/apache/arrow/driver/jdbc/accessor/impl/comple x/ArrowFlightJdbcStructVectorAccessor.java:

  • getStruct() is already implemented
  • but getObjectClass() returns Map.class
  • getObject() returns a Map

So the data path knows about structs, but metadata does not expose them as JDBC STRUCT.

Expected behavior

For Arrow Struct columns:

  • ResultSetMetaData.getColumnType(...) should return java.sql.Types.STRUCT
  • ResultSetMetaData.getColumnTypeName(...) should return STRUCT

Optionally, getObject() / object-class behavior could also be aligned with JDBC Struct, but
the most important gap is metadata.

Actual behavior

Arrow Struct columns are exposed as:

  • Types.JAVA_OBJECT
  • "JAVA_OBJECT"

Version

Observed with:

  • Arrow Flight SQL JDBC driver 18.2.0

Confirmed in current upstream code and latest published artifact line:

  • 19.0.0
主要語言
Java
星號
95
分支
154
平均合併
2 天 16 小時
30 天內合併 PR
9

貢獻指南

開啟貢獻指南

從這裡開始

  1. 先讀完整個 Issue,再讀專案的貢獻指南。
  2. 在 Issue 下留言說明你要接手 —— 這能避免兩個人做同樣的事。
  3. Fork 儲存庫,在一個分支上完成修改。
  4. 送出 Pull Request,並在描述裡引用這個 Issue 編號。

apache/arrow-java 的其他 Issue

查看 apache/arrow-java 的全部 Issue

相似的 Issue

更多 Java Issue

把新 issue 寄到你的電子郵件信箱

精選適合新手參與的 GitHub issue 摘要。