[ https://issues.apache.org/jira/browse/ARROW-16529?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
ASF GitHub Bot updated ARROW-16529: ----------------------------------- Labels: pull-request-available (was: ) > [Java] Remove dependency on optional JDBC ResultSet method > ---------------------------------------------------------- > > Key: ARROW-16529 > URL: https://issues.apache.org/jira/browse/ARROW-16529 > Project: Apache Arrow > Issue Type: Improvement > Components: Java > Affects Versions: 8.0.0 > Reporter: Todd Farmer > Assignee: Todd Farmer > Priority: Major > Labels: pull-request-available > Time Spent: 10m > Remaining Estimate: 0h > > [~jswenson] points out that the fix for ARROW-16035 uses the > ResultSet.isLast() method, which is listed as optional for vendor support in > the (likely common) condition that the result set is forward-scrollable only. > This new code replaced dependency on ResultSet.isAfterLast(), which is > similarly annotated as optional in the same context (and has the additional > challenge of being non-deterministic in the case of empty result sets). To > eliminate these dependencies, we propose the following: > # The ArrowVectorIterator returned from processing ResultSets will _always_ > have at least one element, meaning hasNext() will return true initially, even > in the case of empty ResultSets. > # Calling ArrowVectorIterator.next() will establish whether there is actual > data to be supplied, and will return an "empty" VectorSchemaRoot when an > empty ResultSet was supplied originally. > # Subsequent calls to ArrowVectorIterator.hasNext() will return false in the > case when an empty ResultSet was supplied. > This is a behavior change, in that the current ARROW-16035-patched code > returns false today when an empty ResultSet was supplied, _and_ the JDBC > driver optionally implements ResultSet.isLast(). -- This message was sent by Atlassian Jira (v8.20.7#820007)