Per-region conformance
The headline is all regions. Real DynamoDB doesn't behave identically in every region, so a target can match some regions more closely than others. eu-west-2 is marked as the historical baseline, and a region that couldn't be resolved this sweep is flagged rather than counted as a disagreement.
Fully supports
Operation areas this target implements completely - every test passes, nothing skipped. Areas it only partly implements, or gets wrong, are in “Where it falls short” below.
- deleteItem tier 1
- deleteTable tier 1
- describeTable tier 1
- listTables tier 1
- updateTable tier 1
- account tier 2
- backups tier 2
- contributorInsights tier 2
- export tier 2
- kinesis tier 2
- resourcePolicy tier 2
- streams tier 2
- tags tier 2
- ttl tier 2
- legacy-api tier 3
Conformance over time
By operation
Every operation this target implements, with the share of its tests that pass. full, partial, failing, unsupported. The matrix compares operations across targets.
Tier 1 - Core
- batchGetItem 14/15 93.3% batchGetItem: partially supported (14 pass, 1 fail)
- batchWriteItem 15/18 83.3% batchWriteItem: partially supported (15 pass, 3 fail)
- createTable 26/30 86.7% createTable: partially supported (26 pass, 4 fail)
- deleteItem 13/13 100.0% deleteItem: supported (13 pass)
- deleteTable 3/3 100.0% deleteTable: supported (3 pass)
- describeTable 4/4 100.0% describeTable: supported (4 pass)
- getItem 29/40 72.5% getItem: partially supported (29 pass, 11 fail)
- listTables 5/5 100.0% listTables: supported (5 pass)
- putItem 106/116 91.4% putItem: partially supported (106 pass, 10 fail)
- query 82/90 91.1% query: partially supported (82 pass, 8 fail)
- scan 43/56 76.8% scan: partially supported (43 pass, 13 fail)
- updateItem 68/70 97.1% updateItem: partially supported (68 pass, 2 fail)
- updateTable 15/15 100.0% updateTable: supported (15 pass)
Tier 2 - Complete
- account 2/2 100.0% account: supported (2 pass)
- backups 5/5 100.0% backups: supported (5 pass)
- contributorInsights 2/2 100.0% contributorInsights: supported (2 pass)
- export 2/2 100.0% export: supported (2 pass)
- kinesis 1/1 100.0% kinesis: supported (1 pass)
- partiql 27/36 75.0% partiql: partially supported (27 pass, 9 fail)
- resourcePolicy 2/2 100.0% resourcePolicy: supported (2 pass)
- streams 18/18 100.0% streams: supported (18 pass)
- tags 8/8 100.0% tags: supported (8 pass)
- transactions 55/62 88.7% transactions: partially supported (55 pass, 7 fail)
- ttl 7/7 100.0% ttl: supported (7 pass)
- updateTable 10/14 71.4% updateTable: partially supported (10 pass, 4 fail)
Tier 3 - Strict
- error-messages 104/154 67.5% error-messages: partially supported (104 pass, 50 fail)
- legacy-api 42/42 100.0% legacy-api: supported (42 pass)
- limits 79/93 84.9% limits: partially supported (79 pass, 14 fail)
- validation-ordering 30/31 96.8% validation-ordering: partially supported (30 pass, 1 fail)
Where it falls short
Operation groups with gaps in the latest run, biggest first. Unsupported means the target doesn't implement that feature at all, often by design. Open one for the exact tests, or see the conformance suite.
-
error-messages Tier 3 50 failing
View these tests in the suite →- BatchGetItem - exact error messages mixing ProjectionExpression on one table and AttributesToGet on another is rejected
- BatchGetItem - ProjectionExpression rejection messages duplicate paths (a, a) reject even when the key matches no item
- BatchGetItem - ProjectionExpression rejection messages two distinct aliases resolving to one attribute (#a, #b -> a): rejected on the resolved names
- BatchGetItem - ProjectionExpression rejection messages overlapping parent and child paths (a, a.b): full overlap message
- BatchGetItem - ProjectionExpression rejection messages a bad projection on one table entry rejects the whole batch despite a clean entry on another
- BatchWriteItem - exact error messages wrong-typed index key: full type-mismatch message
- BatchWriteItem - exact error messages non-scalar index key: full type-mismatch message
- BatchWriteItem - exact error messages empty-string index key: full secondary-index-key message
- BatchWriteItem - exact error messages empty-binary index key: full secondary-index-key message
- CreateTable - exact error messages PAY_PER_REQUEST with ProvisionedThroughput: full conflict message
- CreateTable - exact error messages GSI INCLUDE projection without NonKeyAttributes: full missing-attributes message
- CreateTable - exact error messages LSI INCLUDE projection without NonKeyAttributes: full missing-attributes message
- CreateTable - exact error messages StreamSpecification StreamEnabled:false with a StreamViewType: full conflict message
- GetItem - ProjectionExpression rejection messages raw duplicate paths (a, a): full overlap message with the path on both sides
- GetItem - ProjectionExpression rejection messages same alias twice (#a, #a): full overlap message
- GetItem - ProjectionExpression rejection messages two distinct aliases resolving to one attribute (#a, #b -> a): rejected on the resolved names
- GetItem - ProjectionExpression rejection messages raw path plus alias for the same attribute (a, #a): full overlap message
- GetItem - ProjectionExpression rejection messages raw parent and child paths (a, a.b): full overlap message
- GetItem - ProjectionExpression rejection messages aliased parent and child paths (#a, #a.#b): full overlap message
- GetItem - ProjectionExpression rejection messages child before parent (a.b, a): rejected with the paths in request order
- GetItem - ProjectionExpression rejection messages cross-alias overlap (#x, #y.#b with #x and #y -> a): rejected on the resolved paths
- GetItem - ProjectionExpression rejection messages deep overlap (a, a.b.c): full overlap message with the three-element path
- GetItem - ProjectionExpression rejection messages list parent and list index (l, l[0]): rejected as an overlap
- PutItem - exact error messages duplicate zero-length members in BS: full duplicates error
- PutItem - exact error messages empty-binary index key value: full secondary-index-key message
- Query - exact error messages Select SPECIFIC_ATTRIBUTES without ProjectionExpression: full required-projection message
- Query - ProjectionExpression rejection messages duplicate paths (a, a) reject even when the key condition matches no partition
- Query - ProjectionExpression rejection messages two distinct aliases resolving to one attribute (#a, #b -> a): rejected on the resolved names
- Query - ProjectionExpression rejection messages overlapping parent and child paths (a, a.b) reject even when the key condition matches no partition
- Query - ProjectionExpression rejection messages duplicate paths still reject when the key condition matches a partition (control)
- Scan - exact error messages Select SPECIFIC_ATTRIBUTES without ProjectionExpression: full required-projection message
- Scan - ProjectionExpression rejection messages duplicate paths (a, a) reject even when the filter matches nothing
- Scan - ProjectionExpression rejection messages two distinct aliases resolving to one attribute (#a, #b -> a): rejected on the resolved names
- Scan - ProjectionExpression rejection messages overlapping parent and child paths (a, a.b) reject even when the filter matches nothing
- Scan - ProjectionExpression rejection messages duplicate paths still reject when the filter matches a row (control)
- TransactWriteItems - exact error messages Put wrong-typed index key: cancelled with full ValidationError reason
- TransactWriteItems - exact error messages Put non-scalar index key: cancelled with full ValidationError reason
- TransactWriteItems - exact error messages Update wrong-typed index key: cancelled with full ValidationError reason
- TransactWriteItems - exact error messages Update non-scalar index key: cancelled with full ValidationError reason
- TransactWriteItems - exact error messages Put empty-string index key: top-level ValidationException
- TransactWriteItems - exact error messages Update empty-string index key: top-level ValidationException
- TransactWriteItems - exact error messages Update wrong-typed Key: cancelled with schema-mismatch reason
- TransactWriteItems - exact error messages Update non-scalar Key: cancelled with schema-mismatch reason
- TransactWriteItems - exact error messages Delete wrong-typed Key: cancelled with schema-mismatch reason
- TransactWriteItems - exact error messages Delete non-scalar Key: cancelled with schema-mismatch reason
- TransactWriteItems - exact error messages ConditionCheck wrong-typed Key: cancelled with schema-mismatch reason
- TransactWriteItems - exact error messages ConditionCheck non-scalar Key: cancelled with schema-mismatch reason
- TransactWriteItems - exact error messages Put empty-binary index key: top-level ValidationException
- TransactWriteItems - exact error messages Update empty-binary index key: top-level ValidationException
- UpdateItem - exact error messages empty-binary index key value: full secondary-index-key message
-
limits Tier 3 14 failing
View these tests in the suite →- Empty values - strings, binary, and sets binary set whose only member is zero-length is accepted and round-trips at zero length
- Empty values - strings, binary, and sets binary set mixing a zero-length member with a one-byte member round-trips both
- Empty values - strings, binary, and sets duplicate zero-length members in BS are rejected as duplicates
- Expression size limit (4KB) - UpdateExpression rejects an UpdateExpression over the 4096-byte limit
- Expression size limit (4KB) - ConditionExpression rejects a ConditionExpression over the 4096-byte limit
- Expression size limit (4KB) - Query FilterExpression rejects a Query FilterExpression over the 4096-byte limit
- Expression size limit (4KB) - Scan FilterExpression rejects a Scan FilterExpression over the 4096-byte limit
- Expression size limit (4KB) - ProjectionExpression rejects a ProjectionExpression over the 4096-byte limit
- Key-value length limits rejects a partition key over the 2048-byte limit on write
- Key-value length limits rejects an over-limit partition key on the read path
- Nesting depth - 32-level document limit rejects a stored attribute nested 32 levels (leaf at level 33)
- Nesting depth - 32-level document limit rejects a 32-level ExpressionAttributeValue with ValidationException
- Response size limit (1MB) Query returns LastEvaluatedKey when response would exceed 1MB
- Response size limit (1MB) Scan returns LastEvaluatedKey when response would exceed 1MB
-
scan Tier 1 13 failing
View these tests in the suite →- Scan - GSI scans a GSI with ALL projection and returns all attributes
- Scan - GSI scans a GSI with INCLUDE projection and returns only projected attributes
- Scan - GSI sparse composite GSI: an item missing the GSI range key is not scanned
- Scan - GSI pagination returns all items across paginated GSI scan
- Scan - GSI pagination returns all matching items with filter across paginated GSI scan
- Scan - GSI pagination across tied sort keys walks every item once across a paged GSI scan with tied sort keys
- Scan - LSI pagination under duplicate cursor components returns all items across paginated LSI scan
- Scan - LSI pagination under duplicate cursor components returns all matching items with filter across paginated LSI scan
- Scan - legal shared-prefix projections accepts two paths sharing a list index (l[0].x, l[0].y) and merges them into one element
- Scan - Select / ProjectionExpression rejections Select ALL_ATTRIBUTES with ProjectionExpression is rejected
- Scan - Select / ProjectionExpression rejections Select ALL_PROJECTED_ATTRIBUTES without an IndexName is rejected
- Scan - Select / ProjectionExpression rejections Select COUNT with ProjectionExpression is rejected
- Scan - Select / ProjectionExpression rejections Select ALL_PROJECTED_ATTRIBUTES with ProjectionExpression and no IndexName is rejected
-
getItem Tier 1 11 failing
View these tests in the suite →- ConsumedCapacity - single-item ops report only the aggregate, no read/write split an eventually-consistent GetItem reports 0.5 CapacityUnits and no read/write split
- Nested attribute projection GetItem projects multiple list indices compacted and index-ordered
- Same list-index projection merge GetItem merges two scalar sub-attributes of one list index into a single element
- Same list-index projection merge GetItem merges two paths sharing a nested map under one list index
- Same list-index projection merge GetItem merges a scalar sibling and a nested-map sibling under one list index
- Same list-index projection merge GetItem merges two paths sharing an element of a nested list under one list index
- Same list-index projection merge GetItem keeps distinct inner list indices separate under one shared outer index
- Same list-index projection merge GetItem merges the shared index and keeps a distinct index separate, compacted
- Same list-index projection merge GetItem merges the same index regardless of path request order
- Same list-index projection merge Query merges two sub-attributes of one list index into a single element
- Same list-index projection merge BatchGetItem merges two sub-attributes of one list index into a single element
-
putItem Tier 1 10 failing
View these tests in the suite →- PutItem - ConditionExpression rejects a BETWEEN with reversed bounds at parse time
- PutItem - number format rejects "1_000"
- PutItem - number format rejects " 5"
- PutItem - number format rejects "5 "
- PutItem - validation rejects duplicate zero-length members in a binary set
- PutItem - validation rejects a wrong-typed index key attribute
- PutItem - validation rejects a non-scalar index key attribute
- PutItem - validation rejects an empty-string index key attribute
- PutItem - validation rejects a number with a leading space
- PutItem - validation rejects a number with a trailing space
-
partiql Tier 2 9 failing
View these tests in the suite →- ExecuteStatement - PartiQL SELECT with nested map path
- ExecuteStatement - PartiQL SELECT with begins_with in WHERE clause
- ExecuteStatement - PartiQL PartiQL UPDATE with REMOVE
- ExecuteStatement - PartiQL evaluates negated predicates (NOT begins_with, IS NOT MISSING)
- ExecuteStatement - PartiQL DELETE with a false NOT begins_with predicate fails ConditionalCheckFailed
- ExecuteStatement - PartiQL DELETE with a true NOT begins_with predicate removes the item
- ExecuteStatement - PartiQL rejects a write WHERE clause that omits the primary key
- ExecuteStatement - PartiQL DELETE on a missing key with a non-key predicate is a silent no-op
- ExecuteTransaction - PartiQL idempotent replay under the same ClientRequestToken does not double-apply
-
query Tier 1 8 failing
View these tests in the suite →- Query - GSI sparse composite GSI: an item with the GSI hash key but no range key is excluded
- Query - KeyConditionExpression semantics rejects a nested path on a key attribute
- Query - LSI sparse LSI: an item missing the LSI sort key is excluded but stays in the base table
- Query - legal shared-prefix projections accepts two paths sharing a list index (l[0].x, l[0].y) and merges them into one element
- Query - Select / ProjectionExpression rejections Select ALL_ATTRIBUTES with ProjectionExpression is rejected
- Query - Select / ProjectionExpression rejections Select ALL_PROJECTED_ATTRIBUTES without an IndexName is rejected
- Query - Select / ProjectionExpression rejections Select COUNT with ProjectionExpression is rejected
- Query - Select / ProjectionExpression rejections Select ALL_PROJECTED_ATTRIBUTES with ProjectionExpression and no IndexName is rejected
-
transactions Tier 2 7 failing
View these tests in the suite →- TransactWriteItems - validation Put with a wrong-typed index key cancels with a ValidationError reason
- TransactWriteItems - validation Put with a non-scalar index key cancels with a ValidationError reason
- TransactWriteItems - validation Update setting a wrong-typed index key cancels with a ValidationError reason
- TransactWriteItems - validation Update setting a non-scalar index key cancels with a ValidationError reason
- TransactWriteItems - validation Put with an empty-string index key is a top-level ValidationException
- TransactWriteItems - validation Update setting an empty-string index key is a top-level ValidationException
- TransactWriteItems - ConsumedCapacity: conditional, check, replay, cancel reports write capacity on the first call and read capacity on a same-token replay
-
createTable Tier 1 4 failing
View these tests in the suite →- CreateTable - validation rejects a GSI INCLUDE projection without NonKeyAttributes
- CreateTable - validation rejects StreamSpecification with StreamEnabled false plus a StreamViewType
- CreateTable - LSI rejects an LSI INCLUDE projection without NonKeyAttributes
- CreateTable - index and stream spec validation rejects a KEYS_ONLY GSI projection carrying NonKeyAttributes
-
updateTable Tier 2 4 failing
View these tests in the suite →- UpdateTable - add GSI adds multiple GSIs sequentially
- UpdateTable - add GSI accepts a conflicting redeclaration of an existing key attribute and keeps the stored type
- UpdateTable - add GSI drops an unused AttributeDefinition supplied with a GSI add
- UpdateTable - remove GSI removes a GSI from a table
-
batchWriteItem Tier 1 3 failing
View these tests in the suite →- BatchWriteItem - validation rejects a wrong-typed index key value
- BatchWriteItem - validation rejects a non-scalar index key value
- BatchWriteItem - validation rejects an empty-string index key value
-
updateItem Tier 1 2 failing
View these tests in the suite →- UpdateItem - ADD ADD of a zero-length binary member onto an existing binary set adds it
- UpdateItem - ReturnValues granularity UPDATED_NEW on a nested SET returns only the changed fragment
-
batchGetItem Tier 1 1 failing
View these tests in the suite →- BatchGetItem - legal shared-prefix projections accepts two paths sharing a list index (l[0].x, l[0].y) and merges them into one element
-
validation-ordering Tier 3 1 failing
View these tests in the suite →- UpdateItem - validation ordering rejects invalid ReturnValues (UpdateItem reports the first enum error)
Run history
Showing the 24 most recent runs. The chart above covers the full history, and every run is browsable from Runs.