All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
Unreleased
0.4.0 - 2026-06-10
Changed
- BREAKING: Removed
:sortand:offsetfrom@supported_features— these are not natively supported by ScyllaDB and were causing silent failures.can?(:sort)andcan?(:offset)now returnfalse. - Added
data_layer_keyset_by_default?/0returningtrue— keyset pagination is now the default pagination mode. - Added runtime
Logger.warninginsort/3andoffset/3callbacks to alert callers about ScyllaDB limitations. - Relaxed Ash dependency from
~> 3.24to~> 3.0for broader compatibility. - Moved
AshScylla.RepoandAshScylla.Migrationout of the Core ExDoc group into "Repo Helpers" and "Schema Helpers" respectively. - Clarified
AshScylla.Migrationdocs — it generates raw CQL DDL strings, not Ecto SQL migrations. - Updated
IMPLEMENTATION_SUMMARY.mddependency table to remove incorrectreactorandtestcontainersentries, add missing dev deps.
Added
@specannotations across all public and private API modules (DataLayer, QueryBuilder, Pagination, FilterValidator, Batch, MaterializedView, Migration, Error, ScyllaError, Repo, Telemetry, DSL).dialyxiradded to[:dev, :test]for CI type checking.- CI dialyzer step now fails on type errors (previously used
--ignore-exit-status || true).
Fixed
- Integration tests can now be run with
mix test test/scylla_integration_test.exs --only integration(previously excluded by globalExUnit.configure). - Removed unused
require LoggerfromFilterValidator,Dsl,Telemetryandrequire XandrafromDataLayer. - Updated README feature/limitation tables for ScyllaDB accuracy (sort, offset, filter constraints).
- Updated test assertions to match new
can?/2behavior and current version0.4.0.
0.3.0 - 2026-06-09
Added
- Per-action consistency configuration via
per_action_consistencyDSL option - Token-based pagination support via
AshScylla.DataLayer.Pagination - Prepared statement caching via
AshScylla.PreparedStatementCache(GenServer + ETS) - Telemetry integration via
AshScylla.Telemetrywith query/batch span events - Filter validation to prevent ALLOW FILTERING anti-pattern
AshScylla.Error.ScyllaErrorstructured error types with suggestions- Retry logic with error-type-specific delays
AshScylla.Repohelper module withcreate_keyspace/1,drop_keyspace/1,recommended_pool_size/0AshScylla.Migrationhelpers for CQL generation from Ash resources- Materialized view support with CQL generation
- Async partition-aware batch operations via
batch_insert_async/4 - Dev container support (.devcontainer)
- Testcontainer-based integration tests
0.2.0 - 2025-01-01
Added
- Secondary index support in DSL and migration helpers
- Materialized view DSL configuration
- Batch operations (BATCH INSERT/UPDATE/DELETE)
- Bulk create support via
Ash.bulk_create - TTL (Time To Live) support for INSERT statements
- Consistency level configuration per resource
- Comprehensive error handling with Xandra error categorization
- QueryBuilder with filter-to-CQL conversion
- Edge case test suite
0.1.0 - 2024-06-01
Added
- Initial release
- Ash.DataLayer behaviour implementation for ScyllaDB via Exandra
- CRUD operations (create, read, update, destroy)
- Filter, sort, limit, offset, select support
- Multitenancy via keyspace-based tenant isolation
- Basic CQL query generation from Ash queries