# 8.1 Release Notes

> **📝 Note**: - To deploy a SingleStore 8.1 cluster, refer to the [Deploy SingleStore Guide](https://docs.singlestore.com/db/v9.1/deploy.md).
> - To make a backup of a database in this release or to restore a database backup to this release, follow [this guide](https://docs.singlestore.com/db/v9.1/manage-data/back-up-and-restore-data.md).
> - The [data\_conversion\_compatibility\_level](https://docs.singlestore.com/db/v9.1/reference/configuration-reference/engine-variables/list-of-engine-variables/#sync-variables-lists-10.md) engine variable now defaults to `'8.0'` in new installations. This results in stricter [data type conversions](https://docs.singlestore.com/db/v9.1/create-a-database/understanding-how-datatype-can-affect-performance.md). The value is not changed when upgrading to version 8.0. This new `data_conversion_compatibility_level` setting additionally flags invalid string-to-number conversion in `INSERT` statements, `PIPELINES`, `LOAD DATA` commands, and type casts.
>
>   Applications will likely see more compatibility issues flagged when run against installations with `data_conversion_compatibility_level` set to `'8.0'` than when run with a lower compatibility level.
> - New deployments of SingleStore 8.1 require a 64-bit version of RHEL/AlmaLinux 7 or later, or Debian 8 or later, with kernel 3.10 or later and `glibc` 2.17 or later. Refer to the [System Requirements and Recommendations](https://docs.singlestore.com/db/v9.1/reference/configuration-reference/cluster-configuration/system-requirements-and-recommendations.md) for additional information.

## Release Highlights

> **📝 Note**: This is the complete list of new features and fixes in engine version 8.1 **and its maintenance patches**. For a list of all new features and bug fixes added in maintenance releases only, see the maintenance release changelog. If you are upgrading from an existing 8.1 version, see [the changelog](https://docs.singlestore.com/db/v9.1/release-notes/singlestore-memsql/8-1-release-notes/maintenance-release-changelog.md) for a list of new features and fixes added to 8.1 by date.

## Column Group Index

Introduced a [columnstore row](https://docs.singlestore.com/db/v9.1/create-a-database/columnstore/how-the-columnstore-works.md) index structure (`COLUMN GROUP`) that will create a materialized copy of individual rows as a separate structure in a columnstore table. This index is most useful for wide tables, and can speed up full-row retrieval and updates by 8x or more on tables with over 200 columns.

## Automatic Profiling

Added support for [query profiling](https://docs.singlestore.com/db/v9.1/query-data/query-tuning/query-performance-tools.md) that is efficient enough to be enabled all the time by introducing the `auto_profile_type` engine variable with `FULL` and `LITE` options for automatic profiling. The `enable_auto_profile` engine variable must be set to `ON` for the `FULL` or `LITE` options to work.

## Visual Explain via SHOW PROFILE UI and EXPLAIN

Using the `SHOW PROFILE UI` or `EXPLAIN UI` commands will generate a URL that, when opened, loads a visual representation of the query plan on the [Visual Explain](https://docs.singlestore.com/db/v9.1/query-data/query-tuning/singlestore-visual-explain.md) website.

## User ATTRIBUTE and COMMENT Fields

Added `ATTRIBUTE` and `COMMENT` fields for users. These can be set via the `CREATE USER` and `ALTER USER` commands. The values are shown in the `INFORMATION_SCHEMA.USERS` view. Example syntax:

```sql
CREATE USER 'user1'@'localhost' ATTRIBUTE '{"phone": "1234567890"}';

CREATE USER 'user1'@'localhost' COMMENT 'Some information about user1';

ALTER USER 'user1'@'localhost' ATTRIBUTE '{"phone": "1234567890"}';

ALTER USER 'user1'@'localhost' COMMENT 'some comment about user1';

ALTER USER 'user1'@'localhost' ATTRIBUTE '{"phone": "1234567890"}' COMMENT 'some comment about user1';

SELECT USER, ATTRIBUTE, COMMENT from INFORMATION_SCHEMA.USERS WHERE user='user1';

```

```output

+-------------+-------------------------+------------------------------+
| USER        | ATTRIBUTE               | COMMENT                      |
+-------------+-------------------------+------------------------------+
| user1       | {"phone": "1234567890"} | some information about user1 |
+-------------+-------------------------+------------------------------+

```

The value for `ATTRIBUTE` must be a valid JSON object. When setting both `ATTRIBUTE` and `COMMENT` in the same SQL statement, `ATTRIBUTE` must come first.

## Full-Text Search Is Now Supported on utf8mb4 Data

The updated full-text search tokenizer in version 8.1 supports utf8mb4. The tokenizer properly tokenizes emojis and other extended 4-byte characters. In addition, certain emoji and glyph characters in utf8mb3 are also recognized as their own token rather than being treated as blanks.

New full-text indexes will use the new tokenizer when created. For existing full-text indexes, you can leave them as they are, using the old tokenizer, or you can drop old/existing indexes (via `DROP INDEX` or `ALTER TABLE DROP INDEX`) and recreate them via the new [ALTER TABLE ADD FULLTEXT](https://docs.singlestore.com/db/v9.1/reference/sql-reference/data-definition-language-ddl/alter-table/#UUID-31aa9f78-b8e2-41a5-f261-a11de5d3e1b6.md) statement.

Other than adding proper support for emojis and extended characters, full-text search behavior using the new tokenizer is different from that of the previous tokenizer only in some rare edge cases. These are extremely unlikely to have any negative user impact.

## SASL OAUTHBEARER Authentication Mechanism

Added the ability to configure Simple Authentication and Security Layer (SASL) OAUTHBEARER for use with Kafka pipelines. OAuthBearer support in Kafka enables clients to authenticate with Kafka using OAuth 2.0 tokens. With OAuthBearer support in Kafka pipelines, clients can use an OAuth 2.0 access token to authenticate with Kafka brokers and perform operations such as producing and consuming messages.

## Trace Log Rotation Function

SingleStore now has a built-in trace log rotation function (added in version 8.1.25). This is separate from and mutually exclusive of any manual log rotation implementation already in place, so if you want to use the new function and already have a solution in place using `logrotate` or similar, you will need to disable that before enabling this new rotation feature.

The built-in trace log rotation feature can be configured to rotate logs based on their size or based on time. You can also, optionally, configure it to automatically delete logs after a specified number of days. The default, when the feature is enabled, is to never delete logs.

The new trace log rotation feature is disabled by default. See [Rotating Trace Log to Manage its Size](https://docs.singlestore.com/db/v9.1/reference/troubleshooting-reference/trace-log/rotate.md) for information on how to enable and configure the new rotation feature.

As a part of this new feature, added the following engine variables:

* `tracelog_rotation_size` - indicates the size threshold in bytes
* `tracelog_rotation_time` - indicates the time threshold in seconds
* `tracelog_retention_period` - indicates retention period in days

## Other Improvements and Fixes

## Other Performance Enhancements

* Enhanced workload management so that a medium-size query can be put in the large-query queue if there are free resources for large queries but the resources for medium-size queries are fully used. This can improve throughput when there are many medium-size queries and few large ones. See the [related discussion](https://docs.singlestore.com/db/v9.1/user-and-cluster-administration/use-the-workload-manager-and-set-resource-limits/use-the-workload-manager.md) of the new variable  `workload_management_queue_size_allow_upgrade`.
* Enhanced disk space manageability that allows controlled space sharing between column store blob cache and query spilling. Supports setting the maximum disk spilling space limit explicitly with a new engine variable `spilling_maximum_disk_percent`. Additional metrics in the [SHOW STATUS EXTENDED](https://docs.singlestore.com/db/v9.1/reference/sql-reference/show-commands/show-status-extended.md) output give details about the disk usage:

  * Disk\_spilling\_usage\_limit\_mb
  * Disk\_spilling\_usage\_mb
  * Disk\_spilling\_evict\_blob\_cache\_mb\_average
  * Disk\_spilling\_usage\_mb\_high\_water\_mark
  * Disk\_total\_size\_mb
  * Disk\_available\_size\_mb
  * Disk\_uncategorized\_usage\_mb
  * Blob\_cache\_max\_size\_mb\_adjusted\_for\_low\_disk
  * Blob\_cache\_max\_size\_mb\_adjusted\_for\_low\_disk\_and\_spilling

Query Optimization enhancements:

* Added support to optimize table scans with an Order-By-Limit by (a) do the order and limit first, with only the minimum needed columns, and then (b) using a self-join to retrieve the additional necessary columns for only the qualifying rows. This optimization can be enabled/disabled via the `optimizer_enable_orderby_limit_self_join` session variable, which is ON by default.
* Added a `METADATA_ONLY`[argument](https://docs.singlestore.com/db/v9.1/reference/sql-reference/data-definition-language-ddl/create-table.md) for shard keys which will prevent an index from being created on shard keys thereby saving memory. It can cause queries that would have used that index to run slower.
* Reduced the amount of memory used by autostats. This can be controlled via the `autostats_flush_interval_secs` engine variable.

## New Information Schema Views and Columns

* Added two Information Schema views for tracking connection attributes: [LMV\_CONNECTION\_ATTRIBUTES](https://docs.singlestore.com/db/v9.1/reference/information-schema-reference/query-performance-workload-management-and-statistics/lmv-connection-attributes.md) and [MV\_CONNECTION\_ATTRIBUTES](https://docs.singlestore.com/db/v9.1/reference/information-schema-reference/query-performance-workload-management-and-statistics/mv-connection-attributes.md).
* A new [WORKLOAD\_MANAGEMENT\_QUEUE](https://docs.singlestore.com/db/v9.1/reference/information-schema-reference/query-performance-workload-management-and-statistics/workload-management-queue.md) system table has been added which shows the list of queries for which the WM is not able to reserve resources and therefore has put them into the waiting queue.
* Added two Information Schema views for reporting the breakdown of disk utilization: [information\_schema.MV\_DATA\_DISK\_USAGE](https://docs.singlestore.com/db/v9.1/reference/information-schema-reference/management/mv-data-disk-usage.md) and [information\_schema.MV\_DISK\_USAGE](https://docs.singlestore.com/db/v9.1/reference/information-schema-reference/management/mv-disk-usage.md).

## New Commands and Functions

* Added the ability to add and drop FULLTEXT indexes via the `ALTER TABLE` and `DROP INDEX` commands. This allows simple addition or removal of full-text search capability without reloading data. A table can only have one FULLTEXT index. For example, with the following table:
  ```sql
  CREATE TABLE articles (
      id INT UNSIGNED,
      year int UNSIGNED,
      title VARCHAR(200),
      body TEXT,
      SORT KEY (id));
  ```
  Add a FULLTEXT index via:
  ```sql
  ALTER TABLE articles ADD FULLTEXT (title, body);
  ```
  To remove the index, use either of these commands:
  ```sql
  ALTER TABLE articles DROP INDEX title;

  DROP INDEX title ON articles;
  ```
  You cannot add and drop an index in a single `ALTER TABLE` statement.
* Added the ability to start only failed pipelines via the `START FAILED PIPELINES` command.
  ```sql
  START FAILED PIPELINES;
  ```
* Added the ability to [load Avro formatted data from an AWS S3 bucket](https://docs.singlestore.com/db/v9.1/reference/sql-reference/data-manipulation-language-dml/load-data/#section-idm4580319144742433635119437575.md) using LOAD DATA, which can be simpler than using pipelines.
  ```sql
  LOAD DATA S3 '<bucket name>'
  CONFIG '{"region" : "<region_name>"}' 
  CREDENTIALS '{"aws_access_key_id" : "<key_id> ", 
               "aws_secret_access_key": "<access_key>"}'
  INTO TABLE <table_name>
         (`<col_a>` <- %, 
   `<col_b>` <- % DEFAULT NULL , 
    ) FORMAT AVRO;
  ```
* Added the ability to [load Parquet formatted data](https://docs.singlestore.com/db/v9.1/reference/sql-reference/data-manipulation-language-dml/load-data/#UUID-c76a7aab-a1af-ed34-111e-15ff847bba7d.md) from an AWS S3 bucket, which can be simpler than using pipelines.
  ```sql
  LOAD DATA S3 '<bucket name>'
  CONFIG '{"region" : "<region_name>"}' 
  CREDENTIALS '{"aws_access_key_id" : "<key_id> ", 
               "aws_secret_access_key": "<access_key>"}' 
  INTO TABLE <table_name>
         (`<col_a>` <- %, 
   `<col_b>` <- % DEFAULT NULL , 
    ) FORMAT PARQUET;
  ```
* Added ability for users with `SUPER` or `ALTER USER` privileges to be able to see the hashed password.
  ```sql
  SHOW GRANTS FOR <user>;
  ```
* Added the `WARM BLOB CACHE FOR INDEX` clause to the [OPTIMIZE TABLE](https://docs.singlestore.com/db/v9.1/reference/sql-reference/data-definition-language-ddl/optimize-table.md) command to ensure [consistent query performance](https://docs.singlestore.com/db/v9.1/manage-data/local-and-unlimited-database-storage-concepts.md) when querying through a hash index, irrespective of when the query was last accessed.
* Added support for creating a `DEEP COPY` of tables with computed columns. (8.1.31)
* Added support for the `REGEXP_MATCH()` function. This function returns a JSON array of matching substring(s) within the first match of a regular expression pattern to a string. (8.1.18)

## New or Modified Engine Variables

* **Enhancement**: Introduced a new session engine variable `optimizer_disable_transitive_predicates` which disables predicate transitivity on query rewrites.
* Added the following [engine variables](https://docs.singlestore.com/db/v9.1/reference/configuration-reference/engine-variables/list-of-engine-variables/#sync-variables-lists-2.md): `max_expression_query_limit` which sets a limit on the number of expressions within an entire query and `max_expression_item_limit` which sets a limit on the number of expressions within a query item. Both can be set to a range between `100` and the [maximum unsigned `INT` value](https://docs.singlestore.com/db/v9.1/reference/sql-reference/data-types/integer-numbers.md). Setting these engine variables to the maximum unsigned `INT` value disables both features. (8.1.21)
* Added two [engine variables](https://docs.singlestore.com/db/v9.1/reference/configuration-reference/engine-variables/list-of-engine-variables/#sync-variables-lists-3.md), `jwks_username_field` and `jwks_require_audience` to add flexibility and improve security. (8.1.20)
* Added support for materializing CTEs without recomputing them when the query contains `UNION`, `UNION ALL`, and other `SET` operations. To enable the feature, set the [engine variable](https://docs.singlestore.com/db/v9.1/reference/configuration-reference/engine-variables/list-of-engine-variables/#sync-variables-lists-4.md)`allow_materialize_cte_with_union` to `TRUE`. (8.1.20)
* `json_document_max_leaves` which limits the number of JSON key paths inferred within a segment. The default value is `10000`. (8.1.18)
* `pipelines_parse_errors_threshold`, which is used in conjunction with `SKIP PARSER ERRORS` for Kafka pipelines. (8.1.16)
* `dr_min_connection_timeout_ms`, which allows users to adjust the minimum timeout period in Disaster Recovery (DR) replication. (8.1.15)
* `workload_management_enable_large_memory_classification`: When enabled allows workload management to classify queries as large solely based on memory usage. This is an Aggregator Only engine variable. (8.1.9)
* `workload_management_expected_aggregators`: The expected number of aggregators that will be used to run a high volume of client queries which require fully distributed execution. The default value is 0, which is equivalent to setting it to the total number of aggregators in the Products: cluster. For version 7.0 and up, this variable should only be set to its default of 0, unless \`workload\_management\_enable\_static\_partitioning is set to TRUE. This variable can sync to all aggregators. (8.1.9)
* Improved the performance of a left join of a reference table with a sharded table by pushing the reference table clauses to the leaves. The engine variable `disable_reference_table_leftjoin_where_pushdown` must be set to "OFF" to enable this operation. (8.1.4)
* `auto_profile_type`: Determines the mode of [auto profiling](https://docs.singlestore.com/db/v9.1/query-data/query-tuning/query-performance-tools.md). There are two values: `LITE` and `FULL`.
* `autostats_flush_interval_secs`: Determines when autostats are flushed to disk if they are not used within the specified time. The default value is `600` seconds. If the engine variable is set to `0`, autostats will always stay in memory.
* `compiled_images_eviction_memory_limit_percent`: Sets the percentage of `maximum_memory` that is available for caching query object code images. This variable is set to 0 by default. For more information about this engine variable, see [Managing Plancache Memory and Disk Usage](https://docs.singlestore.com/db/v9.1/user-and-cluster-administration/maintain-your-cluster/managing-memory/managing-plancache-memory-and-disk-usage/#section-idm234457677444929.md).
* `compiled_images_eviction_memory_limit_mb`: Sets the memory limit (in MBs) that is available for caching query object code images. For more information about this engine variable, see [Managing Plancache Memory and Disk Usage](https://docs.singlestore.com/db/v9.1/user-and-cluster-administration/maintain-your-cluster/managing-memory/managing-plancache-memory-and-disk-usage/#section-idm234457677444929.md).
* `enable_compiled_images_eviction` is now enabled by default.
* `sql_mode` is now a Sync variable and is settable on SingleStore Helios.
* `spilling_maximum_disk_percent`: Sets the maximum percentage of disk space to be used by disk spilling. The value must be between 0 and 1 or left to the default (-1).
* Two new Sync variables control the [dynamic reuse of WM queues](https://docs.singlestore.com/db/v9.1/user-and-cluster-administration/use-the-workload-manager-and-set-resource-limits/use-the-workload-manager/#section-idm4603815388545633653537512506.md): `workload_management_dynamic_resource_allocation`  and ` workload_management_queue_size_allow_upgrade`. The default value for `workload_management_queue_size_allow_upgrade` is `1`. This means we can upgrade queries from the medium queue to the large queue until the large queue length becomes equal to 1.
* `backup_multipart_upload_concurrency` : Improves backup performance.
* `max_execution_time`: It is unused and setting this variable has no effect. It exists so certain MySQL-compatible apps that have this variable set will not fail when connected to SingleStore.
* Introduced a new session engine variable `optimizer_disable_transitive_predicates` which disables predicate transitivity on query rewrites.
* Added the `bottomless_experimental_blobstore_mode` engine variable, which when enabled, completes additional verification of persisted files immediately after upload. This mode is experimental and may reduce upload speed. Please use with caution.
* The [data\_conversion\_compatibility\_level](https://docs.singlestore.com/db/v9.1/reference/configuration-reference/engine-variables/list-of-engine-variables/#sync-variables-lists-7.md) engine variable can now be set to `'8.1'` for stricter [data type conversions](https://docs.singlestore.com/db/v9.1/create-a-database/understanding-how-datatype-can-affect-performance.md). This new `data_conversion_compatibility_level` setting additionally flags invalid or out-of-range timestamp inputs to `TIMESTAMP` and `TIMESTAMP(6)` columns in `INSERT` statements. Please note: The [data\_conversion\_compatibility\_level](https://docs.singlestore.com/db/v9.1/reference/configuration-reference/engine-variables/list-of-engine-variables/#sync-variables-lists-8.md) engine variable defaults to `'8.0'` in new installations.

## Miscellaneous

* **Bugfix**: Fixed an issue caused when multi-part names were used in common table expressions (CTEs) within `UNION`. (8.1.53)
* **Bugfix**: Fixed a crash that could occur when columns were dropped with `ALTER TABLE`. (8.1.53)

* Bugfix: Fixed an issue where left join returned the wrong result when spilling occurred. (8.1.52)
* Allow Kerberos users to skip password validation for users who are authenticated with plugins. (8.1.42)
* Updated the `information_schema.USERS` view to reflect the account status for locked users. (8.1.32)
* Added more log messages for backup sub-process errors. (8.1.32)
* Improved the ability to kill queries containing JSON built-in functions. (8.1.32)
* The query optimizer now considers more left join elimination cases. (8.1.32)
* Added support for creating a `DEEP COPY` of tables with computed columns. (8.1.31)
* Added additional config and credential option validation while creating pipelines. (8.1.31)
* Fixed an issue with the `SET` clause of the `CREATE PIPELINE` statement: now it is possible to use type options like `NULL/NOT NULL/COLLATE...` with `:>/!:>` typecast operators. (8.1.29)
* Improved performance during snapshotting for CDC-in pipelines. (8.1.27)
* Added additional node metrics to the /cluster-metrics endpoint of the `memsql_exporter`. (8.1.27)
* Added support for simple multi-column update with sub-query. (8.1.25)
* Added ability to use SSL keys with a password in the HTTP API. (8.1.25)
* Improved the performance of `mv_replication_status` for clusters with large DR databases. (8.1.24)
* Added ability to infer CSV data with text boolean values. (8.1.24)
* Added resource pool metrics to the /cluster-metrics endpoint of the `memsql_exporter`. (8.1.24)
* Improved blob cache sync performance when there is no running query. (8.1.23)
* Added support for flipping join order for `FULL OUTER JOIN` operations. (8.1.23)
* Enhanced the performance of DDL statements for role manipulation. (8.1.20)
* Improved memory consumption in json decoding. (8.1.19)
* `SKIP PARSER ERRORS` is now supported for Kafka. (8.1.16)
* Added support for multiple uncorrelated IN-subselects in more query shapes. (8.1.16)
* SingleStore automatically rewrites A=B OR (A IS NULL AND B IS NULL) to null safe equal (A<=>B) to enable hash joins. (8.1.16)
* Added support for hash joins on null-accepting expressions in the ON condition of outer joins. (8.1.16)
* Added support for Control Group v2 (cgroup v2). (8.1.13)
* Default values for BLOB/TEXT and JSON columns are allowed, as well as NULL and empty strings. (8.1.12)
* Added an opt-in optimization to Kerberos for HDFS pipelines to reduce the amount of requests. (8.1.11)
* Improved the accuracy of the `blob_fetch_network_time` statistic in query profiles. (8.1.8)
* Added metrics to `memsql_exporter` that show the breakdown of disk usage by SingleStore. Also, added metrics to `memsql_exporter` that show unlimited storage utilization statistics. (8.1.8)
* Enhanced the on-disk plancache functionality by shrinking the plancache when disk space gets low and the on-disk plancache is using at least 25% of available disk space. (8.1.8)
* Improved the performance of backups to GCS (Google Cloud Storage). GCS backups are not using multi-part uploads. (8.1.6)
* The `FLUSH EXTRACTOR POOLS` command now runs on all nodes in a cluster when run on an aggregator. (8.1.6)
* Now allowing child aggregator root users to be dropped even if the `sync_permission`[engine variable](https://docs.singlestore.com/db/v9.1/reference/configuration-reference/engine-variables/list-of-engine-variables/#sync-variables-lists-9.md) is enabled. (8.1.4)
* Removed the restrictions on the names of [JWT](https://docs.singlestore.com/db/v9.1/security/authentication/authenticate-via-jwt.md) users. Customers may now create users with names that look like UUIDs and emails. (8.1.4)
* Added more information about blob files that need to be downloaded from unlimited storage to the blob cache when running `PROFILE`. (8.1.4)
* Changed the system information built-ins to use the utf8\_general\_ci collation for the `collation_server` value. (8.1.3)
* Added capability to create Wasm functions in SingleStoreclusters with heterogeneous hardware, e.g., with different levels of SIMD support.
* Wasm modules are now serialized to the plancache. Refer to [Code Engine - Powered by Wasm](https://docs.singlestore.com/db/v9.1/reference/code-engine-powered-by-wasm.md) for more information.
* SingleStore now supports creation of Wasm-based user-defined aggregate functions (UDAFs). Refer to [CREATE AGGREGATE](https://docs.singlestore.com/db/v9.1/reference/sql-reference/procedural-sql-reference/create-aggregate.md) for more information.
* The `CREATE FUNCTION` statement now returns an error if the `USING EXPORT` clause is omitted and the Wasm module has functions with the same name but different case. Refer to [Wasm UDF/TVF Naming Convention](https://docs.singlestore.com/db/v9.1/reference/code-engine-powered-by-wasm/create-wasm-udfs/#section-idm323332004012410.md) for more information.
* Added a new metric to the output of the `SHOW STATUS EXTENDED` command, which displays the memory allocated (in MBs) used to cache query object code images, as derived from `compiled_images_eviction_memory_limit_percent` and `compiled_images_eviction_memory_limit_mb`.
* Adjusted how `CREATE_TIME`, `CREATE_USER`, `ALTER_TIME`, and `ALTER_USER` columns in information\_schema.TABLES are set so that they are given proper values for the relevant `CREATE` and `ALTER` commands.
* Enhanced support for recursive [common table expressions](https://docs.singlestore.com/db/v9.1/query-data/advanced-query-topics/with-common-table-expressions.md) (CTEs) by expanding the range of query shapes allowed, improving column type checking and resolution between the base and recursive branches, and adding cross database support. Also, resolved the issue that caused the "ER\_UNSUPPORTED\_RECURSIVE\_CTE\_SHAPE" error with the accompanying message about dependency on a streaming result table outside the cycle.
* Renamed `spill_outputted_rows` to `non_aggregated_output_rows` for the shuffle groupby operator in the profiling output to avoid confusion with disk spilling.
  ```
  [...]
  "non_aggregated_output_rows":{ "value":1048576, "avg":349525.333333, 
  [...]
  ```
* Improved [JSON](https://docs.singlestore.com/db/v9.1/create-a-database/using-json.md) encoding speed for sparse schemas (JSON schemas with a very large number of distinct property names across the full set of documents, with most properties missing in each document). This applies only to universal storage.
* Incremental backups are supported on SingleStore Self-Managed for unlimited storage space. Note: incremental backups are not supported as part of the managed backup solution.
* Updated OpenSSL to version 3.0, which is now used to establish secure connections to SingleStore. As a consequence, a client certificate that uses SHA or MD5 hash functions in its signature must be replaced with a certificate that uses SHA256 at a minimum, or a secure connection to SingleStore cannot be established. While SingleStore supports TLS v1, TLS v1.1, and TLS v1.2, using TLS v1.2 is recommended. When FIPS is enabled, only TLS v1.2 is supported. Refer to [Troubleshoot OpenSSL 3.0 Connections](https://docs.singlestore.com/db/v9.1/security/encryption/troubleshoot-openssl-3-0-connections.md) for more information.
* The `ORDER BY ALL [DESC|ASC]` (or `ORDER BY *`) syntax is now supported.
* The `GROUP BY ALL [DESC|ASC]` (or `GROUP BY *`) syntax is now supported.
* Added the following JSON functions:

  * `JSON_MATCH_ANY` returns true if there exists a value in the JSON at the filter path for which the filter predicate evaluates to true.
    ```sql
    JSON_MATCH_ANY(<filter_predicate>, <json>, <filter_path>);
    ```
  * `JSON_MATCH_ANY_EXISTS` returns true if there is a value (possibly null) in the JSON at the filter path.
    ```sql
    JSON_MATCH_ANY_EXISTS(<json>, <filter_path>);
    ```
  * `JSON_INCLUDE_MASK` eliminates all portions of the document that do not match the mask.
    ```sql
    JSON_INCLUDE_MASK(<json>,<mask>);
    ```
  * `JSON_EXCLUDE_MASK` eliminates all portions of the document that match the mask.
    ```sql
    JSON_EXCLUDE_MASK(<json>,<mask>);
    ```

## Changes in Patch Releases Since 8.0GA

Several features have been added since the GA release of 8.0 (8.0.5). Particularly notable ones include `GROUP BY ALL`, `ORDER BY ALL`, and several new JSON functions; however, there are others. Please refer to the [8.0 release notes](https://docs.singlestore.com/db/v9.1/release-notes/singlestore-memsql/8-0-release-notes.md) or [maintenance release change log](https://docs.singlestore.com/db/v9.1/release-notes/singlestore-memsql/8-0-release-notes/maintenance-release-changelog.md) for additional details.

## In this section

* [Maintenance Release Changelog](https://docs.singlestore.com/db/v9.1/release-notes/singlestore-memsql/8-1-release-notes/maintenance-release-changelog.md)

***

Modified at: May 9, 2025

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

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