shivarajugowda opened a new issue, #1100:
URL: https://github.com/apache/arrow-java/issues/1100

   ### 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`
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to