Fixed Bug
This commit is contained in:
parent
6e199d35b3
commit
5858289596
@ -308,7 +308,7 @@ class DynamoHandler(BaseResponse):
|
||||
|
||||
filter_kwargs = {}
|
||||
if key_condition_expression:
|
||||
value_alias_map = self.body['ExpressionAttributeValues']
|
||||
value_alias_map = self.body.get('ExpressionAttributeValues', {})
|
||||
|
||||
table = self.dynamodb_backend.get_table(name)
|
||||
|
||||
@ -333,7 +333,7 @@ class DynamoHandler(BaseResponse):
|
||||
index = table.schema
|
||||
|
||||
reverse_attribute_lookup = dict((v, k) for k, v in
|
||||
six.iteritems(self.body['ExpressionAttributeNames']))
|
||||
six.iteritems(self.body.get('ExpressionAttributeNames', {})))
|
||||
|
||||
if " AND " in key_condition_expression:
|
||||
expressions = key_condition_expression.split(" AND ", 1)
|
||||
@ -372,7 +372,8 @@ class DynamoHandler(BaseResponse):
|
||||
range_values = []
|
||||
|
||||
hash_key_value_alias = hash_key_expression.split("=")[1].strip()
|
||||
hash_key = value_alias_map[hash_key_value_alias]
|
||||
# Temporary fix until we get proper KeyConditionExpression function
|
||||
hash_key = value_alias_map.get(hash_key_value_alias, {'S': hash_key_value_alias})
|
||||
else:
|
||||
# 'KeyConditions': {u'forum_name': {u'ComparisonOperator': u'EQ', u'AttributeValueList': [{u'S': u'the-key'}]}}
|
||||
key_conditions = self.body.get('KeyConditions')
|
||||
|
@ -926,3 +926,31 @@ def test_set_ttl():
|
||||
|
||||
resp = client.describe_time_to_live(TableName='test1')
|
||||
resp['TimeToLiveDescription']['TimeToLiveStatus'].should.equal('DISABLED')
|
||||
|
||||
|
||||
# https://github.com/spulec/moto/issues/1043
|
||||
@mock_dynamodb2
|
||||
def test_query_missing_expr_names():
|
||||
client = boto3.client('dynamodb', region_name='us-east-1')
|
||||
|
||||
# Create the DynamoDB table.
|
||||
client.create_table(
|
||||
TableName='test1',
|
||||
AttributeDefinitions=[{'AttributeName': 'client', 'AttributeType': 'S'}, {'AttributeName': 'app', 'AttributeType': 'S'}],
|
||||
KeySchema=[{'AttributeName': 'client', 'KeyType': 'HASH'}, {'AttributeName': 'app', 'KeyType': 'RANGE'}],
|
||||
ProvisionedThroughput={'ReadCapacityUnits': 123, 'WriteCapacityUnits': 123}
|
||||
)
|
||||
client.put_item(TableName='test1', Item={'client': {'S': 'test1'}, 'app': {'S': 'test1'}})
|
||||
client.put_item(TableName='test1', Item={'client': {'S': 'test2'}, 'app': {'S': 'test2'}})
|
||||
|
||||
resp = client.query(TableName='test1', KeyConditionExpression='client=:client',
|
||||
ExpressionAttributeValues={':client': {'S': 'test1'}})
|
||||
|
||||
resp['Count'].should.equal(1)
|
||||
resp['Items'][0]['client']['S'].should.equal('test1')
|
||||
|
||||
resp = client.query(TableName='test1', KeyConditionExpression=':name=test2',
|
||||
ExpressionAttributeNames={':name': 'client'})
|
||||
|
||||
resp['Count'].should.equal(1)
|
||||
resp['Items'][0]['client']['S'].should.equal('test2')
|
||||
|
Loading…
Reference in New Issue
Block a user