Skip to content

Commit 5edf737

Browse files
author
Sean Cribbs
committed
Zero should not be falsey for end of a range query. Fixes basho#378
1 parent 76b22e1 commit 5edf737

File tree

3 files changed

+21
-7
lines changed

3 files changed

+21
-7
lines changed

riak/tests/test_2i.py

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -464,7 +464,21 @@ def test_index_regex(self):
464464

465465
self.assertEqual([('val2', o2.key)], results)
466466

467-
def _create_index_objects(self):
467+
@unittest.skipIf(SKIP_INDEXES, 'SKIP_INDEX is defined')
468+
def test_index_falsey_endkey_gh378(self):
469+
if not self.is_2i_supported():
470+
raise unittest.SkipTest("2I is not supported")
471+
472+
bucket, o1, o2, o3, o4 = self._create_index_objects(int_sign=-1)
473+
474+
results = []
475+
for item in bucket.stream_index('field2_int', -10000, 0):
476+
results.extend(item)
477+
478+
self.assertEqual(set([o4.key, o3.key, o2.key, o1.key]),
479+
set(results))
480+
481+
def _create_index_objects(self, int_sign=1):
468482
"""
469483
Creates a number of index objects to be used in 2i test
470484
"""
@@ -473,22 +487,22 @@ def _create_index_objects(self):
473487
o1 = bucket.\
474488
new(self.randname(), 'data1').\
475489
add_index('field1_bin', 'val1').\
476-
add_index('field2_int', 1001).\
490+
add_index('field2_int', int_sign*1001).\
477491
store()
478492
o2 = bucket.\
479493
new(self.randname(), 'data1').\
480494
add_index('field1_bin', 'val2').\
481-
add_index('field2_int', 1002).\
495+
add_index('field2_int', int_sign*1002).\
482496
store()
483497
o3 = bucket.\
484498
new(self.randname(), 'data1').\
485499
add_index('field1_bin', 'val3').\
486-
add_index('field2_int', 1003).\
500+
add_index('field2_int', int_sign*1003).\
487501
store()
488502
o4 = bucket.\
489503
new(self.randname(), 'data1').\
490504
add_index('field1_bin', 'val4').\
491-
add_index('field2_int', 1004).\
505+
add_index('field2_int', int_sign*1004).\
492506
store()
493507

494508
return bucket, o1, o2, o3, o4

riak/transports/http/resources.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@ def index_path(self, bucket, index, start, finish=None, bucket_type=None,
9797
**options):
9898
if not self.riak_kv_wm_buckets:
9999
raise RiakError("Indexes are unsupported by this Riak node")
100-
if finish:
100+
if finish is not None:
101101
finish = quote_plus(str(finish))
102102
if self.riak_kv_wm_bucket_type and bucket_type:
103103
return mkpath("/types", quote_plus(bucket_type),

riak/transports/pbc/codec.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -438,7 +438,7 @@ def _encode_index_req(self, bucket, index, startkey, endkey=None,
438438
req = riak_pb.RpbIndexReq(bucket=str_to_bytes(bucket.name),
439439
index=str_to_bytes(index))
440440
self._add_bucket_type(req, bucket.bucket_type)
441-
if endkey:
441+
if endkey is not None:
442442
req.qtype = riak_pb.RpbIndexReq.range
443443
req.range_min = str_to_bytes(str(startkey))
444444
req.range_max = str_to_bytes(str(endkey))

0 commit comments

Comments
 (0)