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 :sort and :offset from @supported_features — these are not natively supported by ScyllaDB and were causing silent failures. can?(:sort) and can?(:offset) now return false.
  • Added data_layer_keyset_by_default?/0 returning true — keyset pagination is now the default pagination mode.
  • Added runtime Logger.warning in sort/3 and offset/3 callbacks to alert callers about ScyllaDB limitations.
  • Relaxed Ash dependency from ~> 3.24 to ~> 3.0 for broader compatibility.
  • Moved AshScylla.Repo and AshScylla.Migration out of the Core ExDoc group into "Repo Helpers" and "Schema Helpers" respectively.
  • Clarified AshScylla.Migration docs — it generates raw CQL DDL strings, not Ecto SQL migrations.
  • Updated IMPLEMENTATION_SUMMARY.md dependency table to remove incorrect reactor and testcontainers entries, add missing dev deps.

Added

  • @spec annotations across all public and private API modules (DataLayer, QueryBuilder, Pagination, FilterValidator, Batch, MaterializedView, Migration, Error, ScyllaError, Repo, Telemetry, DSL).
  • dialyxir added 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 global ExUnit.configure).
  • Removed unused require Logger from FilterValidator, Dsl, Telemetry and require Xandra from DataLayer.
  • Updated README feature/limitation tables for ScyllaDB accuracy (sort, offset, filter constraints).
  • Updated test assertions to match new can?/2 behavior and current version 0.4.0.

0.3.0 - 2026-06-09

Added

  • Per-action consistency configuration via per_action_consistency DSL option
  • Token-based pagination support via AshScylla.DataLayer.Pagination
  • Prepared statement caching via AshScylla.PreparedStatementCache (GenServer + ETS)
  • Telemetry integration via AshScylla.Telemetry with query/batch span events
  • Filter validation to prevent ALLOW FILTERING anti-pattern
  • AshScylla.Error.ScyllaError structured error types with suggestions
  • Retry logic with error-type-specific delays
  • AshScylla.Repo helper module with create_keyspace/1, drop_keyspace/1, recommended_pool_size/0
  • AshScylla.Migration helpers 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