You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@ignite.apache.org by "Taras Ledkov (Jira)" <ji...@apache.org> on 2022/06/01 17:08:00 UTC
[jira] [Resolved] (IGNITE-17068) Sql: Fix AsyncResultSet.fetchNextPage semantics
[ https://issues.apache.org/jira/browse/IGNITE-17068?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Taras Ledkov resolved IGNITE-17068.
-----------------------------------
Resolution: Fixed
Merged to [main|https://github.com/apache/ignite-3/commit/da2738b575c0278bbbb64b85fa89198931faa17f]
> Sql: Fix AsyncResultSet.fetchNextPage semantics
> -----------------------------------------------
>
> Key: IGNITE-17068
> URL: https://issues.apache.org/jira/browse/IGNITE-17068
> Project: Ignite
> Issue Type: Bug
> Components: sql
> Reporter: Pavel Tupitsyn
> Assignee: Taras Ledkov
> Priority: Major
> Labels: ignite-3
> Time Spent: 10m
> Remaining Estimate: 0h
>
> AsyncResultSet.fetchNextPage has different semantics on client (returns same instance) and server (return new instance).
> Since the behavior on the client seems to be more correct, let's bring the server implementation in line: call to {{fetchNextPage}} should return the same instance of {{AsyncResultSet}} but with updated state.
> Also let's add to the javadoc the proper way to drain the cursor to a collection:
> {code:java}
> CompletionStage<Void> fetchAllRowsInto(AsyncResultSet resultSet, List<SqlRow> target) {
> for (var row : resultSet.currentPage()) {
> target.add(row);
> }
> if (!resultSet.hasMorePages()) {
> return CompletableFuture.completedFuture(null);
> }
> return resultSet.fetchNextPage().thenCompose(res -> fetchAllRowsInto(res, target));
> } {code}
--
This message was sent by Atlassian Jira
(v8.20.7#820007)