Skip to content

Commit 8f1ebe9

Browse files
committed
Spanner: partial key range and bug fix with single key
1 parent cc2c07c commit 8f1ebe9

3 files changed

Lines changed: 852 additions & 60 deletions

File tree

spanner/google/cloud/spanner_v1/keyset.py

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -38,13 +38,10 @@ class KeyRange(object):
3838
"""
3939
def __init__(self, start_open=None, start_closed=None,
4040
end_open=None, end_closed=None):
41-
if not any([start_open, start_closed, end_open, end_closed]):
42-
raise ValueError("Must specify at least a start or end row.")
43-
44-
if start_open and start_closed:
41+
if start_open is not None and start_closed is not None:
4542
raise ValueError("Specify one of 'start_open' / 'start_closed'.")
4643

47-
if end_open and end_closed:
44+
if end_open is not None and end_closed is not None:
4845
raise ValueError("Specify one of 'end_open' / 'end_closed'.")
4946

5047
self.start_open = start_open
@@ -60,17 +57,19 @@ def to_pb(self):
6057
"""
6158
kwargs = {}
6259

63-
if self.start_open:
60+
if self.start_open is not None:
6461
kwargs['start_open'] = _make_list_value_pb(self.start_open)
65-
66-
if self.start_closed:
62+
elif self.start_closed is not None:
6763
kwargs['start_closed'] = _make_list_value_pb(self.start_closed)
64+
else:
65+
kwargs['start_closed'] = _make_list_value_pb([])
6866

69-
if self.end_open:
67+
if self.end_open is not None:
7068
kwargs['end_open'] = _make_list_value_pb(self.end_open)
71-
72-
if self.end_closed:
69+
elif self.end_closed is not None:
7370
kwargs['end_closed'] = _make_list_value_pb(self.end_closed)
71+
else:
72+
kwargs['end_closed'] = _make_list_value_pb([])
7473

7574
return KeyRangePB(**kwargs)
7675

0 commit comments

Comments
 (0)