Important
The SingleStore 9.1 release candidate (RC) gives you the opportunity to preview, evaluate, and provide feedback on new and upcoming features prior to their general availability. In the interim, SingleStore 9.0 is recommended for production workloads, which can later be upgraded to SingleStore 9.1.
9. 1 Release Notes
On this page
Release Highlights
Feature: F16 Vectors - Added support for float16 (16-bit) vectors.
Feature: Amazon Kinesis Pipelines - Added support for Amazon Kinesis using the Kafka Connect extensibility framework.
Feature: Mutual TLS - Added support for mutual TLS (mTLS) enabling secure two-way authentication between SingleStore and Kafka brokers.
Feature: UPDATE .SELECT‑like result set containing all or specified columns from the updated rows.SELECT and duplicate table scans, which improves performance and simplifies application logic.
Feature: DELETE .DELETE, where a separate SELECT within a transaction is required to see what was deleted; it uses a single statement and table scan, which improves performance and simplifies application logic.
Preview Feature: Overloaded Functions and Stored Procedures - Overloaded user-defined functions and stored procedures are now supported.
Changes in Default Behavior
Note
These changes affect systems using Java-based features, including full-text search and CDC-in.
New Java Path: SingleStore is moving towards a universal Java path, and away from per-feature Java paths.
-
A new global variable
java_has been introduced.path The variable fts2_is deprecated and is superseded byjava_ path java_.path -
Additional per-feature Java path variables will be migrated to use
java_in the future.path
JRE 25 Requirement: The required Java runtime version is updated to JRE 25.
Upgrade Process:
-
Toolbox will attempt to install JRE 25 when upgrading to version 9.
1. If the install succeeds, Toolbox will set java_and update the other Java path variables.path No additional actions are required. -
If the automatic installation of JRE fails, install JRE 25 manually and retry the upgrade.
Enhancements
Full-text Search
-
Observability
-
Added the SHOW FULLTEXT INDEX STATUS command and the MV_
FULLTEXT_ INDEX_ STATUS information schema view that show partition-level information about the status of full-text indexes. -
Added the ANALYZE FULLTEXT command that displays tokens that would be generated by a Lucene analyzer for a specified string.
-
-
Performance
-
Added a full-text index merger which combines per-segment full-text indexes to create a cross-segment full-text index which improves the performance of full-text search queries by reducing the number of indexes that must be examined.
-
Iceberg
-
Added Hive and REST catalog support for Iceberg external tables.
JSON
-
Added support for JSON extract shorthand operators (
::,::%, and::$) to the result of UDFs, which enables key-path access directly to UDF output, for exampleudf('a')::key. -
Performance improvements for certain queries that use JSON builtins for filtering.
-
Added support for the JSON data type in external functions.
Observability
-
Full-text performance and observability were enhanced by the addition of the the SHOW FULLTEXT INDEX STATUS command, the MV_
FULLTEXT_ INDEX_ STATUS information schema view information schema view, and the ANALYZE FULLTEXT command. -
Improved Memory Observability: The new
MV_information schema view provides users a simple way to obtain high level memory usage metrics and a practical way to identify the set of most significant memory consumers on the system.MEMORY_ USAGE Refer to Identifying and Reducing Memory Usage for more information. -
Added support for tracing DDL activity, allowing users to audit recent DDL statements across the cluster via Query History and the
MV_information schema view.TRACE_ EVENTS Refer to Query History for more information. -
Enhanced logging for DPC operations.
-
Added time based invalidation to cross-query statistics cache.
-
Added statistics related to AWS S3 lookup latency.
-
Added the TLS cipher and application name to the auditlog.
-
Added collection of enhanced query stats from kill query Recursive Common Table Expressions (RCTE) writer statistics and sorted iterator error cases.
Pipelines
-
Added the
pipeline_built-in function to expose source file metadata when loading data through pipelines.source_ metadata() -
Introduced support for tracking pipeline vCPU and memory usage using the
activity_column.tracking_ id -
Enhanced S3 pipeline glob pattern support to include
?(single-character match),[abc](character set),[a-z](character range), and[^abc](negated set), in addition to the existing*wildcard. -
Added the
CONFIGcolumn to the output ofSHOW LINKSand theLINKSinformation schema view to display connection link configurations in JSON format. -
Added
CREATE OR REPLACE LINKsyntax to update existing connection links without dropping and recreating pipelines. -
Added support for loading Parquet nested types (
LIST,MAP, andGROUP) into JSON or BSON columns. -
Added support for the
OPTIONS 'compact'parameter inINFER PIPELINEfor Parquet files for loading Parquet groups and nested types (LISTandMAP). -
Improved error reporting for CDC pipelines with detailed messages on multiple parsing errors.
-
Added support for skipping
NULLrecords when using Kafka properties, skip all errors, or skip parser errors in the Kafka pipeline definition. -
Improved memory management for pipelines.
-
Blocked non-CDC sources in
CREATE {TABLE|TABLES} AS INFER PIPELINEqueries. -
Added the filename to the error message returned by an
INFER PIPELINEstatement when an incorrect file format is detected. -
Locked down
ALTER PIPELINEqueries forKAFKACONNECTsource. -
Long running batches no longer block
CREATE OR REPLACE PIPELINEqueries.If running, the current batch exits gracefully and the pipeline is replaced. -
Enabled support for ingestion of parquet repeated and grouped fields, such as lists, maps, or groups, as SingleStore JSON type.
-
Added support for
SHOW PROFILE PIPELINE. -
Added support for vended credentials in Iceberg pipelines with S3 storage.
-
Added support for metadata garbage collection for Azure pipelines.
Query Execution
-
The Distributed Plancache (DPC) preview feature has been enhanced with a Plancache Manager (PCM) and asynchronous lookup in hot path execution.
These features improve the DPC's usefulness in Fast Scale and Suspend & Resume. -
Added support for
DROP MATERIALIZED VIEW. -
Added support for correlated
EXISTSsubqueries withHAVINGclause on single aggregate. -
Added an
ALTER TABLE .command that enables cancellation of an ongoing columnstore alter operation.. . UNDO POPULATION -
Added the
ALTER LINKcommand that enables updates to theCONFIGandCREDENTIALSclauses of an existing link. -
Added support for subselects and joins in a writable view definition.
Added support for writing to nested views. -
Updated the permissions required for querying writable views that contain joins.
-
If a selectivity optimization source is normalization in an
EXPLAINorPROFILEquery, the output now displays the source of normalization. -
Improved the query optimizer's handling of out-of-memory issues.
-
Improved the performance of queries on
MV_information schema view.CLUSTER_ STATUS -
Added support for collecting target table DDL for
INSERTqueries in error reproduction. -
KILLED_counter now includes queries killed due to exceedingQUERIES QUERY_.MEMORY_ PERCENTAGE -
Added support for
BEGIN,COMMIT, andROLLBACKstatements in DML forwarding when performing writes to reference tables in multi-statement transactions. -
Added support for the
IF EXISTSoption in theDROP PROJECTIONcommand. -
Extended the TABLE() function to have an ordinality column when used with
WITH ORDINALITYclause. -
Added support for returning either all columns (
RETURNING *) or a selected subset of columns inUPDATE .; stored procedures, CTEs, multi-table updates (joins/subselects), and column expressions are not supported in the. . RETURNING RETURNINGclause. -
Enhanced JSON handling to correctly process emoji and surrogate pair representations.
-
Improved query performance by executing eligible operations directly on encoded columnstore data.
-
SHOW PROFILE PIPELINEqueries now support pipelines with a.in the pipeline name. -
Added the
REQUIRE SUBJECTclause to the CREATE USER command.
-
Added the ability to skip heuristic checks when using projection for JSON documents for
ORDER BYself join rewrites. -
Added support for an alter node port.
-
Enabled the use of column names from the base table for materialized view column names.
-
Enabled synchronous Distributed Plancache lookup during query execution.
-
Enabled using estimated table row count as default column cardinality for better join estimation.
-
Distributed Plancache pool size adjustment fails gracefully.
-
Removed the
CASToperator if a redundant cast is performed. -
Added support for increasing the length of variable-length string type columns using
ALTER TABLE MODIFY COLUMNon columnstore tables. -
Added support for
COUNT()in aggregated views. -
Added display of original line number when re-raising exceptions with
RAISEstatement in stored procedures. -
Added support for PSQL
ARRAYtype arguments to theTO_built-in function.JSON -
Disabled prewritten ingest transformations by default.
-
Added an optimizer rewrite to push
LIMITbelow external User Defined Functions (UDFs).This optimization can be turned off with the optimizer_engine variable.disable_ limit_ pushdown_ below_ external_ udf -
Improved
JSON_performance by performing encoding-level extraction instead of full JSON decoding.EXTRACT_ BIGINT -
Added functionality to copy the rowstore segment by default when a shallow copy of a table is created.
-
Updated
character_to display the correct character set value inset_ client SHOW CREATEqueries.
Security
-
Added support for mutual TLS (mTLS) authentication in Kafka pipelines that enables secure two-way authentication between SingleStore and Kafka brokers.
Vector Search
-
Added support for SIMD implementations of
DOT_andPRODUCT EUCLIDEAN_builtins for theDISTANCE VECTORF16type. -
Added compaction steps to FTS index merger.
-
Added support for typecasts between
VECTORF32andVECTORF16types.
-
Added Lucene logs to the cluster report.
-
Backfilled index type and index size of vector index metadata during information schema queries.
-
Improved performance of full-text index.
-
Added a vector index cache to limit the amount of memory used by vector indexes.
Refer to Vector Indexing for details. -
Updated vector index and search to use internal memory allocator instead of malloc.
General Updates
-
Added support for displaying the collation for
JSON,ENUM, orSETdata types in information schema views. -
Engine gRPC calls to the plancache manager now include more information.
-
For invalid,
NULL, or empty UDF names, DML queries are now routed to the default pool. -
Made Resource Governance aware of cgroup CPU limits in Kubernetes clusters.
The minimum of host cores and cgroup cores is now used as the CPU limit for governing resource pools. -
The engine now waits for the plancache manager during uploads.
-
Added support for considering cgroup cores if they are less than host core count in the resource governor.
-
Improved the error message returned when removing a leaf fails during rebalance.
-
Setting a resource pool inside a stored procedure does not take effect immediately, and the change is applied only after the stored procedure finishes executing.
-
Increased the maximum number of user-defined resource group pools to 50.
-
New users created without an explicit resource pool are now automatically assigned the
default_resource pool.pool -
Added information on bucket parameters to gRPC request to the plancache manager.
-
Removed password validation for
ALTER USERqueries that do not modify the password. -
CPU resource governance now works for clusters of all sizes.
-
If a shard key is not specified, it is added by default on the group by columns.
-
Allowed users that do not require X509 (mTLS) to connect regardless of the
ssl_value and presence of the file it points to (if set).ca_ for_ client_ cert -
Added the ability to ignore join selectivity estimates of zero.
-
Added charset validation for JSON type values in external functions.
-
Changed the default collation from
utf8mb4_togeneral_ ci utf8mb4_.bin -
Delimited batch sets now return and accept original rowIDs.
-
Disabled
critical_by default.diagnostics -
Engine now displays
NULLfor vector index size and type for vector indexes created in versions older than 9.0. -
Introduced background IO submission thread for sync durability and batching multiple IO requests.
-
Result tables now explicitly set table-level collation.
-
Upgraded the Almalinux version to Almalinux 10.
-
Added option to merge credentials with external secret storage.
-
Improved error handling for regular expressions; errors are now properly raised instead of returning SQL NULL.
Engine Variables
This update adds the following new engine variables:
-
max_: Allows a user to create a maximum number of 50 resource pools from the default of 10.user_ rg_ pools Refer to Set Resource Limits. -
remove_: Controls the behavior of theleaf_ force_ remove_ online_ leaf REMOVE LEAF .command when. . FORCE leaf_isfailure_ detection OFF.When enabled, the REMOVE LEAF .command forcefully removes the target leaf node from the cluster even if it is online.. . FORCE
-
suppress_: Suppresses all DML query warnings.dml_ warnings -
ssl_: Specifies the Certificate Authority (CA) to use for client certification.ca_ for_ client_ cert -
regexp_: Controls the behaviour of error handling for regular expression functions.error_ handling_ level -
Distributed Plan Cache: Added the following engine variables to control this feature:
enable_,distributed_ plancache distributed_,plancache_ worker_ threads distributed_,plancache_ max_ download_ plans distributed_,plancache_ agg_ sync_ s enable_,periodic_ distributed_ plancache_ agg_ sync enable_.synchronous_ dpc_ lookup -
enable_: Enables or disables the ability to overload functions and stored procedures.overloaded_ functions
Updates to existing engine variables:
-
Increased the maximum value of
pipelines_tomax_ concurrent 4096. -
Updated the default value of
cardinality_tothreshold_ for_ join_ split_ rewrite 9223372036854775807(LLONG_MAX).
Information Schema
This update adds the following information schema views and columns:
-
PIPELINES_:Tracks source offset information for KafkaConnect pipelines in the new pipeline extensibility framework.SOURCE_ OFFSETS -
MV_: Displays status, statistics, and cache metrics forSEQUENCES AUTO_columns, including pre-fetch counts, cache misses, and owner leaf information for performance monitoring.INCREMENT AS SEQUENCE
-
Added the
PLAN_column to theSOURCE PLANCACHEinformation schema view that displays the source of a query plan. -
Added the
CONFIGcolumn to theLINKSinformation schema view to display connection link configurations in JSON format. -
Added the
ACTIVITY_column the specifies the ID that can be used to identify the activities associated with a session to theTRACKING_ ID MV_,ACTIVITIES MV_,ACTIVITIES_ CUMULATIVE MV_, andACTIVITIES_ EXTENDED MV_information schema views.ACTIVITIES_ EXTENDED_ CUMLATIVE
-
MV_: Provides visibility into active metadata transaction read versions.ACTIVE_ METADATA_ VERSIONS -
MV_.GC_ EVENTS Provides visibility into garbage collection passes. This view is gated behind the preview feature and engine variable enable_ gc_ events. -
Added
ATTACH DATABASE,DETACH DATABASE,CREATE DATABASE, andDROP DATABASEtoMV_information schema view.EVENTS -
Added the
INDEX_column to theNAME VECTOR_information schema view.INDEX -
Added the
FUNCTION_column to theNAME MV_information schema view.PROCESSLIST When a query is invoked from a stored procedure, this column will display the stored procedure name. -
Increased the
MV_timeout from 60 seconds to 180 seconds.BT -
Added a new
BLOB_column forCOMPUTE_ ID COLUMNAR_andSEGMENTS MV_information schema views.COLUMSTORE_ FILES -
source_is now included as part of thetype config_in thejson PIPELINESinformation schema view.
Updates to existing information schema views:
-
Added information on projections to the
COLUMNAR_,SEGMENTS COLUMNS,MV_,COLUMNAR_ SEGMENT_ INDEX MV_,COLUMNSTORE_ FILES TABLES,JSON_,COLUMN_ SCHEMA MV_,COLUMNSTORE_ MERGE_ STATUS STATISTICS,TABLE_, andCONSTRAINTS OPTIMIZER_information schema views.STATISTICS
Bug Fixes
-
Fixed a crash when
REDUCE()containedREDUCE_by disabling query rewrite.VALUE() -
Fixed an issue where the security built-in functions like
CURRENT_andSECURITY_ ROLES() CURRENT_returned incorrect results when used within aSECURITY_ GROUPS() CREATE TABLE AS SELECTstatement. -
Fixed an issue where the
CHARACTER_column displayed incorrect character set in information schema views.SET_ NAME -
Fixed the row count for
SELECT INTO OUTFILEqueries withLIMITorOFFSETclause. -
Fixed an issue where
SHOW ROLESandSHOW GROUPSreturned empty results for users who had theSHOW METADATApermission but notGRANT. -
Fixed a concurrency issue between the
CREATE DATABASEcommand and automatic MA failover. -
Fixed a crash in specific
INTERSECTorEXCEPTquery shapes. -
Fixed an issue where
CREATE DATABASEreturned an error even if it succeeded when there is a concurrent MA failover. -
Fixed a bug in specific nested set operation query shapes.
-
Fixed a crash when a query only contained aggregates in the
HAVINGclause for some query shapes. -
Fixed a crash that occurred when setting the
bottomless_engine variable during startup.plancache_ worker_ threads -
Fixed incorrect lockout on
GROUP_function withCONCAT ORDER BYclause for some query shapes. -
Fixed an issue with some query shapes where a lateral join is used in the same join block as a right join.
-
Fixed a race condition between query plan dropping and plan execution.
-
Fixed an unsafe asynchronous compile manager handle constructor signature.
-
Fixed a bug in the DPC gRPC handler.
-
Fixed an issue where creating a database with the same name as a recently dropped database fails following a MA failover, even if the command completes successfully.
-
Fixed a crash when a scalar subselect was used exclusively in the
WHEREclause when writing to a view. -
Fixed an issue with vending credentials in Iceberg pipelines.
-
Fixed stack overflow issue in
compile_andlite compile_interpreter modes.lite_ first -
Fixed a potential null pointer dereference.
-
Fixed a crash when dropping temporary tables.
-
Fixed an issue with subselect to join and complex join query rewrites.
-
Fixed an issue where FTS blobs were being incorrectly read from the blob cache during FTS index merging.
-
Fixed a possible crash when
MV_information schema view was called under heavy load scenarios.BT -
Fixed an issue where
LOAD DATAerrors did not show proper table names and skipped some errors. -
Fixed a bug to correctly lockdown query shapes containing a lateral join and table-valued function (TVF), which is not supported in SingleStore.
-
Fixed an issue that included the cluster ID twice (duplication) in DPC object path.
-
Fixed a crash during hot-path lookups.
-
Fixed an issue with table counts in Feedback Reoptimization.
-
Fixed the value of the
TYPEcolumn in theUSERSinformation schema view. -
Prevented a system crash when collecting a process' status for
MV_information schema view while the process is concurrently updating the same information.PROCESSLIST -
Fixed a TLS connectivity issue when using the .
NET connection pool. -
Fixed an issue where the
ADD AGGREGATORcommand failed for node IDs greater than 16384.
Last modified: March 19, 2026