From c2df7732e5d84930669bafad9f27e4a6c18fd43a Mon Sep 17 00:00:00 2001 From: Dmitry Zv Date: Wed, 16 Mar 2016 15:53:29 -0600 Subject: [PATCH] Added ScannedCount field to DynamoDB query response. --- moto/dynamodb2/models.py | 6 +++++- moto/dynamodb2/responses.py | 3 ++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/moto/dynamodb2/models.py b/moto/dynamodb2/models.py index 46526dc25..4dcb367e8 100644 --- a/moto/dynamodb2/models.py +++ b/moto/dynamodb2/models.py @@ -369,7 +369,11 @@ class Table(object): if scan_index_forward is False: results.reverse() - return self._trim_results(results, limit, exclusive_start_key) + scanned_count = len(self.all_items()) + + results, last_evaluated_key = self._trim_results(results, limit, + exclusive_start_key) + return results, scanned_count, last_evaluated_key def all_items(self): for hash_set in self.items.values(): diff --git a/moto/dynamodb2/responses.py b/moto/dynamodb2/responses.py index 30048b36d..488d287b7 100644 --- a/moto/dynamodb2/responses.py +++ b/moto/dynamodb2/responses.py @@ -319,7 +319,7 @@ class DynamoHandler(BaseResponse): exclusive_start_key = self.body.get('ExclusiveStartKey') limit = self.body.get("Limit") scan_index_forward = self.body.get("ScanIndexForward") - items, last_evaluated_key = dynamodb_backend2.query( + items, scanned_count, last_evaluated_key = dynamodb_backend2.query( name, hash_key, range_comparison, range_values, limit, exclusive_start_key, scan_index_forward, index_name=index_name) if items is None: @@ -329,6 +329,7 @@ class DynamoHandler(BaseResponse): result = { "Count": len(items), "ConsumedCapacityUnits": 1, + "ScannedCount": scanned_count } if self.body.get('Select', '').upper() != 'COUNT': result["Items"] = [item.attrs for item in items]