Skip to content

feat(dynamodb): add ScanFilter support for Scan operation#175

Open
naile wants to merge 2 commits intohectorvent:mainfrom
naile:feature/dynamodb-scan-filter
Open

feat(dynamodb): add ScanFilter support for Scan operation#175
naile wants to merge 2 commits intohectorvent:mainfrom
naile:feature/dynamodb-scan-filter

Conversation

@naile
Copy link
Copy Markdown

@naile naile commented Apr 2, 2026

Summary

Adds support for the ScanFilter parameter in DynamoDB Scan requests.

ScanFilter is the legacy condition-based filter for Scan, still actively used on the wire by high-level SDK abstractions such as the .NET Table.Scan() API and Java SDK v1's Document API.

Type of change

  • New feature (feat:)

AWS Compatibility

Reuses the ComparisonOperator / AttributeValueList structure from QueryFilter / key conditions already implemented in Floci.

Checklist

  • ./mvnw test passes locally
  • New or updated integration test added
  • Commit messages follow Conventional Commits

Support the legacy ScanFilter parameter in DynamoDB Scan requests.
ScanFilter is used by older AWS SDKs and provides per-attribute
condition filtering (EQ, NE, LT, LE, GT, GE, BEGINS_WITH, CONTAINS,
NOT_CONTAINS, IN, BETWEEN, NOT_NULL, NULL) via ComparisonOperator +
AttributeValueList, as an alternative to FilterExpression.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@naile naile force-pushed the feature/dynamodb-scan-filter branch from 85f4dd1 to d1fb435 Compare April 2, 2026 14:26
@naile naile marked this pull request as ready for review April 2, 2026 14:51
Copilot AI review requested due to automatic review settings April 2, 2026 14:51
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds legacy DynamoDB ScanFilter request support to Floci’s DynamoDB Scan implementation to improve AWS wire-compatibility with older/high-level SDK abstractions.

Changes:

  • Extend DynamoDbService.scan(...) to accept ScanFilter and apply it during scan evaluation.
  • Wire ScanFilter parsing in DynamoDbJsonHandler for DynamoDB_20120810.Scan.
  • Add unit + integration tests covering basic ScanFilter operators (EQ, GE).

Reviewed changes

Copilot reviewed 4 out of 4 changed files in this pull request and generated 6 comments.

File Description
src/main/java/io/github/hectorvent/floci/services/dynamodb/DynamoDbService.java Adds scanFilter parameter and implements matchesScanFilter() for legacy ScanFilter evaluation.
src/main/java/io/github/hectorvent/floci/services/dynamodb/DynamoDbJsonHandler.java Parses ScanFilter from Scan requests and forwards it into the service layer.
src/test/java/io/github/hectorvent/floci/services/dynamodb/DynamoDbServiceTest.java Updates/extends service-level tests to include ScanFilter scenarios (but signature updates are incomplete).
src/test/java/io/github/hectorvent/floci/services/dynamodb/DynamoDbIntegrationTest.java Adds HTTP-level integration coverage for ScanFilter over the DynamoDB JSON 1.1 protocol.

@hectorvent
Copy link
Copy Markdown
Owner

Hi @naile,

Thanks for taking the time to contribute! We've seen your PR and will take a look soon.

To ensure this implementation stays robust, could you also open a PR in our compatibility suite at https://github.com/hectorvent/floci-compatibility-tests? This helps us validate that your changes keep working perfectly as the project evolves.

Also please look at the copilot review comments

The Floci team

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@naile
Copy link
Copy Markdown
Author

naile commented Apr 3, 2026

Hi @naile,

Thanks for taking the time to contribute! We've seen your PR and will take a look soon.

To ensure this implementation stays robust, could you also open a PR in our compatibility suite at https://github.com/hectorvent/floci-compatibility-tests? This helps us validate that your changes keep working perfectly as the project evolves.

Also please look at the copilot review comments

The Floci team

Went over and addressed the copilot comments - for pre-existing behaviors/limitations I think these are better to fix separately to keep the scope small. Let me know if you prefer another strategy. I will add a companion compatability test.

@hectorvent
Copy link
Copy Markdown
Owner

Hello @naile,

Thanks for the PR!

Could you please update the commit history to remove the Co-authored-by: Claude <...> line from the commit message? We prefer to keep the attribution focused on human contributors for this project. Once that's cleaned up, I'm happy to take another look!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants