@@ -34,6 +34,7 @@ class QueryResultsImpl<T> extends AbstractIterator<T> implements QueryResults<T>
3434 private Query <T > query ;
3535 private ResultType <?> actualResultType ;
3636 private com .google .datastore .v1beta3 .QueryResultBatch queryResultBatchPb ;
37+ private com .google .datastore .v1beta3 .Query mostRecentQueryPb ;
3738 private boolean lastBatch ;
3839 private Iterator <com .google .datastore .v1beta3 .EntityResult > entityResultPbIter ;
3940 private ByteString cursor ;
@@ -58,7 +59,7 @@ class QueryResultsImpl<T> extends AbstractIterator<T> implements QueryResults<T>
5859 if (queryResultBatchPb .getSkippedResults () > 0 ) {
5960 cursor = queryResultBatchPb .getSkippedCursor ();
6061 } else {
61- cursor = ByteString . EMPTY ;
62+ cursor = mostRecentQueryPb . getStartCursor () ;
6263 }
6364 }
6465
@@ -70,7 +71,13 @@ private void sendRequest() {
7071 }
7172 requestPb .setPartitionId (partitionIdPb );
7273 query .populatePb (requestPb );
73- queryResultBatchPb = datastore .runQuery (requestPb .build ()).getBatch ();
74+ com .google .datastore .v1beta3 .RunQueryResponse runQueryResponsePb =
75+ datastore .runQuery (requestPb .build ());
76+ queryResultBatchPb = runQueryResponsePb .getBatch ();
77+ mostRecentQueryPb = runQueryResponsePb .getQuery ();
78+ if (mostRecentQueryPb == null ) {
79+ mostRecentQueryPb = requestPb .getQuery ();
80+ }
7481 lastBatch = queryResultBatchPb .getMoreResults () != MoreResultsType .NOT_FINISHED ;
7582 entityResultPbIter = queryResultBatchPb .getEntityResultsList ().iterator ();
7683 actualResultType = ResultType .fromPb (queryResultBatchPb .getEntityResultType ());
0 commit comments