Fixed Bug
This commit is contained in:
parent
6e199d35b3
commit
5858289596
@ -308,7 +308,7 @@ class DynamoHandler(BaseResponse):
|
|||||||
|
|
||||||
filter_kwargs = {}
|
filter_kwargs = {}
|
||||||
if key_condition_expression:
|
if key_condition_expression:
|
||||||
value_alias_map = self.body['ExpressionAttributeValues']
|
value_alias_map = self.body.get('ExpressionAttributeValues', {})
|
||||||
|
|
||||||
table = self.dynamodb_backend.get_table(name)
|
table = self.dynamodb_backend.get_table(name)
|
||||||
|
|
||||||
@ -333,7 +333,7 @@ class DynamoHandler(BaseResponse):
|
|||||||
index = table.schema
|
index = table.schema
|
||||||
|
|
||||||
reverse_attribute_lookup = dict((v, k) for k, v in
|
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:
|
if " AND " in key_condition_expression:
|
||||||
expressions = key_condition_expression.split(" AND ", 1)
|
expressions = key_condition_expression.split(" AND ", 1)
|
||||||
@ -372,7 +372,8 @@ class DynamoHandler(BaseResponse):
|
|||||||
range_values = []
|
range_values = []
|
||||||
|
|
||||||
hash_key_value_alias = hash_key_expression.split("=")[1].strip()
|
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:
|
else:
|
||||||
# 'KeyConditions': {u'forum_name': {u'ComparisonOperator': u'EQ', u'AttributeValueList': [{u'S': u'the-key'}]}}
|
# 'KeyConditions': {u'forum_name': {u'ComparisonOperator': u'EQ', u'AttributeValueList': [{u'S': u'the-key'}]}}
|
||||||
key_conditions = self.body.get('KeyConditions')
|
key_conditions = self.body.get('KeyConditions')
|
||||||
|
@ -926,3 +926,31 @@ def test_set_ttl():
|
|||||||
|
|
||||||
resp = client.describe_time_to_live(TableName='test1')
|
resp = client.describe_time_to_live(TableName='test1')
|
||||||
resp['TimeToLiveDescription']['TimeToLiveStatus'].should.equal('DISABLED')
|
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