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