From 5edf73797e35ac07c50a6f7969e3d19f2ca49351 Mon Sep 17 00:00:00 2001 From: Sean Cribbs Date: Thu, 18 Dec 2014 11:34:29 -0600 Subject: [PATCH] Zero should not be falsey for end of a range query. Fixes #378 --- riak/tests/test_2i.py | 24 +++++++++++++++++++----- riak/transports/http/resources.py | 2 +- riak/transports/pbc/codec.py | 2 +- 3 files changed, 21 insertions(+), 7 deletions(-) diff --git a/riak/tests/test_2i.py b/riak/tests/test_2i.py index 484f40c6..66dd8bee 100644 --- a/riak/tests/test_2i.py +++ b/riak/tests/test_2i.py @@ -464,7 +464,21 @@ def test_index_regex(self): self.assertEqual([('val2', o2.key)], results) - def _create_index_objects(self): + @unittest.skipIf(SKIP_INDEXES, 'SKIP_INDEX is defined') + def test_index_falsey_endkey_gh378(self): + if not self.is_2i_supported(): + raise unittest.SkipTest("2I is not supported") + + bucket, o1, o2, o3, o4 = self._create_index_objects(int_sign=-1) + + results = [] + for item in bucket.stream_index('field2_int', -10000, 0): + results.extend(item) + + self.assertEqual(set([o4.key, o3.key, o2.key, o1.key]), + set(results)) + + def _create_index_objects(self, int_sign=1): """ Creates a number of index objects to be used in 2i test """ @@ -473,22 +487,22 @@ def _create_index_objects(self): o1 = bucket.\ new(self.randname(), 'data1').\ add_index('field1_bin', 'val1').\ - add_index('field2_int', 1001).\ + add_index('field2_int', int_sign*1001).\ store() o2 = bucket.\ new(self.randname(), 'data1').\ add_index('field1_bin', 'val2').\ - add_index('field2_int', 1002).\ + add_index('field2_int', int_sign*1002).\ store() o3 = bucket.\ new(self.randname(), 'data1').\ add_index('field1_bin', 'val3').\ - add_index('field2_int', 1003).\ + add_index('field2_int', int_sign*1003).\ store() o4 = bucket.\ new(self.randname(), 'data1').\ add_index('field1_bin', 'val4').\ - add_index('field2_int', 1004).\ + add_index('field2_int', int_sign*1004).\ store() return bucket, o1, o2, o3, o4 diff --git a/riak/transports/http/resources.py b/riak/transports/http/resources.py index a5a4fbc8..7075952a 100644 --- a/riak/transports/http/resources.py +++ b/riak/transports/http/resources.py @@ -97,7 +97,7 @@ def index_path(self, bucket, index, start, finish=None, bucket_type=None, **options): if not self.riak_kv_wm_buckets: raise RiakError("Indexes are unsupported by this Riak node") - if finish: + if finish is not None: finish = quote_plus(str(finish)) if self.riak_kv_wm_bucket_type and bucket_type: return mkpath("/types", quote_plus(bucket_type), diff --git a/riak/transports/pbc/codec.py b/riak/transports/pbc/codec.py index 4abe97de..ca48ff59 100644 --- a/riak/transports/pbc/codec.py +++ b/riak/transports/pbc/codec.py @@ -438,7 +438,7 @@ def _encode_index_req(self, bucket, index, startkey, endkey=None, req = riak_pb.RpbIndexReq(bucket=str_to_bytes(bucket.name), index=str_to_bytes(index)) self._add_bucket_type(req, bucket.bucket_type) - if endkey: + if endkey is not None: req.qtype = riak_pb.RpbIndexReq.range req.range_min = str_to_bytes(str(startkey)) req.range_max = str_to_bytes(str(endkey))