Skip to content

Conversation

@kyeotic
Copy link
Collaborator

@kyeotic kyeotic commented Jan 21, 2026

Summary

Adds TransactionWriteSet.put() to use DynamoDB PutItem instead of UpdateItem, bypassing the 4KB UpdateExpression limit for items with many attributes. Supports optional versioning: automatic via SDK when no expression is provided, manual merge when a condition expression is supplied.

This came from a user request

Changes

  • Added itemsToPut to TransactionWriteSet data class
  • Added put() method to TransactionWriteSet.Builder
  • Implemented reflection-based version detection for @DynamoDbVersionAttribute
  • Merges version conditions with user expressions using AND logic

Tests

Added 5 comprehensive tests covering put without expression, put with expression, versioning support, condition failures, and race conditions.

🤖 Generated with Claude Code

Adds TransactionWriteSet.put() to use DynamoDB PutItem instead of UpdateItem,
bypassing the 4KB UpdateExpression limit for items with many attributes.

Supports optional @DynamoDbVersionAttribute: without a condition expression,
the SDK handles versioning automatically; with a condition expression, tempest
builds a version check that merges with the user expression, enabling both
versioning and custom conditions together.

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
@kyeotic kyeotic marked this pull request as ready for review January 21, 2026 17:49
@kyeotic kyeotic merged commit d04106f into main Jan 21, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants