Hacktoberfest 2026: as issues que os mantenedores marcaram para outubro, abertas e boas para iniciantes. Ver issues do Hacktoberfest

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

Aberta Para iniciantes
#1,100 0 comentários 0 reações 0 responsáveis Ver no GitHub

Mantenedores costumam responder em até 2 dias

Ninguém assumiu esta issue ainda.

Avaliação

Dificuldade
2/5
Tempo estimado
1-3 horas
Facilidade para iniciantes
76/100
Tipo de issue
Funcionalidade
Clareza
Claramente especificada
Status de atividade
Pouca atividade
Stack de tecnologia
java
Domínio
database

Direção de pesquisa

Comece em flight/flight-sql-jdbc-core/src/main/java/org/apache/arrow/driver/jdbc/utils/SqlTypes.java, onde ArrowType.Struct é mapeado para Types.JAVA_OBJECT, e revise a implementação relacionada de ArrowFlightJdbcStructVectorAccessor.java. Atualize o mapeamento de metadados para que as colunas Struct informem JDBC STRUCT e verifique se ResultSetMetaData retorna STRUCT e "STRUCT" para essas colunas.

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

Descrição

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
Linguagem predominante
Java
Estrelas
97
Forks
158
Merge médio
7d 5h
PRs com merge (30d)
9

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 apache/arrow-java

Todas as issues de apache/arrow-java

Issues semelhantes

Mais issues de Java

Receba novas issues na sua caixa de entrada

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