# Maintenance Release Changelog v8.9

## 2026-05-27 Version 8.9.51

* **Bugfix**: Fixed a crash when writing to a view if the column names are cased differently from the column name in the view definition.
* **Bugfix**: Fixed incorrect results for correlated `EXISTS` subqueries that contain `TABLE(SPLIT)`.

## 2026-05-18 Version 8.9.50

* **Enhancement**: Updated the `KILLED_QUERIES` counter in Resource Governor pools to include queries terminated due to exceeding `QUERY_MEMORY_PERCENTAGE`.
* **Enhancement**: Upgraded `librdkafka` to version 2.13.2.
* **Enhancement**: Updated multiple dependencies and bundled components including the Go toolchain, Apache Thrift Go module, Netty, PostgreSQL, and OpenJDK JRE, to address security vulnerabilities.
* **Bugfix**: Fixed a bug where an optimization on `GROUP BY` fields was incorrectly applied when grouping by a typecast expression.

## 2026-04-08 Version 8.9.49

> **📝 Note**: SingleStore versions 8.9.46, 8.9.47, and 8.9.48 have been deprecated due to an issue with `JSON_EXTRACT_BIGINT`. Refer to the Known Issues section in each version's release notes for more information. If you are currently running any of these versions, SingleStore recommends upgrading to version 8.9.49 or later.

* **Bugfix**: Reverted a change to the `JSON_EXTRACT_BIGINT` function that could cause incorrect results or system crashes.

## 2026-04-01 Version 8.9.48

**Note:** This version has been deprecated due to an issue with `JSON_EXTRACT_BIGINT`. Refer to Known Issues for more information. For clusters running this version, SingleStore recommends upgrading to version 8.9.49 or later.

* **Enhancement**: Improved join selectivity estimation for predicates of the form `col1 = IFNULL(col2, col3)` by leveraging column cardinality statistics.
* **Enhancement**: Updated the `MV_COLUMNAR_SEGMENT_INDEX` information schema view to return the correct `INDEX_NAME` for multi-value hash indexes on JSON/BSON columns enabling accurate per-index size reporting.
* **Enhancement**: Added the ability to avoid group by placement rewrites when grouped tables have no join predicates, improving query plan stability for multi-table aggregates.
* **Bugfix**: Fixed an issue where regular expression patterns with character ranges ending in 0xFF could cause queries to hang.
* **Bugfix**: Fixed an issue that caused duplicate repartition on join between derived table and reference table.
* **Known Issue**: Queries using the `JSON_EXTRACT_BIGINT` function may cause incorrect results or system crashes. If your workload uses `JSON_EXTRACT_BIGINT`, do not upgrade to this version. If you have already upgraded to this version, upgrade to 8.9.49, which contains a fix.

  Workloads that do not use `JSON_EXTRACT_BIGINT` are not affected. The issue is triggered by the use of `JSON_EXTRACT_BIGINT` in `GROUP BY`, aggregation, and `WHERE` expressions on columnstore tables, especially with JSON booleans. As a workaround, change `JSON_EXTRACT_BIGINT(<column>, <field>)` to `JSON_EXTRACT_JSON(<column>, <field>) :> BIGINT` or `JSON_EXTRACT_JSON(<column>, <field>) = ‘true’` to avoid the problem.

## 2026-02-24 Version 8.9.47

**Note:** This version has been deprecated due to an issue with `JSON_EXTRACT_BIGINT`. Refer to Known Issues for more information. For clusters running this version, SingleStore recommends upgrading to version 8.9.49 or later.

* **Bugfix**: Fixed an issue where the system allowed creation of semantically identical multi-value indexes on the same column or JSON path.
* **Bugfix**: Fixed an issue where `json_collation` was not synchronized with `character_set_server` after upgrading from version 8.5 or earlier to version 8.7 or later.
* **Known Issue**: Queries using the `JSON_EXTRACT_BIGINT` function may cause incorrect results or system crashes. If your workload uses `JSON_EXTRACT_BIGINT`, do not upgrade to this version. If you have already upgraded to this version, upgrade to 8.9.49, which contains a fix.

  Workloads that do not use `JSON_EXTRACT_BIGINT` are not affected. The issue is triggered by the use of `JSON_EXTRACT_BIGINT` in `GROUP BY`, aggregation, and `WHERE` expressions on columnstore tables, especially with JSON booleans. As a workaround, change `JSON_EXTRACT_BIGINT(<column>, <field>)` to `JSON_EXTRACT_JSON(<column>, <field>) :> BIGINT` or `JSON_EXTRACT_JSON(<column>, <field>) = ‘true’` to avoid the problem.

## 2026-02-12 Version 8.9.46

**Note:** This version has been deprecated due to an issue with `JSON_EXTRACT_BIGINT`. Refer to Known Issues for more information. For clusters running this version, SingleStore recommends upgrading to version 8.9.49 or later.

* **Enhancement**: Added the `FUNCTION_NAME` column to the `MV_PROCESSLIST` information schema view to indicate when a query is invoked from a stored procedure and to display the stored procedure's name.
* **Enhancement**: Improved performance for JSON integer and boolean extraction using `JSON_EXTRACT_BIGINT()`. The engine now operates on the encoded representation avoiding full JSON decoding; it decodes only needed values speeding up filters, grouping, and aggregates.
* **Bugfix**: Added functionality to allow the engine to temporarily revert to prior memory tracking behavior which did not track result table memory.
* **Bugfix**: Fixed a crash in `PERCENTILE_CONT()` that occured when the function was used with `ORDER BY` on a constant value.
* **Bugfix**: Fixed an issue that returned incorrect results when security built-in functions like `CURRENT_SECURITY_ROLES()` and `CURRENT_SECURITY_GROUPS()` were used in a `CREATE TABLE AS SELECT (CTAS)` statement.
* **Known Issue**: Queries using the `JSON_EXTRACT_BIGINT` function may cause incorrect results or system crashes. If your workload uses `JSON_EXTRACT_BIGINT`, do not upgrade to this version. If you have already upgraded to this version, upgrade to 8.9.49, which contains a fix.

  Workloads that do not use `JSON_EXTRACT_BIGINT` are not affected. The issue is triggered by the use of `JSON_EXTRACT_BIGINT` in `GROUP BY`, aggregation, and `WHERE` expressions on columnstore tables, especially with JSON booleans. As a workaround, change `JSON_EXTRACT_BIGINT(<column>, <field>)` to `JSON_EXTRACT_JSON(<column>, <field>) :> BIGINT` or `JSON_EXTRACT_JSON(<column>, <field>) = ‘true’` to avoid the problem.

## 2026-01-27 Version 8.9.45

* **Enhancement**: Introduced background IO submission thread for sync durability and batching multiple IO requests.
* **Enhancement**: Disabled prewritten ingest transformations by default.

## 2025-12-23 Version 8.9.44

* **Enhancement**: Improved stored procedure exception handling to display full callstacks when using nested `RAISE` statements.
* **Enhancement**: Improved stored procedure exception handling to preserve and display the original error line number when an exception is re-raised using the `RAISE` statement.
* **Bugfix**: Fixed a crash when pipelines insert data into writable views.
* **Bugfix**: Fixed a bug that caused stack overflow errors when executing complex queries with multiple joins in `compile_lite` and `compile_lite_first` interpreter mode.
* **Bugfix**: Fixed an internal query conversion issue that caused a mismatch in vector join decisions between the aggregator and leaf nodes.
* **Bugfix**: Updated Golang dependencies to address known Common Vulnerabilities and Exposures (CVEs) in container images and related components.

## 2025-12-17 Version 8.9.43

* **Enhancement**: Disabled `critical_diagnostics` by default.
* **Bugfix**: Fixed double accounting of memory via buffer allocators (`Alloc_spill`, `Alloc_arena`). Now, if memory is used from cache memory, total server memory remains unused.
* **Bugfix**: Fixed a bug that caused a crash when a built-in Table-Valued Function (TVF) table is joined with a table with a join condition involving `JSON_ARRAY_CONTAINS_<type>`.

## 2025-12-11 Version 8.9.42

* **Bugfix**: Fixed a Common Table Expression (CTE) preprocessing bug involving nested CTEs within `INTERSECT` and `EXCEPT` queries.

## 2025-11-26 Version 8.9.41

* **Enhancement**: Added the ability for the orderby self join rewrite to skip heuristic checks when full JSON documents are projected.
* **Bugfix**: Fixed a stack corruption bug exposed in very large queries.
* **Bugfix**: Fixed an issue where `Alloc_spill` memory was not following Resource Governor memory limits.
* **Bugfix**: Fixed Netty and OpenJDK Common Vulnerabilities and Exposures (CVEs).
* `Bugfix`: Fixed affected row count for `SELECT .. FROM .. into FS/S3 ...` queries when row count is greater than 32-bit integer limits.

## 2025-11-13 Version 8.9.40

* **Bugfix**: Fixed vector index and search to use internal memory allocator instead of malloc.
* **Bugfix**: Fixed an issue in `ORDER BY` self-Join rewrite.

## 2025-11-04 Version 8.9.39

* **Enhancement**: Added an optimizer rewrite to push `LIMIT`s below external User Defined Functions (UDFs). This optimization can be turned off with the engine variable: `optimizer_disable_limit_pushdown_below_external_udf`.
* **Enhancement**: Limited the vector index cache size to keep it from getting to close to the maximum server memory.
* **Enhancement**: Added `source_type` to the `config_json` shown in the `information_schema.PIPELINES view`.
* **Enhancement**: Improved phonehome security by adding remote endpoint verification.
* **Enhancement**: Upgraded the Almalinux version to Almalinux 10.
* **Bugfix**: Resolved a crash that could occur when `TABLE(<constant>)` function appeared inside a subquery that was part of an `OR` or `AND` condition (for example nested `IN` and `EXISTS` clauses).
* **Bugfix**: Disabled the optimize JSON computed column feature.
* **Bugfix**: Fixed `RESTORE DATABASE` in highly-available master aggregator deployments.
* **Bugfix**: Fixed an issue where `information_schema.MV_CLUSTER_STATUS` queries would be recursively forwarded to the master aggregator.
* **Bugfix**: Fixed an issue where unsuccessful distributed transactions could lead to increased memory usage on aggregators.
* **Bugfix**: Fixed an unchecked division when plan module eviction is triggered with no evictable plans.

## 2025-10-16 Version 8.9.38

* **Enhancement**: Added collection of enhanced query stats from kill query Recursive Common Table Expressions (RCTE) writer statistics and sorted iterator error cases.
* **Enhancement**: Added Unix timestamp versions of `start_time` and `event_time` fields in event trace samples exposed by monitoring exporter.
* **Enhancement**: Modified ingestion to skip `NULL` records while using `SKIP ALL ERRORS` and `SKIP PARSER ERRORS` in Kafka pipelines.
* **Enhancement**: Improved error handling for regular expressions: errors are now properly raised instead of returning SQL-NULL. The `regexp_error_handling_level` engine variable was added; this variable controls the behaviour of error handling for regexp operations.
* **Enhancement**: Added a new `BLOB_COMPUTE_ID` column for `COLUMNAR_SEGMENTS` and `MV_COLUMSTORE_FILES` information schema views.
* **Enhancement**: Added a new column `MEMORY_USAGE_BYTES` to `LMV_RESOURCE_POOL_STATUS` and `MV_RESOURCE_POOL_STATUS` information schema views.

* **Bugfix**: Resolved an issue where the regular expression engine would return SQL-NULL when hitting the memory limit during execution. It now raises an appropriate error instead.
* **Bugfix**: Fixed an issue that caused a stalled cluster in the presence of many concurrent `DROP TEMPORARY TABLE` commands.
* **Bugfix**: Fixed memory tracking for some queries which were not being tracked properly, result tables to be specific.

## 2025-09-24 Version 8.9.37

* **Enhancement**: Added the ability to ignore join selectivity estimates of zero.
* **Bugfix**: Fixed a case where long running background work was blocking in-memory garbage collection of database metadata.
* **Bugfix**: Fixed a memory allocation bug during query compilation.
* **Bugfix**: Fixed a bug where large queries can crash the engine in `compile_lite` and `compile_lite_first` interpreter modes.
* **Bugfix**: Fixed stack overflows in `compile_lite` and `compile_lite_first` interpreter mode.
* **Bugfix**: Fixed a bug with some `NOT IN` subselect query shapes.
* **Bugfix**: Limited the number of retries on plan compilation errors; this fix limits resource usage.
* **Bugfix**: Fixed a deadlock in result table creation during reshuffle with the always-false filter.

## 2025-09-11 Version 8.9.36

* **Enhancement**: Enabled using the estimated table row count as default column cardinality for better join estimation. Added session variable `optimizer_max_table_row_count_as_default_cardinality` which controls the maximum estimated table row count to be used as the per column cardinality.
* **Enhancement**: Manually register the path to the Java 11 library. This path is set with the `java_pipelines_java11_path` engine variable.
* **Bugfix**: Fixed a bug in the detection of shard key matches in the window function partition by list.
* **Bugfix**: Fixed using delimited batch sets with JSON format.
* **Bugfix**: Fixed an issue where the `ALTER TABLE` command could hang and become unkillable due to a type conversion error occurring during the alter operation.

## 2025-08-29 Version 8.9.35

* **Enhancement**: Removed the `CAST` operator if a redundant cast is performed.
* **Enhancement**: Changed the approach for delimited batch sets. Delimited batch sets now return and accept original rowIDs.
* **Enhancement**: Added a `suppress_dml_warnings` global engine variable to suppress all DML query warnings.
* **Enhancement**: Added `ATTACH DATABASE`, `DETACH DATABASE`, `CREATE DATABASE`, and `DROP DATABASE` to `information_schema.MV_EVENTS`.
* **Enhancement**: Added support for metadata garbage collection for Azure pipelines.
* **Enhancement**: Added the `managed_functions_max_connections` engine variable which specifies the maximum number of HTTP connections per node for managed external functions, such as Python User Defined Function (UDF)s.
* **Bugfix**: Fixed an error in backup subprocess and enhanced subprocess tracing to use structured logging.
* **Bugfix**: Fixed a crash when BM25 in a subselect references a table from the outer select.
* **Bugfix**: Fixed an issue where certain commands (e.g. `DROP TABLE`) could hang due to aborted queries caused by stuck Collocated Services triggered by External Functions.
* **Bugfix**: Fixed performance regression for queries involving JSON (like `JSON_EXTRACT_<type>` builtins).

## 2025-08-05 Version 8.9.34

* **Enhancement**: Added knob to disable cardinality estimates on JSON/BSON columns during analyze.
* **Bugfix**: Fixed query performance issue caused by heuristic estimate selectivity being overwritten.
* **Bugfix**: Updated third party libraries to fix security vulnerabilities.
* **Bugfix**: Fixed an issue where monitoring pipelines would sometimes fail to produce data for large source clusters.
* **Bugfix**: Fixed row count estimation for union subquery containing Materialized Common Table Expression(MCTE)s.

## 2025-08-05 Version 8.9.33

* **Bugfix**: Updated third party libraries to fix security vulnerabilities.

## 2025-07-28 Version 8.9.31

* **Enhancement**: Added support for fully enclosed optimization on nullable columns and segment elimination on `IS NULL` filter.
* **Enhancement**: Added the `MV_ACTIVE_METADATA_VERSIONS` information schema view that provides visbiility into active metadata transaction read versions.
* **Enhancement**: Added the `MV_GC_EVENTS` information schema view that provides visibility into garbage collection passes. This view is gated behind the preview feature and engine variable `enable_gc_events`.
* **Bugfix**: Fixed incorrect results in an `ORDER BY <sort key> LIMIT` query, caused by an issue where rows with null values in the sort key may be skipped.
* **Bugfix**: Fixed incorrect aggregation of leaf query stats in Query\_completion tracing.

## 2025-07-02 Version 8.9.29

* **Enhancement**: Updated the bundled OpenSSL version to 3.1.2.
* **Bugfix**: Fixed results for `NOT IN` subselects when the left input table has `NULL` values.
* **Bugfix**: Bumped the \_bt timeout from 60 seconds to 180 seconds.
* **Bugfix**: Fixed logic for `NOT IN` subselects when nested under `OR`s.
* **Bugfix**: Fix correctness when using `NOT IN` for some query shapes.

## 2025-06-24 Version 8.9.28

* **Enhancement**: Added Lucene logs to the cluster report.
* **Bugfix**: Fixed a bug in lateral join.

## 2025-06-18 Version 8.9.27

* **Bugfix**: Fixed the predicate pushdown logic for materialized common table expressions.
* **Bugfix**: Fixed an issue where periodic autostats was disabled when it should not have been.

## 2025-06-13 Version 8.9.26

* **Bugfix:** Fixed crash in lockfree hashtable when engine is under high memory pressure. Report out of memory error instead.

## 2025-06-09 Version 8.9.25

* **Enhancement**: Users with database visibility can now query the `*_BOTTOMLESS_*` information schema views in the respective database. `CLUSTER` permissions are no longer enforced for querying these views.
* **Enhancement**: Improved the error message for parameter count mismatch during query parsing.
* **Enhancement**: Disabled segment elimination for `IN` clauses for which the left-hand expression is not a table column.
* **Bugfix**: Fixed a leak in a rare scenario.
* **Bugfix**: Fixed the `ER_BAD_TABLE_ERROR` error on `UPDATE` or `DELETE` queries with a specific shape.
* **Bugfix**: Fixed a crash in a shallow copy of a table with a pending `ALTER` operation.
* **Bugfix**: Fixed a bug in CTE query rewrites.
* **Bugfix**: Fixed a potential replay failure on a table that uses full-text version 2.
* **Bugfix**: Fixed an issue where `IN`-list factorization did not work with newline characters around the `IN`-list.

## 2025-05-21 Version 8.9.24

* **Enhancement**: Extended a rewrite to allow merging derived tables with json functions.
* **Enhancement**: Changed the default blob cache size to 75% of the total disk for small disk config.
* **Enhancement**: Enabled rewriting correlated subselects that depend on more than one outer table with conditions other than equality.
* **Enhancement**: Prevented the destination table from being replaced by projection on update or delete.
* **Enhancement**: Renamed GIN index to Multi-Value Hash Index. GIN keyword deprecated.
* **Bugfix**: Fixed a bug that caused filter-aware optimizations to not be applied above MCTE when involved in hash joins.
* **Bugfix**: Fixed a bug that occurred when CTEs are rewritten.

## 2025-05-13 Version 8.9.23

* **Enhancement:** Enable the use of the `MATCH_ANY` tokenizer option with underscores in GIN index settings.
* **Enhancement:** Added support for parameterized `IN`-lists in BSON GIN index optimization enabling improved performance for queries with same-type constant literals and one-argument built-in expressions. Previously limited to hex literals.
* **Enhancement**: New variables (Note, these should only be set with guidance from SingleStore):

  * `repl_page_desc_limit_before_stall` : limits the number of page descriptors in the page map that a 'ReplLog' can use before stalling new txs. See 'ReplLog::StallForPageMap'. The default 256K page desciptor limit means the hash table will not have load greater than 4.
  * `repl_io_buffer_limit`: limits the number of IO buffers that a 'ReplLog' can use before stalling new txs. See 'ReplLog::StallForPageMap'. 128 IO buffers is 16MB since each IO buffer is 128K.
  * `[dr_]repl_network_buffer_size`: replication tries to set both send and receive buffer sizes to reduce waits on TCP ack packets. 8MB is a sane battle-tested value. Can be set for both DR and non-DR replicas.
  * `[dr_]repl_max_chunk_size`: when sending logs or snapshots to a replica limits chunk size to this value. Too long of a chunk increases the chance of timeout waiting for the replica's response packet (since the replica must process the entire chunk before acking). This defaults to 8MB - a sane limit chunk size to this value. Maximum value is 1GB and it must be divisible by 128kb so it is a multiple of io buffer size. Can be set for both dr and non-DR replicas.
* **BugFix**: Fixed resource pool and workload management CPU limiting.
* **BugFix**: Fixed an isue to use full table scan instead of vector index scan if enough rows are not produced.
* **BugFix**: Fixed a wrong results bug in `JSON_TO_ARRAY`() join queries where the quotes on strings were incorrectly removed.
* **BugFix**: Fixed a rare deadlock involving temp tables.

## 2025-05-06 Version 8.9.22

* **Enhancement**: Added more metrics to the views, `MV_CLOUD_PER_COMPUTE_REMOTE_STATS` and `MV_CLOUD_REMOTE_STATS`, for tracking of retention log chunks and snapshots.
* **Enhancement**: Added support for stopwords `token_filter` for custom analyzers for FTS VERSION 2.
* **BugFix**: Fixed invalid optree from rewrite on union queries matching a very specific shape.

## 2025-04-30 Version 8.9.21

* **Enhancement**: Added estimates for query memory usage based on static row count and row size estimates to improve Workload Manager (WM) memory management.
* **Enhancement**: Added support to the GIN Index for BSON for expressions, built-in functions, user-defined variables (UDVs), and typecasting. User-defined functions (UDFs) and non-deterministic built-in functions, such as rand(), remain unsupported.
* **Bugfix**: Fixed an issue that could lead to undefined behavior when a node failed concurrently with the computation of the replication distribution tree.
* **Bugfix**: Fixed a `NULL` value inline bug by adding typecast operations above the referencing field.
* **Bugfix**: Fixed an issue where a node that had not been upgraded could trigger undefined behavior if the node's `processlist` was queried while the node was processing an internal RPC.

## 2025-04-22 Version 8.9.20

* **Enhancement**: Added a `KILL` option for the `DETACH DATABASE` command.

## 2025-04-14 Version 8.9.19

> **⚠️ Warning**: On account of how logs are now captured in SingleStore versions 8.9.19 and later, the following are not supported:- Downgrading from SingleStore versions 8.9.19 and later to SingleStore versions 8.9.18 and earlier
> - Restoring backups from SingleStore versions 8.9.19 and later to SingleStore versions 8.9.18 and earlier

* **Enhancement**: Improved optimization speed of parameterized `IN`-lists by limiting traversal depth.
* **Enhancement**: Added support for delimited batch sets in external functions.
* **Enhancement**: High Availability for the Master Aggregator (HA for MA) is now enabled exclusively for Enterprise edition.
* **Enhancement**: `OPTIMIZE TABLE ... INDEX` is now more responsive to `KILL QUERY` statements.
* **Bugfix**: Fixed a bug that caused `DROP DATABASE` to hang in a rare condition.
* **Bugfix**: Fixed an issue that returned wrong results in pipelines in a rare race condition.
* **Bugfix**: Fixed an issue that caused a crash when a query referenced too many tables.
* **Bugfix**: Changed options for loading libpam.so.
* **Bugfix**: Fixed a race condition that caused `DETACH DATABASE` to hang.
* **Bugfix**: Fixed a buffer overflow issue that occurred while de-parameterizing a multi-column `IN`-list filter.
* **Bugfix**: Fixed an issue to prevent LRU eviction from stalling when several table modules are stale.
* **Bugfix**: Fixed a bug in `JSON_TO_ARRAY()` join pushdown optimization that occurred when the JSON value being extracted from `table_col` is a JSON array.
* **Bugfix**: Disabled vector range search filter during `JOIN`s to avoid an engine crash.

## 2025-04-01 Version 8.9.18

* **Enhancement**: General improvements and optimizations for `CHECK BOTTOMLESS CHECKSUM` command.
* **Enhancement**: Added support for JSON arrays in pipelines loading JSON files. Each JSON record in the array is loaded as a separate row.
* **Bugfix**: Fixed `ALTER RESOURCE POOL` to respect queue depth constraints.
* **Bugfix**: Fixed a bug that produced incorrect results when performing a hash join with a condition that compares mismatched types where one of the types is BSON.
* **Bugfix**: Fixed a crash caused by libgcc btree bug.
* **Bugfix**: Reduced contention on a global lock controlling modules, affecting code loading and unwinding of exceptions.
* **Bugfix**: Removed garbage collection from cleaning up arrangements when such garbage collection is already in process.

## 2025-03-26 Version 8.9.17

* **Bugfix**: Fixed an issue impacting creating or altering a resource pool with a CPU percentage limitation after a MA failover.

## 2025-03-23 Version 8.9.16

* **Bugfix**: Fixed CTE subselect to join preprocessing in the `INTERSECT`/`EXCEPT` CTE case.
* **Enhancement**: Added an engine variable `optimizer_disable_subselect_to_join_cte_preprocess` which can be used to disable the subselect to join rewrite for CTE preprocessing before inlining or materialization.

## 2025-03-19 Version 8.9.15

* **Bugfix**: Reserved memory space for `segment_id` in the pseudo column's MemoryFile.
* **Bugfix**: Fixed a bug that occurred when a query used `I0` as a column name.
* **Bugfix**: Fixed a crash that was due to an issue with the rewrite that merges union queries.
* **Enhancement**: Added an engine variable `optimizer_enable_merge_unioned_queries_rewrite` which can be used to enable or disable the rewrite that merges union queries. This variable is `ON` by default.

## 2025-03-19 Version 8.9.14

* **Enhancement**: Added support for the `LIMIT` clause in prepared statements.
* **Enhancement**: Added an option to run queries that failed asynchronous compilation, allowing users to introspect the compilation results.
* **Bugfix**: Fixed an issue to prevent a crash when `JSON_TO_ARRAY` optimization is run against non-nullable JSON columns.

## 2025-03-11 Version 8.9.13

* **Enhancement**: Added aggregator activity stats in `Query_completion` event tracing. Refer to [Query History](https://docs.singlestore.com/db/v9.1/query-data/query-tuning/query-history.md) for details.
* **Enhancement**: Added the ability for a user to change the login password when the variable `password_expiration_mode` is set to LIMITED\_ACCESS. Now the user is allowed to login even after the password expires but can only execute commands that update the password such as `ALTER USER` or `SET PASSWORD`.
* **Enhancement**: Added a password expiry warning message that is raised each time the user executes a query. This warning starts appearing 14 days before the password actually expires.
* **Enhancement**: Added auditlogging mode for only the root user. It is a startup-only variable similar to other audit logging configuration variables and should be set along with the `auditlog_level`.
* **Bugfix**: Fixed a bug that caused a node to crash when the variable `ignore_foreign_keys` is `ON` and the `ALTER TABLE` command is used to add a foreign key.
* **Bugfix**: Changed the output projection DDL to `CREATE PROJECTION`  instead of `CREATE TABLE _$_table_name_$ _` in debug profile.
* **Bugfix**: Fixed an issue where DDL statements that were concurrent with PROMOTE AGGREGATOR TO MASTER did not get forwarded to the new Master Aggregator.
* **Bugfix**: Fixed a bug to prevent a crash when using FTS v2 with CTE.

## 2025-03-05 Version 8.9.12

* **Bugfix**: Fixed a bug that caused incorrect results when running `INFER PIPELINE CSV`.
* **Bugfix**: Fixed a rare deadlock occurring when DETACH DATABASE is run.

## 2025-02-25 Version 8.9.11

* **Enhancement**: Added an engine variable `disk_plan_gc_pause_seconds_on_startup` that disables disk plan garbage collection on startup. This variable prevents hot plans from being unintentionally disk garbage collected.
* **Enhancement**: Added an internal allocator `Alloc_connection_context` which tracks certain per-connection allocations that were previously tracked using the standard allocator.
* **Bugfix**: Fixed a crash that occurred when aggregator functions are used with `VECTOR` type data inside other built-ins.
* **Bugfix**: Fixed the `userDictionary` parameter for the korean full-text tokenizer.

## 2025-02-11 Version 8.9.10

* **Enhancement**: Added a vector index cache to limit the amount of memory used by vector indexes. Refer to [Vector Indexing](https://docs.singlestore.com/db/v9.1/reference/sql-reference/vector-functions/vector-indexing.md) for details.
* **Enhancement**: Extended the [VECTOR\_SUM](https://docs.singlestore.com/db/v9.1/reference/sql-reference/vector-functions/vector-sum.md) aggregate function to support the `VECTOR` data type.
* **Enhancement**: Computed column definitions now support the `SPLIT` function.
* **Enhancement**: The `DROP` and `ALTER TABLE` commands no longer have to wait for the plan garbage collector.
* **Bugfix**: Fixed a crash occurring when a table-valued function (TVF) column is used in a `WHERE` clause without a wrapping `JSON_EXTRACT` function in a `TABLE(JSON_TO_ARRAY())` join.
* **Bugfix**: Fixed a bug that caused CDC-in pipelines to fail while inferring the table schema, with the "Failed to allocate slot in the extractor pool" error.
* **Bugfix**: Fixed a deadlock between `ALTER` and failover in a rare race condition.
* **Bugfix**: Fixed a critical issue where clusters were failing to connect to AWS remote storage due to CURL request timeouts.
* **Bugfix**: Fixed a bug where a CDC pipeline gets stuck while waiting for data.

## 2025-02-04 Version 8.9.9

* **Bugfix**: Fixed a bug that prevented proper error handling on socket timeout.
* **Bugfix**: Fixed a bug in `JSON_ARRAY_CONTAINS_STRING` query rewrite for query shapes with the `LIMIT` clause.
* **Bugfix**: Fixed support for plan pinning in `IN` list factorization.

## 2025-01-28 Version 8.9.8

* **Enhancement**: Improved pipeline error clearing. Additional errors are cleared when `CLEAR PIPELINES ERRORS` is run or when the `pipelines_errors_retention_minutes` limit is reached.
* **Enhancement**: Added a new engine variable `scheduler_slow_loop_seconds` that specifies the threshold for triggering the verbose logging of scheduler thread timing.
* **Enhancement**: Added a new engine variable `scheduler_slow_ready_queue_seconds` that specifies the threshold for triggering logging of slow ready queue draining.
* **Bugfix**: Fixed a bug in lateral join to preserve projection field aliases for lateral join subselects.

## 2025-01-14 Version 8.9.7

* **Enhancement**: Improve behavior of garbage collection for plancache.
* **Bugfix**: Fixed a bug caused by using a (cross-segment) vector index ([Vector Indexing](https://docs.singlestore.com/db/v9.1/reference/sql-reference/vector-functions/vector-indexing/#section-idm234571614690074.md)) with null vectors. Users on prior 8.9 versions will need to recreate (drop and add) vector indexes for this fix to be effective as the cross-segment indexes are built in the background.

## 2025-01-12 Version 8.9.6

* **Bugfix**: Fixes a data-dependent crash condition occurring in certain `TABLE(JSON_TO_ARRAY(...` joins introduced in version 8.9.

## 2025-01-07 Version 8.9.5

* **Enhancement**: Added new nori (Korean) analyzer customizations for Full-Text Search V2.
* **Enhancement**: Added support for updated Standard and Enterprise licenses.
* **Enhancement**: Added logging for LRU compiled unit eviction.
* **Enhancement**: Fixed out of memory (OOM) errors and extra memory usage in Iceberg ingest. Introduced global engine variable `pipelines_iceberg_data_workers_heap_size` to control memory consumption on leaves.
* **Enhancement**: Introduced new [JSON\_BUILD\_ARRAY](https://docs.singlestore.com/db/v9.1/reference/sql-reference/json-functions/json-build-array.md) function.
* **Enhancement**: Introduced support for placeholders for partition ID and timestamp in the `SELECT INTO ... file name` command.
* **Bugfix**: Fixed a bug causing accumulation of .rem files on disk.
* **Bugfix**: Fixed a small memory bug in columnstore scans that use the `JSON_TO_ARRAY` join optimization.

## 2024-12-17 Version 8.9.4

* **Bugfix**: Fixed a crash in `JSON_EXTRACT_STRING`.
* **Bugfix**: Fixed a bug with updates and asserts using `JSON_ARRAY_CONTAINS_<type>` predicates.
* **Bugfix**: Fixed bottomless upload throttling criteria.
* **Bugfix**: Blocked creation of temporary table as a shallow copy.
* **Bugfix**: Resolved an issue where an in-development subsystem can leak files on disk

## 2024-12-12 Version 8.9.3

* **Enhancement**: Added Korean language analyzer for full-text search V2.
* **Enhancement**: Added support to infer CSV files with a single column when the file contains no field terminators in any record.
* **Enhancement**: Relaxed dependency on partition count of leaf nodes for leaf plans.
* **Bugfix**: Fixed handling of heartbeat messages in the MongoDB® extractor in debug mode.
* **Bugfix**: Fixed display of default BSON and string values with null-terminators in the information schema.
* **Bugfix**: Removed trailing dot for decimal column types that have scale equal to 0.
* **Bugfix**: Fixed `IN`-list index matching for columnstore tables when a query has multiple `IN`-list predicates.
* **Bugfix**: Fixed a bug that caused an invalid optree error after the `JsonArrayContainsToTableBuiltin` rewrite.

## 2024-11-27 Version 8.9.2

* **Bugfix**: Fixed a crash that occurred during spilling when executing a query with a large number of `GROUP BY` columns.
* **Bugfix**: Fixed performance regression in Vector Search when using `DOT_PRODUCT` metric.
* **Bugfix**: Added an optional 'swap\_time' argument to `UUID_TO_BIN` and `BIN_TO_UUID` functions.
* **Bugfix**: Allowed cached table memory to be freed for empty tables in replica databases.
* **Bugfix**: Fixed a lateral join parsing bug.

***

Modified at: May 27, 2026

Source: [/db/v9.1/release-notes/singlestore-memsql/8-9-release-notes/maintenance-release-changelog-v-8-9/](https://docs.singlestore.com/db/v9.1/release-notes/singlestore-memsql/8-9-release-notes/maintenance-release-changelog-v-8-9/)

(An index of the documentation is available at /llms.txt)
