diff --git a/moto/dynamodb2/models.py b/moto/dynamodb2/models.py index 46526dc25..ba4bbaf6f 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(list(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]