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

オープン 初心者向け
#1,100 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る

まだ誰も着手していません。

評価

難易度
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時間
マージ済み PR(30日)
9

コントリビューションガイド

コントリビューションガイドを開く

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

apache/arrow-java のほかの issue

apache/arrow-java の issue をすべて見る

似ている issue

Java の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。