Describe the bug
UpdateItem with AttributeUpdates that uses Action: DELETE on a Map attribute, with ReturnValues: UPDATED_NEW. The DELETE removes the attribute, and the UPDATED_NEW return mode asks for the new value of any attribute that was added or updated (not deleted). Real DynamoDB returns the response with no Attributes field at all. ExtendDB returns the response with an empty Attributes map (Attributes: {}).
To Reproduce
Items present:
[
{
"pk": {
"S": "p"
},
"sk": {
"S": "s"
},
"map_attr": {
"M": {
"child": {
"S": "old"
}
}
}
}
]
Request (UpdateItem):
{
"TableName": "test-table",
"Key": {
"pk": {
"S": "p"
},
"sk": {
"S": "s"
}
},
"AttributeUpdates": {
"map_attr": {
"Action": "DELETE"
}
},
"ReturnValues": "UPDATED_NEW"
}
Expected behavior
DynamoDB responds with HTTP 200:
Actual behavior
ExtendDB responds with HTTP 200:
Environment
- ExtendDB version: 0.1.0
- Operating system: macOS 26
- Rust version (if building from source): 1.94
- Client SDK/driver and version: CLI
- Deployment method (binary, container, source): source
Logs / stack trace
(Not applicable: this divergence is detected by differential wire-level comparison against real Amazon DynamoDB; no ExtendDB log is required to reproduce.)
Additional context
Detected by an automated DynamoDB conformance harness. Classifications: BODY_SHAPE_MISMATCH
Checklist
Describe the bug
UpdateItem with AttributeUpdates that uses Action: DELETE on a Map attribute, with ReturnValues: UPDATED_NEW. The DELETE removes the attribute, and the UPDATED_NEW return mode asks for the new value of any attribute that was added or updated (not deleted). Real DynamoDB returns the response with no Attributes field at all. ExtendDB returns the response with an empty Attributes map (Attributes: {}).
To Reproduce
Items present:
[ { "pk": { "S": "p" }, "sk": { "S": "s" }, "map_attr": { "M": { "child": { "S": "old" } } } } ]Request (UpdateItem):
{ "TableName": "test-table", "Key": { "pk": { "S": "p" }, "sk": { "S": "s" } }, "AttributeUpdates": { "map_attr": { "Action": "DELETE" } }, "ReturnValues": "UPDATED_NEW" }Expected behavior
DynamoDB responds with HTTP 200:
{}Actual behavior
ExtendDB responds with HTTP 200:
{ "Attributes": {} }Environment
Logs / stack trace
(Not applicable: this divergence is detected by differential wire-level comparison against real Amazon DynamoDB; no ExtendDB log is required to reproduce.)
Additional context
Detected by an automated DynamoDB conformance harness. Classifications: BODY_SHAPE_MISMATCH
Checklist