From 1e011d93d114b9f0c49e4e27ca4c22ef7783c850 Mon Sep 17 00:00:00 2001 From: Jeff Gregory Date: Sun, 23 Feb 2014 23:38:04 -0800 Subject: [PATCH 1/3] Test query search ordre Test that the order comes out as expected when doing a query --- tests/test_dynamodb2/test_dynamodb_table_with_range_key.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/tests/test_dynamodb2/test_dynamodb_table_with_range_key.py b/tests/test_dynamodb2/test_dynamodb_table_with_range_key.py index b879600f8..0b8ce61c0 100644 --- a/tests/test_dynamodb2/test_dynamodb_table_with_range_key.py +++ b/tests/test_dynamodb2/test_dynamodb_table_with_range_key.py @@ -256,6 +256,11 @@ def test_query(): table.count().should.equal(4) + results = table.query(forum_name__eq='the-key', subject__gt='1',consistent=True) + expected = ["123", "456", "789"] + for index, item in enumerate(results): + item["subject"].should.equal(expected[index]) + results = table.query(forum_name__eq='the-key', subject__gt='1',consistent=True) sum(1 for _ in results).should.equal(3) From 598c22528f6fb28fc5c4bb6de8f8c6b4af3e03f8 Mon Sep 17 00:00:00 2001 From: Jeff Gregory Date: Mon, 3 Mar 2014 13:41:07 -0800 Subject: [PATCH 2/3] added support for ScanIndexForward and actual range ordering on range items and not just the dictionaries --- moto/dynamodb2/responses.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/moto/dynamodb2/responses.py b/moto/dynamodb2/responses.py index 9c960ef48..8f90e8b04 100644 --- a/moto/dynamodb2/responses.py +++ b/moto/dynamodb2/responses.py @@ -243,6 +243,10 @@ class DynamoHandler(BaseResponse): if limit: items = items[:limit] + reversed = self.body.get("ScanIndexForward") + if reversed != False: + items.reverse() + result = { "Count": len(items), "Items": [item.attrs for item in items], From 9f14d13163508cb181b919b7ff2535bcd2578267 Mon Sep 17 00:00:00 2001 From: Jeff Gregory Date: Mon, 3 Mar 2014 13:49:08 -0800 Subject: [PATCH 3/3] tests for reverse query order --- tests/test_dynamodb2/test_dynamodb_table_with_range_key.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/tests/test_dynamodb2/test_dynamodb_table_with_range_key.py b/tests/test_dynamodb2/test_dynamodb_table_with_range_key.py index 0b8ce61c0..47d283396 100644 --- a/tests/test_dynamodb2/test_dynamodb_table_with_range_key.py +++ b/tests/test_dynamodb2/test_dynamodb_table_with_range_key.py @@ -261,6 +261,10 @@ def test_query(): for index, item in enumerate(results): item["subject"].should.equal(expected[index]) + results = table.query(forum_name__eq="the-key", subject__gt='1', reverse=True) + for index, item in enumerate(results): + item["subject"].should.equal(expected[len(expected)-1-index]) + results = table.query(forum_name__eq='the-key', subject__gt='1',consistent=True) sum(1 for _ in results).should.equal(3)