Skip to content

Commit e1913fa

Browse files
committed
Merge pull request #1060 from tseaver/1054-nullify_empty_query_cursor
#1054: Set query cursor to 'None' when returned as empty string.
2 parents 7c367fe + da3b821 commit e1913fa

File tree

2 files changed

+8
-7
lines changed

2 files changed

+8
-7
lines changed

gcloud/datastore/query.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -418,7 +418,10 @@ def next_page(self):
418418
# for discussion.
419419
entity_pbs, cursor_as_bytes, more_results_enum = query_results[:3]
420420

421-
self._start_cursor = base64.b64encode(cursor_as_bytes)
421+
if cursor_as_bytes == b'':
422+
self._start_cursor = None
423+
else:
424+
self._start_cursor = base64.b64encode(cursor_as_bytes)
422425
self._end_cursor = None
423426

424427
if more_results_enum == self._NOT_FINISHED:

gcloud/datastore/test_query.py

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -363,16 +363,15 @@ def test_ctor_explicit(self):
363363
self.assertEqual(iterator._offset, 29)
364364

365365
def test_next_page_no_cursors_no_more(self):
366-
from base64 import b64encode
367366
from gcloud.datastore.query import _pb_from_query
368367
connection = _Connection()
369368
client = self._makeClient(connection)
370369
query = _Query(client, self._KIND, self._DATASET, self._NAMESPACE)
371-
self._addQueryResults(connection)
370+
self._addQueryResults(connection, cursor=b'')
372371
iterator = self._makeOne(query, client)
373372
entities, more_results, cursor = iterator.next_page()
374373

375-
self.assertEqual(cursor, b64encode(self._END))
374+
self.assertEqual(cursor, None)
376375
self.assertFalse(more_results)
377376
self.assertFalse(iterator._more_results)
378377
self.assertEqual(len(entities), 1)
@@ -390,16 +389,15 @@ def test_next_page_no_cursors_no_more(self):
390389
self.assertEqual(connection._called_with, [EXPECTED])
391390

392391
def test_next_page_no_cursors_no_more_w_offset_and_limit(self):
393-
from base64 import b64encode
394392
from gcloud.datastore.query import _pb_from_query
395393
connection = _Connection()
396394
client = self._makeClient(connection)
397395
query = _Query(client, self._KIND, self._DATASET, self._NAMESPACE)
398-
self._addQueryResults(connection)
396+
self._addQueryResults(connection, cursor=b'')
399397
iterator = self._makeOne(query, client, 13, 29)
400398
entities, more_results, cursor = iterator.next_page()
401399

402-
self.assertEqual(cursor, b64encode(self._END))
400+
self.assertEqual(cursor, None)
403401
self.assertFalse(more_results)
404402
self.assertFalse(iterator._more_results)
405403
self.assertEqual(len(entities), 1)

0 commit comments

Comments
 (0)