Skip to main content
Version: 3.17

ScalarDB 3.17 Release Notes

This page includes a list of release notes for ScalarDB 3.17.

v3.17.2​

Release date: March 6, 2026

Summary​

This release includes several improvements and bug fixes.

Community edition​

Improvements​

  • Extended the applicability of one-phase commit optimization in the Consensus Commit protocol. This allows one-phase commit to be used even in SERIALIZABLE isolation level when the transaction only reads records that it subsequently updates, improving performance for read-modify-write workloads. (#3295)

Bug fixes​

  • Added explicit commits for Oracle database when using SERIALIZABLE isolation level to ensure snapshot updates after each operation. (#3294)
  • Upgraded the Jackson library to fix a security issue: GHSA-72hv-8253-57qq (#3394)

Enterprise edition​

Bug fixes​

ScalarDB Cluster​
  • Fixed an issue where the batch operation with piggyback commit threw CrudException instead of CrudConflictException when a commit conflict occurred. This allows clients to properly detect and handle commit conflicts.
  • Fixed a bug where batch() with piggyback commit threw CrudException instead of UnknownTransactionStatusException on unexpected gRPC errors. This could cause incorrect error handling on the client side, as the transaction status was actually unknown when piggyback commit was enabled.
  • Upgraded grpc_health_probe to fix security issues: CVE-2025-68121, CVE-2025-61726, CVE-2025-61728, CVE-2025-61729, and CVE-2025-61730
  • Upgraded the Kubernetes Java Client to fix a security issue: CVE-2024-29371
  • Excluded com.microsoft.azure:adal4j from the Kubernetes Java Client to fix security issues: CVE-2023-52428, CVE-2021-31684, and CVE-2023-1370
  • Upgraded the Jackson library to fix a security issue: GHSA-72hv-8253-57qq
ScalarDB SQL​
  • Ambiguous column names in ORDER BY and HAVING clauses were detected.
  • Fixed a ClassCastException that occurred in StatementUtils.appendTerm() when handling DATE, TIME, TIMESTAMP, and TIMESTAMPTZ values. These values are now correctly formatted as string literals instead of being incorrectly cast to String.
  • Fixed SelectStatement.toSql() to correctly generate ORDER BY clauses with aggregate functions such as SUM() and COUNT(). Previously, only column-based orderings were handled, causing incorrect SQL output when function-based orderings were used.

v3.17.1​

Release date: December 9, 2025

Summary​

This release mainly consists of several minor bug fixes and small improvements.

Community edition​

Enhancements​

  • Added AuthAdmin.getRole(roleName). (#3238)

Improvements​

  • Added the scalar.db.active_transaction_management.enabled configuration option to enable/disable the active transaction management (default: true). (#3233)

Bug fixes​

  • On Oracle, when importing a table with a column using the NUMBER(1) data type, which is usually used for BOOLEAN data, that column can now be mapped to ScalarDB BOOLEAN by using the ScalarDB Schema Loader override-columns-type setting. (#3239)
  • Fixed option issues in Object Storage adapter. (#3237)
  • Fix to increase the maximum allowed string length with Object Storage. (#3248)
  • Updated the upper limit value displayed in the error message for data size limitation in Object Storage adapter. (#3264)

Enterprise edition​

Enhancements​

ScalarDB Cluster​
  • Added the getRole() API and equivalent to retrieve a single role by name.
ScalarDB SQL​
  • Added Metadata.getRole(roleName).

Bug fixes​

ScalarDB Cluster​
  • Made the GRANT ROLE command idempotent, allowing duplicate grants and upgrading to WITH ADMIN OPTION when re-granting.
  • Fixed a bug where the pause functionality did not work correctly when transactions expired.
  • Fixed a bug where ScalarDB Cluster cannot be deployed in the Omnistrate environment by upgrading scalar-metering.

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 ifNotExists option 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 the StorageInfo interface 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) to BLOB(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) to BLOB to 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_level is 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-header option 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-success argument 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 ifNotExists option 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_millis and scalar.db.cluster.node.grpc.max_connection_age_grace_millis to 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 EXISTS clause in ADD COLUMN statement 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_PAT secret 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 OPTION directly in the privilege list of GRANT statements as an alternative to using WITH 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 UnsupportedOperationException was thrown when executing put operations on tables without ABAC policies, when ABAC was enabled.
  • Upgraded grpc_health_probe to 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 ResultSet in SQL API returned incorrect results when duplicate column names were present.
  • Upgraded grpc_health_probe to fix security issues: CVE-2025-47907, CVE-2025-58183, CVE-2025-58186, CVE-2025-58187, and CVE-2025-58188.