ScalarDB 3.17 Release Notes
This page includes a list of release notes for ScalarDB 3.17.
v3.17.0​
Release date: November 26, 2025
Summary​
This release includes many enhancements, improvements, security issue fixes, and bug fixes.
Community edition​
Enhancements​
- Added support for
ifNotExistsoption in add column operation. (#2960) - Added support for dropping columns in ScalarDB. (#2983)
- Added support for renaming columns in ScalarDB. (#2990)
- Added support for renaming tables in ScalarDB. (#3021)
- Added support for altering column types in ScalarDB. (#3028)
- AlloyDB versions 15 and 16 are now supported as underlying storage by using the PostgreSQL JDBC driver. (#3029)
- TiDB versions 6.5, 7.5, and 8.5 are now supported as underlying storage by using MySQL Connector/J JDBC driver. (#3001)
- Added support for batch operations that perform multiple operations in the Transaction API. (#3082)
- Added support for administrative operations over Azure Blob Storage. (#3104)
- Added support for data manipulation operations over Azure Blob Storage. (#3124)
- Added Amazon S3 adapter. (#3141)
- Add integration tests for Cassandra 4 and 5. (#3143)
- Added Google Cloud Storage adapter. (#3179)
- Introduced virtual tables in the Storage abstraction layer. Virtual tables allow exposing a logical join of two source tables on their primary key, enabling related data stored in separate tables to be accessed as a single logical entity. (#3180)
- Added
isConsistentVirtualTableReadGuaranteed()method to theStorageInfointerface to indicate whether a storage guarantees consistent reads for virtual tables. (#3204) - Added transaction metadata decoupling support in Consensus Commit. This feature enables users to perform Consensus Commit ScalarDB transactions on pre-existing data without schema modifications or data migration. (#3207)
Improvements​
- When using Db2, the default data type used for ScalarDB BLOB column from Db2 is changed from
VARBINARY(32672)toBLOB(2G)to allow storing data up to 2GB. This brings new limitations that a BLOB column can no longer be used as partition key, clustering key, secondary index or as an ordering column in a cross-partitions scan, .i.e. ScanAll, operation. (#3000) - When using Oracle, the default data type used for ScalarDB BLOB column from Oracle is changed from
RAW(2000)toBLOBto allow storing data up to 2GB. This introduces new limitations: a BLOB column can no longer be used as a partition key, clustering key, secondary index, or a condition in a Get or Scan operation. (#3070) - When using the JDBC transaction manager, do not set the JDBC transaction isolation level to SERIALIZABLE when the configuration
scalar.db.jdbc.isolation_levelis not set. The default is now the default value set by the storage. (#3076) - Added Maven publishing support for the ScalarDB Data Loader CLI, enabling distribution as a Maven artifact. (#3120)
Bug fixes​
- Fixed a bug where a CommitException was thrown when committing a transaction, even though the transaction was actually committed. (#2826)
- Fixed error handling for mutations in Cassandra. (#2827)
- Fixed a bug where group commit did not work correctly with one-phase commit. (#2832)
- Fixed
--no-headeroption being ignored in data loader CSV exports (#2924) - Fixed an inconsistency where Get and Scan operations were prepared differently for transaction reads and Serializable validation, which could result in inconsistent ordering and cause Serializable validation failures. (#3113)
- Exclude slf4j-api from alloydb dependency to correct logging behaviour (#3119)
- Deprecated
--log-successargument and introduced a new replacement option--enable-log-success(#3117) - Fixed incorrect validation causing maxThreads to be treated as required (#3128)
- Prohibited Get and Scan operations using secondary indexes when the isolation level is SERIALIZABLE in the Consensus Commit transaction manager, as these operations are now defined as eventually consistent and cannot guarantee the strict consistency required by SERIALIZABLE isolation. (#3133)
- Updated the import command help text to include default values for four CLI arguments. (#3059)
- Fixed data-loader to properly handle unexpected exceptions during transaction processing for importing, ensuring transactions are aborted and errors are logged with proper context. (#3183)
- Fixed failure log writing issue in storage mode for Data Loader imports (#3189)
- Fixed handling of "null" values for non-TEXT columns in CSV imports (#3160)
Enterprise edition​
Enhancements​
ScalarDB Cluster​
- Added support for
ifNotExistsoption in add column operation for ScalarDB Cluster. - Added support for dropping columns in ScalarDB Cluster.
- Added support for renaming columns in ScalarDB Cluster.
- Added support for renaming tables in ScalarDB Cluster.
- Added support for altering column types in ScalarDB Cluster.
- Added support for batch operations that perform multiple operations in the transaction service in ScalarDB Cluster.
- Added configuration options to control gRPC connection aging in ScalarDB Cluster. Users can now configure
scalar.db.cluster.node.grpc.max_connection_age_millisandscalar.db.cluster.node.grpc.max_connection_age_grace_millisto fine-tune when gRPC connections are refreshed and gracefully closed. - null
- Added ScalarDB Cluster Data Loader CLI support with full CI/CD pipeline integration, including Docker image builds, vulnerability scanning, and release artifact publishing.
- Added support for role-based access control (RBAC) in ScalarDB Cluster.
- Added support for configuring and using multiple named instances of embedding stores and models.
ScalarDB SQL​
- Supported aggregation functionality in ScalarDB SQL.
- Added support for
IF NOT EXISTSclause inADD COLUMNstatement for ScalarDB SQL. - Added support for dropping columns in ScalarDB SQL.
- Added support for renaming columns in ScalarDB SQL.
- Added support for renaming tables in ScalarDB SQL.
- Added support for altering column types in ScalarDB SQL.
- Added SUM, MIN, MAX, and AVG functions
- Supported HAVING clause.
Improvements​
ScalarDB Cluster​
- Removed the
CR_PATsecret from all vulnerability check workflows. - The minimum JDK for the embedding-client library is raised to 17.
- Updates to the latest Lang4j version 1.8.0
ScalarDB SQL​
- Added support for specifying
GRANT OPTIONdirectly in the privilege list ofGRANTstatements as an alternative to usingWITH GRANT OPTION.
Bug fixes​
ScalarDB Cluster​
- Fixed a bug where the data tag was updated even when it was not specified in update or upsert operations.
- Added missing metrics for the remote replication features.
- Released missing Jar file of
replication-cli - Fixed a bug where an
UnsupportedOperationExceptionwas thrown when executing put operations on tables without ABAC policies, when ABAC was enabled. - Upgraded
grpc_health_probeto fix a security issue. CVE-2025-22874 - Added validation to prevent the replication feature from starting if the one-phase commit optimization is enabled
- Fixed a bug where
ResultSetin SQL API returned incorrect results when duplicate column names were present. - Upgraded
grpc_health_probeto fix security issues: CVE-2025-47907, CVE-2025-58183, CVE-2025-58186, CVE-2025-58187, and CVE-2025-58188.