0.4.0
-----
 * Fix com.apple.mg namespace in cdc_bytes.avsc and cdc_generic_record.avsc (CASSANALYTICS-166)
 * Add support for tuples and tuples with collections or UDTs in the Bulk writer (CASSANALYTICS-51)
 * Reading BTI may require partitions and rows indexes (CASSANALYTICS-156)
 * Make KafkaPublisher class generic to publish GenericRecords for different value serializers (CASSANALYTICS-154)
 * Cannot read start offset from BTI index with big partitions (CASSANALYTICS-151)
 * BufferingInputStream fails to read last unaligned chunk (CASSANALYTICS-147)
 * Support per-instance sidecar port resolution in CDC client (CASSANALYTICS-130)
 * Change log level for logs in CassandraSchema to debug level to avoid log spamming (CASSANALYTICS-149)
 * Pass SidecarCdcClient as a constructor parameter to avoid thread/resource leaks (CASSANALYTICS-142)
 * Support extended deletion time in CDC for Cassandra 5.0
 * Flush event consumer before persisting CDC state to prevent data loss on failure (CASSANALYTICS-126)
 * Fix ReadStatusTracker to distinguish clean completion from error termination in BufferingCommitLogReader (CASSANALYTICS-129)
 * Adding CDC support for Cassandra 5.0 Commit Logs (CASSANALYTICS-60)
 * Fixing CdcTests.testMockedCdc broken due to incorrect position update in BufferingCommitLogReader (CASSANALYTICS-127)
 * Commitlog reading not progressing in CDC due to incorrect CommitLogReader.isFullyRead (CASSANALYTICS-124)
 * Incorrect hash code calculation in PartitionUpdateWrapper.Digest (CASSANALYTICS-125)
 * Add flag to allow bulk write to indexed tables (CASSANALYTICS-128)
 * Assign data file start offset based on BTI index (CASSANALYTICS-121)
 * Quote identifiers option must be set to true if ttl has mixed case column name (CASSANALYTICS-120)

0.3.0
-----
 * Fix ByteBuffer flip() in StreamBuffer.copyBytes() causing data corruption (CASSANALYTICS-116)
 * Fix race condition in DirectStreamSession#onSSTablesProduced and SortedSStableWriter#close (CASSANALYTICS-107)
 * Address LZ4 vulnerability (CVE-2025-12183) (CASSANALYTICS-109)
 * Add TimeRangeFilter to filter out SSTables outside given time window (CASSANALYTICS-102)

0.2.0
-----
 * Generated distribution artifacts fix (CASSANALYTICS-105)
 * Fix SSTable descriptor mismatch preventing newly produced SSTables from being uploaded (CASSANALYTICS-98)
 * Expose SidecarCdc builders and interfaces (CASSANALYTICS-94)
 * Fix bulk reader node availability comparator ordering (CASSANALYTICS-99)
 * Remove not needed buffer flips (CASSANALYTICS-95)
 * Refactor BulkWriterContext broadcasting to use immutable config class (CASSANALYTICS-89)
 * Bump sidecar dependency to 0.2.0 (CASSANALYTICS-93)
 * Support for Trie-Indexed SSTables (BTI format) (CASSANALYTICS-27)
 * Add extractCdcTables method to CqlUtils (CASSANALYTICS-91)
 * Create bridge modules for Cassandra 5.0 (CASSANALYTICS-84)
 * Analytics job fails when source table has secondary indexes (CASSANALYTICS-86)
 * Set KeyStore to be optional (CASSANALYTICS-69)
 * Unique restoreJobId per write target (CASSANALYTICS-81)
 * Allow writing to local datacenter only for coordinated write (CASSANALYTICS-75)

0.1.0
-----
 * Simplify SidecarTableSizeProvider (CASSANALYTICS-73)
 * Use full ring instead of only IPs from configuration (CASSANALYTICS-20)
 * Bulk Reader should dynamically size the Spark job based on estimated table size (CASSANALYTICS-36)
 * Allow getting cassandra role in Spark options for use in Sidecar requests for RBAC (CASSANALYTICS-61)
 * Fix NPE in the deserialized CassandraClusterInfoGroup (CASSANALYTICS-59)
 * Replace NotImplementedException with UnsupportedOperationException in SparkType (CASSANALYTICS-55)
 * Remove dead code for spark 2 (CASSANALYTICS-53)
 * Add support for nested UDT in collections for bulk write (CASSANALYTICS-49)
 * Add Sidecar Client (CASSANALYTICS-30)
 * Add support for vnodes (CASSANALYTICS-50)
 * Add CDC Kafka and Avro codecs module to translate CDC mutations into Avro format for publication over Kafka (CASSANALYTICS-9)
 * Bump Cassandra version to 4.0.17 and integrate with CQLSSTableWriter notification (CASSANALYTICS-5)
 * Bulk writer in S3_COMPAT mode calculates file digest twice (CASSANALYTICS-19)
 * Add Apache Cassandra Sidecar CDC implementation (CASSANALYTICS-7)
 * Upgrade sidecar client dependency to 0.1.0 (CASSANALYTICS-16)
 * Remove JDK8 support (CASSANALYTICS-17)
 * Support CQL duration type (CASSANALYTICS-18)
 * Add Schema Store interfaces for CDC (CASSANALYTICS-8)
 * Add CassandraBridge helper APIs that can be used by external tooling (CASSANALYTICS-4)
 * Refactor to decouple RowIterator and CellIterator from Spark so bulk reads can be performed outside of Spark (CASSANDRA-20259)
 * CEP-44 Kafka integration for Cassandra CDC using Sidecar (CASSANDRA-19962)
 * Expose detailed bulk write failure message for better insight (CASSANDRA-20066)
 * Add dataTransferApi and TwoPhaseImportCoordinator for coordinated write (CASSANDRA-19994)
 * Remove SparkSQL dependency from CassandraBridge so that it can be used independent from Spark (CASSANDRA-19980)
 * Support aggregated consistency validation for multiple clusters (CASSANDRA-19933)
 * Add transport extension for coordinated write (CASSANDRA-19923)
 * Support data partitioning for multiple clusters coordinated write (CASSANDRA-19910)
 * Add writer option COORDINATED_WRITE_CONFIG to define coordinated write to multiple Cassandra clusters (CASSANDRA-19909)
 * Decouple Cassandra types from Spark types so Cassandra types can be used independently from Spark (CASSANDRA-19815)
 * Make the compression cache configurable to reduce heap pressure for large SSTables (CASSANDRA-19900)
 * Refactor TokenRangeMapping to use proper types instead of Strings (CASSANDRA-19901)
 * Removes checks for blocked instances from bulk-write path (CASSANDRA-19873)
 * Fix consistency level check for write (CASSANDRA-19842)
 * Fix NPE when writing UDT values (CASSANDRA-19836)
 * Add job_timeout_seconds writer option (CASSANDRA-19827)
 * Prevent double closing sstable writer (CASSANDRA-19821)
 * Stream sstable eagerly when bulk writing to reclaim local disk space sooner (CASSANDRA-19806)
 * Split the Cassandra type logic out from CassandraBridge into a separate module (CASSANDRA-19793)
 * Remove other uses of Apache Commons lang for hashcode, equality and random string generation (CASSANDRA-19791)
 * Split out BufferingInputStream stats into separate interface (CASSANDRA-19778)
 * Bump Sidecar version to 55a9efee (CASSANDRA-19774)
 * Add new module cassandra-analytics-common to store common code with minimal dependencies (CASSANDRA-19748)
 * Bulk writer fails validation stage when writing to a cluster using RandomPartitioner (CASSANDRA-19727)
 * Invalid mapping when timestamp is used as a partition key during bulk writes (CASSANDRA-19716)
 * NullPointerException when reading static column with null values (CASSANDRA-19626)
 * Integrate with the latest sidecar client (CASSANDRA-19616)
 * Support bulk write via S3 (CASSANDRA-19563)
 * Support UDTs in the Bulk Writer (CASSANDRA-19340)
 * Fix bulk reads of multiple tables that potentially have the same data file name (CASSANDRA-19507)
 * Fix XXHash32Digest calculated digest value (CASSANDRA-19500)
 * Report additional bulk analytics job stats for instrumentation (CASSANDRA-19418)
 * Add certificate expiry check to start up validations done in Cassandra Analytics library (CASSANDRA-19424)
 * Use constant reference time during bulk read process (CASSANDRA-19452)
 * Update access of ClearSnapshotStrategy (CASSANDRA-19442)
 * Bulk reader fails to produce a row when regular column values are null (CASSANDRA-19411)
 * Use XXHash32 for digest calculation of SSTables (CASSANDRA-19369)
 * Startup Validation Failures when Checking Sidecar Connectivity (CASSANDRA-19377)
 * No longer need to synchronize on Schema.instance after Cassandra 4.0.12 (CASSANDRA-19351)
 * Upgrade to Cassandra 4.0.12 and remove RowBufferMode and BatchSize options (CASSANDRA-19334)
 * Improve logging for bulk writes and on task failures (CASSANDRA-19331)
 * Allow setting TTL for snapshots created by Analytics bulk reader (CASSANDRA-19273)
 * Fix range split and use open-closed range notation consistently (CASSANDRA-19325)
 * Add integration tests using in-jvm-dtest to cover blocklisted instances (CASSANDRA-19272)
 * Fix bulk writer consistency level validations for blocked instances (CASSANDRA-19257)
 * Column type mapping error for timestamp type during bulk writes (CASSANDRA-19223)
 * Speed up integration tests (CASSANDRA-19251)
 * Make bulk writer resilient to cluster resize events (CASSANDRA-18852)
 * Remove write option VALIDATE_SSTABLES to enforce validation (CASSANDRA-19199)
 * Fix bulk writing when using identifiers that need quotes (CASSANDRA-19031)
 * Fix bulk reading when using identifiers that need quotes (CASSANDRA-19024)
 * Remove unused dead code (CASSANDRA-19148)
 * Get Sidecar port through CassandraContext for more flexibility (CASSANDRA-19903)
 * Log start-up validation result to a single report (CASSANDRA-18916)
 * Use in-jvm dtest framework from Sidecar for testing (CASSANDRA-18759)
 * Cassandra Analytics Start-Up Validation (CASSANDRA-18810)
 * Expose per partition on-disk usage through new DataFrame that utilizes the Index.db SSTable file components (CASSANDRA-18683)
 * Fix bulk writes with Buffered RowBufferMode (CASSANDRA-18692)
 * Minor Refactoring to Improve Code Reusability (CASSANDRA-18684)
 * Fix cassandra-analytics-core-example (CASSANDRA-18662)
 * Added caching of Node Settings to improve efficiency (CASSANDRA-18633)
 * Upgrade to JUnit 5 (CASSANDRA-18599)
 * Add support for TTL & Timestamps for bulk writes (CASSANDRA-18605)
 * Add circleci configuration yaml for Cassandra Analytics (CASSANDRA-18578)
 * Provide a SecretsProvider interface to abstract the secret provisioning (CASSANDRA-18545)
 * Add the .asf.yaml file (CASSANDRA-18548)
