Skip to content

Commit

Permalink
Datastore: Add skippedResults in QueryResults (googleapis#4093)
Browse files Browse the repository at this point in the history
* Fix googleapis#3279 google-cloud-datastore Java library exposes too little of the information in query results

* fix typo in comment
  • Loading branch information
ajaaym authored and chingor13 committed Nov 27, 2018
1 parent 38ec041 commit 2501613
Show file tree
Hide file tree
Showing 4 changed files with 34 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -55,4 +55,19 @@ public interface QueryResults<V> extends Iterator<V> {
* }</pre>
*/
Cursor getCursorAfter();

/**
* Returns the number of results skipped, typically because of an offset.
*
* <p>A simple use case to count entities:
*
* <pre>{@code
* Query<Key> query = Query.newKeyQueryBuilder().setOffset(Integer.MAX_VALUE).build();
* QueryResults<Key> result = datasore.datastore.run(query);
* if (!result.hasNext()) {
* int numberOfEntities = result.getSkippedResults();
* }
* }</pre>
*/
int getSkippedResults();
}
Original file line number Diff line number Diff line change
Expand Up @@ -114,4 +114,9 @@ public Class<?> getResultClass() {
public Cursor getCursorAfter() {
return new Cursor(cursor);
}

@Override
public int getSkippedResults() {
return runQueryResponsePb.getBatch().getSkippedResults();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -633,6 +633,13 @@ public void testQueryPaginationWithLimit() throws DatastoreException {
EasyMock.verify(rpcFactoryMock, rpcMock);
}

@Test
public void testRunKeyQueryWithOffset() {
Query<Key> query = Query.newKeyQueryBuilder().setOffset(Integer.MAX_VALUE).build();
int numberOfEntities = datastore.run(query).getSkippedResults();
assertEquals(2, numberOfEntities);
}

private List<RunQueryResponse> buildResponsesForQueryPaginationWithLimit() {
Entity entity4 = Entity.newBuilder(KEY4).set("value", StringValue.of("value")).build();
Entity entity5 = Entity.newBuilder(KEY5).set("value", "value").build();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -851,4 +851,11 @@ public Integer run(DatastoreReaderWriter transaction) {
assertEquals(3, ((DatastoreException) expected.getCause()).getCode());
}
}

@Test
public void testSkippedResults() {
Query<Key> query = Query.newKeyQueryBuilder().setOffset(Integer.MAX_VALUE).build();
int numberOfEntities = DATASTORE.run(query).getSkippedResults();
assertEquals(2, numberOfEntities);
}
}

0 comments on commit 2501613

Please sign in to comment.