Put projection after filter so that filters can act on fields that ar… (#1470)
* Put projection after filter so that filters can act on fields that are not projected * fixing whitespace
This commit is contained in:
parent
17f3758591
commit
bf136584a9
@ -536,14 +536,6 @@ class Table(BaseModel):
|
|||||||
else:
|
else:
|
||||||
results.sort(key=lambda item: item.range_key)
|
results.sort(key=lambda item: item.range_key)
|
||||||
|
|
||||||
if projection_expression:
|
|
||||||
expressions = [x.strip() for x in projection_expression.split(',')]
|
|
||||||
results = copy.deepcopy(results)
|
|
||||||
for result in results:
|
|
||||||
for attr in list(result.attrs):
|
|
||||||
if attr not in expressions:
|
|
||||||
result.attrs.pop(attr)
|
|
||||||
|
|
||||||
if scan_index_forward is False:
|
if scan_index_forward is False:
|
||||||
results.reverse()
|
results.reverse()
|
||||||
|
|
||||||
@ -552,6 +544,14 @@ class Table(BaseModel):
|
|||||||
if filter_expression is not None:
|
if filter_expression is not None:
|
||||||
results = [item for item in results if filter_expression.expr(item)]
|
results = [item for item in results if filter_expression.expr(item)]
|
||||||
|
|
||||||
|
if projection_expression:
|
||||||
|
expressions = [x.strip() for x in projection_expression.split(',')]
|
||||||
|
results = copy.deepcopy(results)
|
||||||
|
for result in results:
|
||||||
|
for attr in list(result.attrs):
|
||||||
|
if attr not in expressions:
|
||||||
|
result.attrs.pop(attr)
|
||||||
|
|
||||||
results, last_evaluated_key = self._trim_results(results, limit,
|
results, last_evaluated_key = self._trim_results(results, limit,
|
||||||
exclusive_start_key)
|
exclusive_start_key)
|
||||||
return results, scanned_count, last_evaluated_key
|
return results, scanned_count, last_evaluated_key
|
||||||
|
Loading…
Reference in New Issue
Block a user