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

   ### Describe the enhancement requested
   
   ### Summary
   The Flight SQL JDBC driver (flight-sql-jdbc-driver) currently exposes 
FlightInfo.app_metadata via 
ArrowFlightJdbcFlightStreamResultSet.getAppMetadata() (added in ~15.0), but 
per-batch app_metadata from FlightStream.getLatestMetadata() is received 
internally and silently discarded — it is never surfaced to JDBC callers.
   
   ### Motivation
   Servers use per-batch app_metadata on FlightData messages to communicate 
execution statistics (rows scanned, elapsed time, query state, etc.) — similar 
to what Trino exposes via QueryStats. This is particularly valuable for the 
final batch, which servers commonly use as a "trailing metadata" pattern to 
report post-execution stats.
   Currently there is no way to access this information through the JDBC layer 
without dropping down to the raw FlightClient, which defeats the purpose of the 
JDBC driver abstraction.
   
   ### Current behavior
   
   FlightInfo.app_metadata → accessible via 
rs.unwrap(ArrowFlightJdbcFlightStreamResultSet.class).getAppMetadata() ✅
   Per-batch FlightData.app_metadata → received by 
FlightStream.getLatestMetadata() internally, but never stored or exposed ❌
   
   **Also worth noting**: getAppMetadata() returns a snapshot from query 
submission time only. For long-running queries using PollFlightInfo, updated 
app_metadata from subsequent poll cycles is never surfaced. This limits its 
usefulness for engines that progressively update stats during execution.
   
   ### Requested change
   Add a method to ArrowFlightJdbcFlightStreamResultSet (accessible via 
unwrap()) such as:
   javapublic ArrowBuf getLatestBatchMetadata() {
       if (currentEndpointData == null || currentEndpointData.getStream() == 
null) {
           return null;
       }
       return currentEndpointData.getStream().getLatestMetadata();
   }
   This would follow the same unwrap() pattern already established for 
getAppMetadata() and give callers access to per-batch metadata, including 
trailing stats on the final batch.
   
   ### Component(s)
   
   FlightRPC, Java


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