This is an automated email from the ASF dual-hosted git repository.

lukasz pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/cassandra.git

commit 25c7c71b19bb94948b1310900c3488f350982852
Merge: d2c48faf71 0136fc9c8f
Author: Lukasz Antoniak <[email protected]>
AuthorDate: Thu Dec 18 07:40:43 2025 +0100

    Merge branch 'cassandra-5.0' into trunk
    
    * cassandra-5.0:
      Fix CQLSSTableWriter serialization of vector of date and time patch by 
Lukasz Antoniak; reviewed by Andres de la Pena, Yifan Cai for CASSANDRA-20979

 CHANGES.txt                                        |  1 +
 .../cassandra/cql3/functions/types/TypeCodec.java  | 13 +++---
 .../cassandra/io/sstable/CQLSSTableWriterTest.java | 49 +++++++++++++++++++---
 3 files changed, 51 insertions(+), 12 deletions(-)

diff --cc CHANGES.txt
index 3a2759ee5f,2569b03124..272cb69c55
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@@ -1,276 -1,5 +1,277 @@@
 -5.0.7
 +5.1
 + * Optimize UTF8Validator.validate for ASCII prefixed Strings 
(CASSANDRA-21075)
 + * Switch LatencyMetrics to use ThreadLocalTimer/ThreadLocalCounter 
(CASSANDRA-21080)
 + * Accord: write rejections would be returned to users as server errors 
rather than INVALID and TxnReferenceOperation didn't handle all collections 
prperly (CASSANDRA-21061)
 + * Use byte[] directly in QueryOptions instead of ByteBuffer and convert them 
to ArrayCell instead of BufferCell to reduce allocations (CASSANDRA-20166)
 + * Log queries scanning too many SSTables per read (CASSANDRA-21048)
 + * Extend nodetool verify to (optionally) validate SAI files (CASSANDRA-20949)
 + * Fix CompressionDictionary being closed while still in use (CASSANDRA-21047)
 + * When updating a multi cell collection element, if the update is rejected 
then the shared Row.Builder is not freed causing all future mutations to be 
rejected (CASSANDRA-21055)
 + * Schema annotations escape validation on CREATE and ALTER DDL statements 
(CASSANDRA-21046)
 + * Calculate once and cache the result of ModificationStatement#requiresRead 
as a perf optimization (CASSANDRA-21040)
 + * Update system schema tables with new distributed keyspace on upgrade 
(CASSANDRA-20872)
 + * Fix issue when running cms reconfiguration with paxos repair disabled 
(CASSANDRA-20869)
 + * Added additional parameter to JVM shutdown to allow for logs to be 
properly shutdown (CASSANDRA-20978)
 + * Improve isGossipOnlyMember and location lookup performance 
(CASSANDRA-21039)
 + * Refactor the way we check if a transformation is allowed to be committed 
during upgrades (CASSANDRA-21043)
 + * Improve debug around paused and disabled compaction 
(CASSANDRA-20131,CASSANDRA-19728)
 + * DiskUsageBroadcaster does not update usageInfo on node replacement 
(CASSANDRA-21033)
 + * Reject PrepareJoin if tokens are already assigned (CASSANDRA-21006)
 + * Don't update registration status if node state for decommissioned peer is 
found with the same address (CASSANDRA-21005)
 + * Avoid NPE when meta keyspace placements are empty before CMS is 
initialized (CASSANDRA-21004)
 + * Gossip entries for hibernating non-members don't block truncate 
(CASSANDRA-21003)
 + * Retry without time limit calculates wait time incorrectly (CASSANDRA-21002)
 + * Don't submit AlterSchemaStatements which produce no effect locally to the 
CMS (CASSANDRA-21001)
 + * Avoid iterating all prepared statements when getting 
PreparedStatementsCacheSize metric (CASSANDRA-21038)
 + * Reduce performance impact of TableMetadataRef.get and 
KeyspaceMetadataRef.get (CASSANDRA-20465)
 + * Improve CMS initialization (CASSANDRA-21036)
 + * Introducing comments and security labels for schema elements 
(CASSANDRA-20943)
 + * Extend nodetool tablestats for dictionary memory usage (CASSANDRA-20940)
 + * Introduce separate GCInspector thresholds for concurrent GC events 
(CASSANDRA-20980)
 + * Reduce contention in MemtableAllocator.allocate (CASSANDRA-20226)
 + * Add export, list, import sub-commands for nodetool compressiondictionary 
(CASSANDRA-20941)
 + * Add support in the binary protocol to allow transactions to have multiple 
conditions (CASSANDRA-20883)
 + * Enable CQLSSTableWriter to create SSTables compressed with a dictionary 
(CASSANDRA-20938)
 + * Support ZSTD dictionary compression (CASSANDRA-17021)
 + * Fix ExceptionsTable when stacktrace has zero elements (CASSANDRA-20992)
 + * Replace blocking wait with non-blocking delay in paxos repair 
(CASSANDRA-20983)
 + * Implementation of CEP-55 - Generation of role names (CASSANDRA-20897)
 + * Add cqlsh autocompletion for the identity mapping feature (CASSANDRA-20021)
 + * Add DDL Guardrail enabling administrators to disallow 
creation/modification of keyspaces with durable_writes = false (CASSANDRA-20913)
 + * Optimize Counter, Meter and Histogram metrics using thread local counters 
(CASSANDRA-20250)
 + * Update snakeyaml to 2.4 (CASSANDRA-20928)
 + * Update Netty to 4.1.125.Final (CASSANDRA-20925)
 + * Expose uncaught exceptions in system_views.uncaught_exceptions table 
(CASSANDRA-20858)
 + * Improved observability in AutoRepair to report both expected vs. actual 
repair bytes and expected vs. actual keyspaces (CASSANDRA-20581)
 + * Execution of CreateTriggerStatement should not rely on external state 
(CASSANDRA-20287)
 + * Support LIKE expressions in filtering queries (CASSANDRA-17198)
 + * Make legacy index rebuilds safe on Gossip -> TCM upgrades (CASSANDRA-20887)
 + * Minor improvements and hardening for IndexHints (CASSANDRA-20888)
 + * Stop repair scheduler if two major versions are detected (CASSANDRA-20048)
 + * Optimize audit logic for batch operations especially when audit is not 
enabled for DML (CASSANDRA-20885)
 + * Implement nodetool history (CASSANDRA-20851)
 + * Expose StorageService.dropPreparedStatements via JMX (CASSANDRA-20870)
 + * Expose Metric for Prepared Statement Cache Size (in bytes) 
(CASSANDRA-20864)
 + * Add support for BEGIN TRANSACTION to allow mutations that touch multiple 
partitions (CASSANDRA-20857)
 + * AutoRepair: Safeguard Full repair against disk protection(CASSANDRA-20045)
 + * BEGIN TRANSACTION crashes if a mutation touches multiple rows 
(CASSANDRA-20844)
 + * Fix version range check in MessagingService.getVersionOrdinal 
(CASSANDRA-20842)
 + * Allow custom constraints to be loaded via SPI (CASSANDRA-20824)
 + * Optimize DataPlacement lookup by ReplicationParams (CASSANDRA-20804)
 + * Fix ShortPaxosSimulationTest and AccordSimulationRunner do not execute 
from the cli (CASSANDRA-20805)
 + * Allow overriding arbitrary settings via environment variables 
(CASSANDRA-20749)
 + * Optimize MessagingService.getVersionOrdinal (CASSANDRA-20816)
 + * Optimize TrieMemtable#getFlushSet (CASSANDRA-20760)
 + * Support manual secondary index selection at the CQL level (CASSANDRA-18112)
 + * When regulars CQL mutations run on Accord use the txn timestamp rather 
than server timestamp (CASSANDRA-20744)
 + * When using BEGIN TRANSACTION if a complex mutation exists in the same 
statement as one that uses a reference, then the complex delete is dropped 
(CASSANDRA-20788)
 + * Migrate all nodetool commands from airline to picocli (CASSANDRA-17445)
 + * Journal.TopologyUpdate should not store the local topology as it can be 
inferred from the global on (CASSANDRA-20785)
 + * Accord: Topology serializer has a lot of repeated data, can dedup to 
shrink the cost (CASSANDRA-20715)
 + * Stream individual files in their own transactions and hand over ownership 
to a parent transaction on completion (CASSANDRA-20728)
 + * Limit the number of held heap dumps to not consume disk space excessively 
(CASSANDRA-20457)
 + * Accord: BEGIN TRANSACTIONs IF condition logic does not properly support 
meaningless emptiness and null values (CASSANDRA-20667)
 + * Accord: startup race condition where accord journal tries to access the 2i 
index before its ready (CASSANDRA-20686)
 + * Adopt Unsafe::invokeCleaner for Direct ByteBuffer cleaning 
(CASSANDRA-20677)
 + * Add additional metrics around hints (CASSANDRA-20499)
 + * Support for add and replace in IntervalTree (CASSANDRA-20513)
 + * Enable single_sstable_uplevel by default for LCS (CASSANDRA-18509)
 + * Introduce NativeAccessor to avoid new ByteBuffer allocation on flush for 
each NativeCell (CASSANDRA-20173)
 + * Migrate sstableloader code to its own tools directory and artifact 
(CASSANDRA-20328)
 + * Stop AutoRepair monitoring thread upon Cassandra shutdown (CASSANDRA-20623)
 + * Avoid duplicate hardlink error upon forceful taking of ephemeral snapshots 
during repair (CASSANDRA-20490)
 + * When a custom disk error handler fails to initiate, fail the startup of a 
node instead of using the no-op handler (CASSANDRA-20614)
 + * Rewrite constraint framework to remove column specification from 
constraint definition, introduce SQL-like NOT NULL (CASSANDRA-20563)
 + * Fix a bug in AutoRepair duration metric calculation if schedule finishes 
quickly (CASSANDRA-20622)
 + * Fix AutoRepair flaky InJvm dtest (CASSANDRA-20620)
 + * Increasing default for auto_repair.sstable_upper_threshold considering 
large Cassandra tables & revert three lines removed from CHANGES.txt due to a 
merge mistake (CASSANDRA-20586)
 + * Fix token restrictions with MIN_TOKEN (CASSANDRO-20557)
 + * Upgrade logback version to 1.5.18 and slf4j dependencies to 2.0.17 
(CASSANDRA-20429)
 + * Switch memtable-related off-heap objects to Native Endian and Memory to 
Little Endian (CASSANDRA-20190)
 + * Change SSTableSimpleScanner to use SSTableReader#openDataReaderForScan 
(CASSANDRA-20538)
 + * Automated Repair Inside Cassandra [CEP-37] (CASSANDRA-19918)
 + * Implement appender of slow queries to system_views.slow_queries table 
(CASSANDRA-13001)
 + * Add autocompletion in CQLSH for built-in functions (CASSANDRA-19631)
 + * Grant permission on keyspaces system_views and system_virtual_schema not 
possible (CASSANDRA-20171)
 + * General Purpose Transactions (Accord) [CEP-15] (CASSANDRA-17092)
 + * Improve performance when getting writePlacementsAllSettled from 
ClusterMetadata (CASSANDRA-20526)
 + * Add nodetool command to dump the contents of the 
system_views.{cluster_metadata_log, cluster_metadata_directory} tables 
(CASSANDRA-20525)
 + * Fix TreeMap race in CollectionVirtualTableAdapter causing us to lose rows 
in the virtual table (CASSANDRA-20524)
 + * Improve metadata log catch up with inter-DC mutation forwarding 
(CASSANDRA-20523)
 + * Support topology-safe changes to Datacenter & Rack for live nodes 
(CASSANDRA-20528)
 + * Add SSTableIntervalTree latency metric (CASSANDRA-20502)
 + * Ignore repetitions of semicolon in CQLSH (CASSANDRA-19956)
 + * Avoid NPE during cms initialization abort (CASSANDRA-20527)
 + * Avoid failing queries when epoch changes and replica goes up/down 
(CASSANDRA-20489)
 + * Split out truncation record lock (CASSANDRA-20480)
 + * Throw new IndexBuildInProgressException when queries fail during index 
build, instead of IndexNotAvailableException (CASSANDRA-20402)
 + * Fix Paxos repair interrupts running transactions (CASSANDRA-20469)
 + * Various fixes in constraint framework (CASSANDRA-20481)
 + * Add support in CAS for -= on numeric types, and fixed improper handling of 
empty bytes which lead to NPE (CASSANDRA-20477)
 + * Do not fail to start a node with materialized views after they are turned 
off in config (CASSANDRA-20452)
 + * Fix nodetool gcstats output, support human-readable units and more output 
formats (CASSANDRA-19022)
 + * Various gossip to TCM upgrade fixes (CASSANDRA-20483)
 + * Add nodetool command to abort failed nodetool cms initialize 
(CASSANDRA-20482)
 + * Repair Paxos for the distributed metadata log when CMS membership changes 
(CASSANDRA-20467)
 + * Reintroduce CASSANDRA-17411 in trunk (CASSANDRA-19346)
 + * Add min/max/mean/percentiles to timer metrics vtable (CASSANDRA-20466)
 + * Add support for time, date, timestamp types in scalar constraint 
(CASSANDRA-20274)
 + * Add regular expression constraint (CASSANDRA-20275)
 + * Improve constraints autocompletion (CASSANDRA-20341)
 + * Add JVM version and Cassandra build date to nodetool version -v 
(CASSANDRA-19721)
 + * Move all disk error logic to DiskErrorsHandler to enable pluggability 
(CASSANDRA-20363)
 + * Fix marking an SSTable as suspected and BufferPool leakage in case of a 
corrupted SSTable read during a compaction (CASSANDRA-20396)
 + * Add missed documentation for CREATE TABLE LIKE (CASSANDRA-20401)
 + * Add OCTET_LENGTH constraint (CASSANDRA-20340)
 + * Reduce memory allocations in miscellaneous places along the hot write path 
(CASSANDRA-20167)
 + * Provide keystore_password_file and truststore_password_file options to 
read credentials from a file (CASSANDRA-13428)
 + * Unregistering a node should also remove it from tokenMap if it is there 
and recalculate the placements (CASSANDRA-20346)
 + * Fix PartitionUpdate.isEmpty deserialization issue to avoid potential 
EOFException (CASSANDRA-20345)
 + * Avoid adding LEFT nodes to tokenMap on upgrade from gossip 
(CASSANDRA-20344)
 + * Allow empty placements when deserializing cluster metadata 
(CASSANDRA-20343)
 + * Reduce heap pressure when initializing CMS (CASSANDRA-20267)
 + * Paxos Repair: NoSuchElementException on 
DistributedSchema.getKeyspaceMetadata (CASSANDRA-20320)
 + * Improve performance of DistributedSchema.validate for large schemas 
(CASSANDRA-20360)
 + * Add JSON constraint (CASSANDRA-20273)
 + * Prevent invalid constraint combinations (CASSANDRA-20330)
 + * Support CREATE TABLE LIKE WITH INDEXES (CASSANDRA-19965)
 + * Invalidate relevant prepared statements on every change to TableMetadata 
(CASSANDRA-20318)
 + * Add per type max size guardrails (CASSANDRA-19677)
 + * Make it possible to abort all kinds of multi step operations 
(CASSANDRA-20217)
 + * Do not leak non-Java exceptions when calling snapshot operations via JMX 
(CASSANDRA-20335)
 + * Implement NOT_NULL constraint (CASSANDRA-20276)
 + * Improve error messages for constraints (CASSANDRA-20266)
 + * Add system_views.partition_key_statistics for querying SSTable metadata 
(CASSANDRA-20161)
 + * CEP-42 - Add Constraints Framework (CASSANDRA-19947)
 + * Add table metric PurgeableTombstoneScannedHistogram and a tracing event 
for scanned purgeable tombstones (CASSANDRA-20132)
 + * Make sure we can parse the expanded CQL before writing it to the log or 
sending it to replicas (CASSANDRA-20218)
 + * Add format_bytes and format_time functions (CASSANDRA-19546)
 + * Fix error when trying to assign a tuple to target type not being a tuple 
(CASSANDRA-20237)
 + * Fail CREATE TABLE LIKE statement if UDTs in target keyspace do not exist 
or they have different structure from ones in source keyspace (CASSANDRA-19966)
 + * Support octet_length and length functions (CASSANDRA-20102)
 + * Make JsonUtils serialize Instant always with the same format 
(CASSANDRA-20209)
 + * Port Harry v2 to trunk (CASSANDRA-20200)
 + * Enable filtering of snapshots on keyspace, table and snapshot name in 
nodetool listsnapshots (CASSANDRA-20151)
 + * Create manifest upon loading where it does not exist or enrich it 
(CASSANDRA-20150)
 + * Propagate true size of snapshot in SnapshotDetailsTabularData to not call 
JMX twice in nodetool listsnapshots (CASSANDRA-20149)
 + * Implementation of CEP-43 - copying a table via CQL by CREATE TABLE LIKE 
(CASSANDRA-19964)
 + * Periodically disconnect roles that are revoked or have LOGIN=FALSE set 
(CASSANDRA-19385)
 + * AST library for CQL-based fuzz tests (CASSANDRA-20198)
 + * Support audit logging for JMX operations (CASSANDRA-20128)
 + * Enable sorting of nodetool status output (CASSANDRA-20104)
 + * Support downgrading after CMS is initialized (CASSANDRA-20145)
 + * Deprecate IEndpointSnitch (CASSANDRA-19488)
 + * Check presence of a snapshot in a case-insensitive manner on macOS 
platform to prevent hardlinking failures (CASSANDRA-20146)
 + * Enable JMX server configuration to be in cassandra.yaml (CASSANDRA-11695)
 + * Parallelized UCS compactions (CASSANDRA-18802)
 + * Avoid prepared statement invalidation race when committing schema changes 
(CASSANDRA-20116)
 + * Restore optimization in MultiCBuilder around building one clustering 
(CASSANDRA-20129)
 + * Consolidate all snapshot management to SnapshotManager and introduce 
SnapshotManagerMBean (CASSANDRA-18111)
 + * Fix RequestFailureReason constants codes (CASSANDRA-20126)
 + * Introduce SSTableSimpleScanner for compaction (CASSANDRA-20092)
 + * Include column drop timestamp in alter table transformation 
(CASSANDRA-18961)
 + * Make JMX SSL configurable in cassandra.yaml (CASSANDRA-18508)
 + * Fix cqlsh CAPTURE command to save query results without trace details when 
TRACING is ON (CASSANDRA-19105)
 + * Optionally prevent tombstone purging during repair (CASSANDRA-20071)
 + * Add post-filtering support for the IN operator in SAI queries 
(CASSANDRA-20025)
 + * Don’t finish ongoing decommission and move operations during startup 
(CASSANDRA-20040)
 + * Nodetool reconfigure cms has correct return code when streaming fails 
(CASSANDRA-19972)
 + * Reintroduce RestrictionSet#iterator() optimization around multi-column 
restrictions (CASSANDRA-20034)
 + * Explicitly localize strings to Locale.US for internal implementation 
(CASSANDRA-19953)
 + * Add -H option for human-friendly output in nodetool compactionhistory 
(CASSANDRA-20015)
 + * Fix type check for referenced duration type for nested types 
(CASSANDRA-19890)
 + * In simulation tests, correctly set the tokens of replacement nodes 
(CASSANDRA-19997)
 + * During TCM upgrade, retain all properties of existing system tables 
(CASSANDRA-19992)
 + * Properly cancel in-flight futures and reject requests in 
EpochAwareDebounce during shutdown (CASSANDRA-19848)
 + * Provide clearer exception message on failing commitlog_disk_access_mode 
combinations (CASSANDRA-19812)
 + * Add total space used for a keyspace to nodetool tablestats 
(CASSANDRA-19671)
 + * Ensure Relation#toRestriction() handles ReversedType properly 
(CASSANDRA-19950)
 + * Add JSON and YAML output option to nodetool gcstats (CASSANDRA-19771)
 + * Introduce metadata serialization version V4 (CASSANDRA-19970)
 + * Allow CMS reconfiguration to work around DOWN nodes (CASSANDRA-19943)
 + * Make TableParams.Serializer set allowAutoSnapshots and incrementalBackups 
(CASSANDRA-19954)
 + * Make sstabledump possible to show tombstones only (CASSANDRA-19939)
 + * Ensure that RFP queries potentially stale replicas even with only key 
columns in the row filter (CASSANDRA-19938)
 + * Allow nodes to change IP address while upgrading to TCM (CASSANDRA-19921)
 + * Retain existing keyspace params on system tables after upgrade 
(CASSANDRA-19916)
 + * Deprecate use of gossip state for paxos electorate verification 
(CASSANDRA-19904)
 + * Update dtest-api to 0.0.17 to fix jvm17 crash in jvm-dtests 
(CASSANDRA-19239)
 + * Add resource leak test and Update Netty to 4.1.113.Final to fix leak 
(CASSANDRA-19783)
 + * Fix incorrect nodetool suggestion when gossip mode is running 
(CASSANDRA-19905)
 + * SAI support for BETWEEN operator (CASSANDRA-19688)
 + * Fix BETWEEN filtering for reversed clustering columns (CASSANDRA-19878)
 + * Retry if node leaves CMS while committing a transformation 
(CASSANDRA-19872)
 + * Add support for NOT operators in WHERE clauses. Fixed Three Valued Logic 
(CASSANDRA-18584)
 + * Allow getendpoints for system tables and make sure getNaturalReplicas work 
for MetaStrategy (CASSANDRA-19846)
 + * On upgrade, handle pre-existing tables with unexpected table ids 
(CASSANDRA-19845)
 + * Reconfigure CMS before assassinate (CASSANDRA-19768)
 + * Warn about unqualified prepared statement only if it is select or 
modification statement (CASSANDRA-18322)
 + * Update legacy peers tables during node replacement (CASSANDRA-19782)
 + * Refactor ColumnCondition (CASSANDRA-19620)
 + * Allow configuring log format for Audit Logs (CASSANDRA-19792)
 + * Support for noboolean rpm (centos7 compatible) packages removed 
(CASSANDRA-19787)
 + * Allow threads waiting for the metadata log follower to be interrupted 
(CASSANDRA-19761)
 + * Support dictionary lookup for CassandraPasswordValidator (CASSANDRA-19762)
 + * Disallow denylisting keys in system_cluster_metadata (CASSANDRA-19713)
 + * Fix gossip status after replacement (CASSANDRA-19712)
 + * Ignore repair requests for system_cluster_metadata (CASSANDRA-19711)
 + * Avoid ClassCastException when verifying tables with reversed partitioner 
(CASSANDRA-19710)
 + * Always repair the full range when repairing system_cluster_metadata 
(CASSANDRA-19709)
 + * Use table-specific partitioners during Paxos repair (CASSANDRA-19714)
 + * Expose current compaction throughput in nodetool (CASSANDRA-13890)
 + * CEP-24 Password validation / generation (CASSANDRA-17457)
 + * Reconfigure CMS after replacement, bootstrap and move operations 
(CASSANDRA-19705)
 + * Support querying LocalStrategy tables with any partitioner 
(CASSANDRA-19692)
 + * Relax slow_query_log_timeout for MultiNodeSAITest (CASSANDRA-19693)
 + * Audit Log entries are missing identity for mTLS connections 
(CASSANDRA-19669)
 + * Add support for the BETWEEN operator in WHERE clauses (CASSANDRA-19604)
 + * Replace Stream iteration with for-loop for 
SimpleRestriction::bindAndGetClusteringElements (CASSANDRA-19679)
 + * Consolidate logging on trace level (CASSANDRA-19632)
 + * Expand DDL statements on coordinator before submission to the CMS 
(CASSANDRA-19592)
 + * Fix number of arguments of String.format() in various classes 
(CASSANDRA-19645)
 + * Remove unused fields from config (CASSANDRA-19599)
 + * Refactor Relation and Restriction hierarchies (CASSANDRA-19341)
 + * Raise priority of TCM internode messages during critical operations 
(CASSANDRA-19517)
 + * Add nodetool command to unregister LEFT nodes (CASSANDRA-19581)
 + * Add cluster metadata id to gossip syn messages (CASSANDRA-19613)
 + * Reduce heap usage occupied by the metrics (CASSANDRA-19567)
 + * Improve handling of transient replicas during range movements 
(CASSANDRA-19344)
 + * Enable debounced internode log requests to be cancelled at shutdown 
(CASSANDRA-19514)
 + * Correctly set last modified epoch when combining multistep operations into 
a single step (CASSANDRA-19538)
 + * Add new TriggersPolicy configuration to allow operators to disable 
triggers (CASSANDRA-19532)
 + * Use Transformation.Kind.id in local and distributed log tables 
(CASSANDRA-19516)
 + * Remove period field from ClusterMetadata and metadata log tables 
(CASSANDRA-19482)
 + * Enrich system_views.pending_hints vtable with hints sizes (CASSANDRA-19486)
 + * Expose all dropwizard metrics in virtual tables (CASSANDRA-14572)
 + * Ensured that PropertyFileSnitchTest do not overwrite 
cassandra-toploogy.properties (CASSANDRA-19502)
 + * Add option for MutualTlsAuthenticator to restrict the certificate validity 
period (CASSANDRA-18951)
 + * Fix StorageService::constructRangeToEndpointMap for non-distributed 
keyspaces (CASSANDRA-19255)
 + * Group nodetool cms commands into single command group (CASSANDRA-19393)
 + * Register the measurements of the bootstrap process as Dropwizard metrics 
(CASSANDRA-19447)
 + * Add LIST SUPERUSERS CQL statement (CASSANDRA-19417)
 + * Modernize CQLSH datetime conversions (CASSANDRA-18879)
 + * Harry model and in-JVM tests for partition-restricted 2i queries 
(CASSANDRA-18275)
 + * Refactor cqlshmain global constants (CASSANDRA-19201)
 + * Remove native_transport_port_ssl (CASSANDRA-19397)
 + * Make nodetool reconfigurecms sync by default and add --cancel to be able 
to cancel ongoing reconfigurations (CASSANDRA-19216)
 + * Expose auth mode in system_views.clients, nodetool clientstats, metrics 
(CASSANDRA-19366)
 + * Remove sealed_periods and last_sealed_period tables (CASSANDRA-19189)
 + * Improve setup and initialisation of LocalLog/LogSpec (CASSANDRA-19271)
 + * Refactor structure of caching metrics and expose auth cache metrics via 
JMX (CASSANDRA-17062)
 + * Allow CQL client certificate authentication to work without sending an 
AUTHENTICATE request (CASSANDRA-18857)
 + * Extend nodetool tpstats and system_views.thread_pools with detailed pool 
parameters (CASSANDRA-19289)
 + * Remove dependency on Sigar in favor of OSHI (CASSANDRA-16565)
 + * Simplify the bind marker and Term logic (CASSANDRA-18813)
 + * Limit cassandra startup to supported JDKs, allow higher JDKs by setting 
CASSANDRA_JDK_UNSUPPORTED (CASSANDRA-18688)
 + * Standardize nodetool tablestats formatting of data units (CASSANDRA-19104)
 + * Make nodetool tablestats use number of significant digits for time and 
average values consistently (CASSANDRA-19015)
 + * Upgrade jackson to 2.15.3 and snakeyaml to 2.1 (CASSANDRA-18875)
 + * Transactional Cluster Metadata [CEP-21] (CASSANDRA-18330)
 + * Add ELAPSED command to cqlsh (CASSANDRA-18861)
 + * Add the ability to disable bulk loading of SSTables (CASSANDRA-18781)
 + * Clean up obsolete functions and simplify cql_version handling in cqlsh 
(CASSANDRA-18787)
 +Merged from 5.0:
+  * Fix CQLSSTableWriter serialization of vector of date and time 
(CASSANDRA-20979)
   * Correctly calculate default for FailureDetector max interval 
(CASSANDRA-21025)
   * Adding missing configs in system_views.settings to be backward compatible 
(CASSANDRA-20863)
   * Heap dump should not be generated on handled exceptions (CASSANDRA-20974)
diff --cc test/unit/org/apache/cassandra/io/sstable/CQLSSTableWriterTest.java
index 816bc2c2d9,9c88b12ebd..4710a0054b
--- a/test/unit/org/apache/cassandra/io/sstable/CQLSSTableWriterTest.java
+++ b/test/unit/org/apache/cassandra/io/sstable/CQLSSTableWriterTest.java
@@@ -32,10 -32,11 +32,12 @@@ import java.util.List
  import java.util.Map;
  import java.util.Set;
  import java.util.UUID;
 +import java.util.concurrent.ExecutionException;
  import java.util.concurrent.TimeUnit;
  import java.util.concurrent.atomic.AtomicInteger;
+ import java.util.function.BiConsumer;
  import java.util.function.BiPredicate;
+ import java.util.function.Function;
  import java.util.stream.Collectors;
  import java.util.stream.Stream;
  import java.util.stream.StreamSupport;
@@@ -50,18 -51,20 +52,22 @@@ import org.junit.rules.TemporaryFolder
  
  import com.datastax.driver.core.utils.UUIDs;
  import org.apache.cassandra.Util;
+ import org.apache.cassandra.cql3.CQL3Type;
  import org.apache.cassandra.cql3.QueryProcessor;
  import org.apache.cassandra.cql3.UntypedResultSet;
 +import org.apache.cassandra.cql3.constraints.ConstraintViolationException;
  import org.apache.cassandra.cql3.functions.types.DataType;
  import org.apache.cassandra.cql3.functions.types.LocalDate;
  import org.apache.cassandra.cql3.functions.types.TypeCodec;
  import org.apache.cassandra.cql3.functions.types.UDTValue;
  import org.apache.cassandra.cql3.functions.types.UserType;
 -import org.apache.cassandra.db.ColumnFamilyStore;
 -import org.apache.cassandra.db.Keyspace;
 +import org.apache.cassandra.db.compression.CompressionDictionary;
 +import org.apache.cassandra.db.compression.CompressionDictionary.DictId;
 +import org.apache.cassandra.db.compression.ZstdCompressionDictionary;
+ import org.apache.cassandra.db.marshal.AbstractType;
  import org.apache.cassandra.db.marshal.FloatType;
+ import org.apache.cassandra.db.marshal.SimpleDateType;
+ import org.apache.cassandra.db.marshal.TimeType;
  import org.apache.cassandra.db.marshal.UTF8Type;
  import org.apache.cassandra.dht.ByteOrderedPartitioner;
  import org.apache.cassandra.dht.Murmur3Partitioner;
@@@ -1639,59 -1581,19 +1677,58 @@@ public abstract class CQLSSTableWriterT
          }
  
          writer.close();
 -        loadSSTables(dataDir, keyspace);
 +        loadSSTables(dataDir, keyspace, table);
  
 -        UntypedResultSet resultSet = QueryProcessor.executeInternal("SELECT * 
FROM " + keyspace + "." + table);
 +        if (verifyDataAfterLoading)
 +        {
 +            UntypedResultSet resultSet = 
QueryProcessor.executeInternal("SELECT * FROM " + keyspace + "." + table);
  
 -        assertEquals(resultSet.size(), 100);
 -        int cnt = 0;
 -        for (UntypedResultSet.Row row : resultSet)
 +            assertEquals(resultSet.size(), 100);
 +            int cnt = 0;
 +            for (UntypedResultSet.Row row : resultSet)
 +            {
 +                assertEquals(cnt, row.getInt("k"));
-                 List<Float> vector = row.getVector("v1", FloatType.instance, 
5);
-                 assertThat(vector).hasSize(5);
-                 final float floatCount = (float)cnt;
-                 assertThat(vector).allMatch(val -> val == floatCount);
++                List<?> vector = row.getVector("v1", subType, dimensions);
++                assertThat(vector).hasSize(dimensions);
++                checkFunction.accept(cnt, vector);
 +                cnt++;
 +            }
 +        }
 +    }
 +
 +    @Test
 +    public void testConstraintViolation() throws Exception
 +    {
 +        final String schema = "CREATE TABLE " + qualifiedTable + " ("
 +                              + "  k int,"
 +                              + "  v1 int CHECK v1 < 5 ,"
 +                              + "  PRIMARY KEY (k)"
 +                              + ")";
 +
 +        CQLSSTableWriter writer = CQLSSTableWriter.builder()
 +                                                  .inDirectory(dataDir)
 +                                                  .forTable(schema)
 +                                                  .using("INSERT INTO " + 
keyspace + "." + table + " (k, v1) " +
 +                                                         "VALUES (?, 
?)").build();
 +
 +        writer.addRow(1, 4);
 +
 +        assertThatThrownBy(() -> writer.addRow(2, 11))
 +        .describedAs("Should throw when adding a row that violates 
constraints")
 +        .isInstanceOf(ConstraintViolationException.class)
 +        .hasMessageContaining("Column value does not satisfy value constraint 
for column 'v1'. It should be v1 < 5");
 +
 +        writer.close();
 +        loadSSTables(dataDir, keyspace, table);
 +
 +        if (verifyDataAfterLoading)
          {
 -            assertEquals(cnt, row.getInt("k"));
 -            List<?> vector = row.getVector("v1", subType, dimensions);
 -            assertThat(vector).hasSize(dimensions);
 -            checkFunction.accept(cnt, vector);
 -            cnt++;
 +            UntypedResultSet resultSet = 
QueryProcessor.executeInternal("SELECT * FROM " + keyspace + "." + table);
 +
 +            assertEquals(resultSet.size(), 1);
 +            UntypedResultSet.Row row = resultSet.one();
 +            assertEquals(1, row.getInt("k"));
 +            assertEquals(4, row.getInt("v1"));
          }
      }
  


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to