File tree Expand file tree Collapse file tree 4 files changed +34
-0
lines changed
google-cloud-datastore/src
main/java/com/google/cloud/datastore
test/java/com/google/cloud/datastore Expand file tree Collapse file tree 4 files changed +34
-0
lines changed Original file line number Diff line number Diff line change @@ -55,4 +55,19 @@ public interface QueryResults<V> extends Iterator<V> {
5555 * }</pre>
5656 */
5757 Cursor getCursorAfter ();
58+
59+ /**
60+ * Returns the number of results skipped, typically because of an offset.
61+ *
62+ * <p>A simple use case to count entities:
63+ *
64+ * <pre>{@code
65+ * Query<Key> query = Query.newKeyQueryBuilder().setOffset(Integer.MAX_VALUE).build();
66+ * QueryResults<Key> result = datasore.datastore.run(query);
67+ * if (!result.hasNext()) {
68+ * int numberOfEntities = result.getSkippedResults();
69+ * }
70+ * }</pre>
71+ */
72+ int getSkippedResults ();
5873}
Original file line number Diff line number Diff line change @@ -114,4 +114,9 @@ public Class<?> getResultClass() {
114114 public Cursor getCursorAfter () {
115115 return new Cursor (cursor );
116116 }
117+
118+ @ Override
119+ public int getSkippedResults () {
120+ return runQueryResponsePb .getBatch ().getSkippedResults ();
121+ }
117122}
Original file line number Diff line number Diff line change @@ -633,6 +633,13 @@ public void testQueryPaginationWithLimit() throws DatastoreException {
633633 EasyMock .verify (rpcFactoryMock , rpcMock );
634634 }
635635
636+ @ Test
637+ public void testRunKeyQueryWithOffset () {
638+ Query <Key > query = Query .newKeyQueryBuilder ().setOffset (Integer .MAX_VALUE ).build ();
639+ int numberOfEntities = datastore .run (query ).getSkippedResults ();
640+ assertEquals (2 , numberOfEntities );
641+ }
642+
636643 private List <RunQueryResponse > buildResponsesForQueryPaginationWithLimit () {
637644 Entity entity4 = Entity .newBuilder (KEY4 ).set ("value" , StringValue .of ("value" )).build ();
638645 Entity entity5 = Entity .newBuilder (KEY5 ).set ("value" , "value" ).build ();
Original file line number Diff line number Diff line change @@ -851,4 +851,11 @@ public Integer run(DatastoreReaderWriter transaction) {
851851 assertEquals (3 , ((DatastoreException ) expected .getCause ()).getCode ());
852852 }
853853 }
854+
855+ @ Test
856+ public void testSkippedResults () {
857+ Query <Key > query = Query .newKeyQueryBuilder ().setOffset (Integer .MAX_VALUE ).build ();
858+ int numberOfEntities = DATASTORE .run (query ).getSkippedResults ();
859+ assertEquals (2 , numberOfEntities );
860+ }
854861}
You can’t perform that action at this time.
0 commit comments