# Maintenance Release Changelog

## 2023-10-31 Version 7.6.33

* Fixed a potential security issue with creating users and ignoring password validation.
* Fixed some cases where `APPROX_COUNT_DISTINCT_ACCUMULATE` erroneously included nulls in the count.

## 2023-10-17 Version 7.6.32

* Fixed an issue where the root password failed to initialize during startup when the `@@password_min_uppercase_chars` variable is set to a value greater than zero.
* Fixed an issue where unlimited storage databases stored on Amazon S3 could run out of connections under intense loads.
* Fixed a bug where an aggregator result table hits a lockdown when `sql_select_limit` is set.
* Fixed a memory leak issue in the `memsql_exporter` process.
* Fixed an issue where `VECTOR_MUL` was returning incorrect results on shard tables.

## 2023-08-14 Version 7.6.31

* Added support for Control Group v2 (cgroup v2).
* Fixed a potential crash in NFS backup when encountering an IO error.
* Fixed a JSON formatting issue for the `PARTITION_UNRECOVERABLE` event in `MV_EVENTS` details column.

## 2023-06-26 Version 7.6.30

* Fixed an issue where memory accumulates over time if reshuffle or repartition operators are executed for many unique query shapes.
* Fixed unlimited storage S3 multipart uploads to properly retry on 200 responses which contain an embedded "SlowDown" error, instead of failing immediately.
* 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.
* Fixed a rare case where the query optimizer re-wrote a query into a non-equivalent query which produced more result rows.

## 2023-05-22 Version 7.6.29

* Fixed a bug where the `DEFAULT NOW()` data type and the `UUID/SYS_GUID` functions get ignored in some cases when specified on a column in the primary key.
* Fixed an issue where errors could occur during backup when large files are copied.
* Fixed an issue with `DATETIME` columns with `ON UPDATE CURRENT_TIMESTAMP` defaults that could cause incorrect results.
* Fixed an issue where a NULL could be pushed down to a union which could cause the type-cast/collation to be lost, resulting in an error: "Operation 'Scanning a hash join build' is not allowed".
* The `sql_mode` session variable now shows up in `SHOW VARIABLES` and the mv\_global\_variables view.
* Fixed an issue that could cause an incorrect error message to be generated on an out of memory error.
* Improvements to memsql\_exporter: Improved error handling and reduced memory usage.
* Fixed an issue where, in rare cases, an `UPDATE` statement with a left join in the filter clauses could fail to execute.
* Fixed an issue where replica blobs could be loaded into the blob cache with an incorrect LRU timestamp.
* Fixed an issue where `CLEAR ORPHAN DATABASE` could cause data loss if run when the master aggregator has a database in an unrecoverable state.
* Fixed an issue where the memory used by an external function was not being freed quickly enough.
* Improved error logging when a `SELECT... INTO S3` command fails dues to a large row result.

## 2023-04-10 Version 7.6.28

* Fixed a potential crash issue in `UPDATE` queries that involve joins and that have scalar subselects in `SET` clauses.
* Updated timezone metadata to include Mexico's latest timezone change.
* Improved the parsing performance of queries that contain several tables.
* Fixed an error that could occur when attaching databases with a snapshot file of greater than 5 GB.
* Fixed an error caused by setting the `collation_server` global variable to a non-default value when performing a `REBALANCE PARTITIONS` resource availability check.
* Fixed an issue where too many rows are sampled from columnstore tables with more than 1 billion rows.
* Improved error handling when restoring from an incomplete incremental backup.
* Fixed an issue with missing row counts during optimization when sampling is disabled.

## 2023-03-13 Version 7.6.27

* Added the ability to cache histogram results during optimization to reduce the work performed by the histograms.
* Fixed an issue with the schema registry so only superusers can see redacted pipeline metadata such as credentials and URLs.
* Sampling will no longer be used for table size estimation when statistics are present.
* Fixed a parsing issue for queries containing multi-line comments near `GROUP BY` or `ORDER BY` clauses.
* Added support for incremental backups to blob stores where a single partition contains more than 5 TB of data.
* Fixed an issue causing incorrect trace messages in master logs where clocks were incorrectly advancing from "0".

## 2023-01-30 Version 7.6.26

* Allow modifying the `json_extract_string_collation` engine variable as long as a computed column that modifies the shard key does not contain a call to `JSON_EXTRACT_STRING`.
* Added a new option, `SERVER_V2`, to the `json_extract_string_collation`[engine variable](https://docs.singlestore.com/db/v9.1/reference/configuration-reference/engine-variables/list-of-engine-variables/#sync-variables-lists.md). This new, recommended option is the default for new clusters, and allows comparison of utf8mb4 strings extracted from JSON to utf8 string constants. Existing clusters will retain their original setting upon upgrade.
* Added the `skip_segelim_with_inlist_threshold` engine variable, which controls when segment elimination will not use an IN list that is too large (default 1000 elements).
* Improved the performance of various commands (`SHOW` commands, DDL, etc.) when there are very many views or tables in the database (100s of thousands).
* Fixed a MySQL protocol incompatibility where SingleStore was not properly sending back the SERVER\_STATUS\_IN\_TRANS flag. This was impacting some MySQL php drivers.
* Improved the hash function used for strings.
* THE `SHOW TABLE STATUS` now correctly displays views.
* The `SHOW STATUS EXTENDED` command contains a new "`Gv_clock`" key whose value is the current logical clock of the server.
* The `SHOW DATABASE STATUS` command contains a new "`gv_clock`" key whose value is the current logical clock of the server.
* Fixed an issue where the engine could crash during recursive set operations.
* Fixed the case where the `REGEXP_REPLACE` and `REGEXP_SUBSTR` expressions can produce non-utf8 strings by introducing the new [engine variable](https://docs.singlestore.com/db/v9.1/reference/configuration-reference/engine-variables/list-of-engine-variables/#sync-variables-lists-2.md)`regexp_output_validation_mode`. Regular expression built-ins can produce non-utf8 strings because they don't have full support for multi-byte characters. The engine variable controls this behavior if regular expression built-ins return strings that are invalid under its collation settings.
* `information_schema.table_statistics` now correctly shows information about global temporary tables.

## 2023-01-04 Version 7.6.25

* Fixed an edge case issue which could cause the engine to hang during shutdown.
* Fixed an issue that may cause the engine to crash from info\_schema query submissions.
* Fixed some error handling issues with unlimited storage download and upload processes.
* The avro schema registry URL portion of the `CREATE PIPELINE` syntax is now redacted in processlist.
* Fixed a bug that may cause a query to hang when comparing an utf8 column with an utf8mb4 constant. This issue occurs when `collation_server` is set to one of the utf8mb4 collations.
* Fixed a crash when parsing certain Parquet data into a pipeline.
* Fixed an edge case issue where the engine could crash when performing multi-inserts.
* Fixed an edge case issue causing a potential memory leak when running an `UPSERT` statement against a columnstore table.
* Fixed an issue with a transaction leak on the master aggregator when running `CREATE TABLE AS SELECT` on a child aggregator using `autocommit=0` on the connection.
* Fixed an issue with aggregate functions using incorrect enum/set types that may result in inaccurate output in the operator tree.
* Fixed an issue where environments with several nodes having several partitions may not auto-attach when restarted simultaneously.
* Fixed a performance issue when creating an aggregator result table on the master aggregator.
* Fixed an issue when if auto-creation is turned off (`auto.create.topics.enable=false`), `SELECT INTO KAFKA` would return a success message even if the insert fails.
* Improved the `ALTER TABLE` error message received when run on a view on a child aggregator.
* Fixed an issue where wrong results may occur when a shard key column is set to the value of a non-deterministic function (`RAND()`, `UUID()`, etc.).
* Improved performance of comparing utf8mb4 strings.
* Fixed an issue where the engine could crash during recursive set operations.

## 2022-11-21 Version 7.6.24

* Reduced the memory usage of querying `information_schema.pipeline_errors` when there are many past pipeline errors.
* Decreased the cost of working with large project lists during optimization.
* Improved incremental backup performance.
* Fixed a performance issue with count distinct aggregation and streaming subqueries.
* Fixed an issue where an incorrect result could be returned when a query contains multiple joins that all match a multi-column hash index.
* Fixed a potential issue that could cause a NFS backup error to trigger a crash.
* Fixed a potential issue when a query contains a full outer join and a window function partitioning by the full outer join columns yields the wrong result.
* Enabled histograms to estimate predicates that use Stored Procedure parameters or implicit/explicit typecasted literals. This change is controlled via the `enable_histogram_to_unwrap_literals` sync variable. This is Off by default. It can be enabled by setting the variable to ‘On’ or 1.
* Added the session variable `histogram_column_correlation`, which controls the assumed correlation between columns when using histograms for selectivity estimation.
* Fixed a performance issue for sampling queries with large IN lists executed by the query optimizer.
* Fixed a potential issue that may cause a deadlock when evicting blobs from the blobcache.
* Added ability to use `ALTER` and `TRUNCATE` table commands when `BACKUP` is running.
* The `SHOW TABLE STATUS` command now displays the memory usage by `GLOBAL TEMPORARY` tables.
* Added the engine variable: `exporter_ssl_key_passphrase`. It is used for the decryption of the `exporter_ssl_key` file by the monitoring process if the file is encrypted (password protected).
* Added the option to use HTTPS with memsql\_exporter. To use HTTPS, enable the engine variables `exporter_use_https`, `exporter_ssl_cert`, and `exporter_ssl_key`.

## 2022-10-31 Version 7.6.23

* Fixed an issue where having too many rows on the same columnstore hash key could return "Read failed with error 14 (Bad address)".
* Fixed a specific query shape which failed CodeGen for columnstore unique keys.
* Allow `REVOKE` from `ROLE` permissions for tables that have been dropped.
* Fixed an issue which caused unlimited database S3 uploads to fail due to an ExpiredToken error. This issue impacted the refresh of EC2 instance meta credentials caused by the public open-source AWS C++ SDK after encountering a transient network issue.
* Fixed an issue with the accuracy of memory and disk space availability confirmed in the `REPLICATE DATABASE` command. This fix will ensure any secondary cluster has enough memory and disk space to replicate the database.
* Fixed an issue where commands forwarded to the master aggregator during an online upgrade could cause a crash.
* Fixed an inconsistent error message on `CREATE USER` when the target user already exists.
* Added the ability to handle 429 (too many requests) errors the same way as 503 (slow down) errors.
* Added the ability to allow code-generation of queries against the information schema when the cluster is very low on disk/memory.
* Fixed a potential issue that may cause unlimited databases to rebuild unnecessary auto-stats.
* Fixed a potential crash using multi-statement batches inside prepared statements when the statements have no parameters.
* Fixed a potential issue that could cause a lost second prepare statement when using a binary protocol over SSL.
* Fixed an issue that may cause a restarted master aggregator to crash when the `STOP PIPELINE` command runs on a detached pipeline.
* Added the ability to limit the application of join predicate transitivity to predicates that may be estimated. To use this feature, the session variable `verify_fields_in_transitivity` needs to be set to ON.

## 2022-09-06 Version 7.6.22

* Fixed an issue where canceling a `RESTORE` would not completely drop the partially restored database.
* Fixed an issue where S3 can silently fail to upload a file for an unlimited database.
* Removed ability to use `RESTORE DATABASE` on unlimited databases with sync durability enabled.
* Improved the accuracy of the `FIRST_LOADED` and `LAST_EXECUTED` timestamp columns in `information_schema.plancache`.
* Fixed a lockdown feature error that may occur for queries with multiple in-subselects.
* Fixed a memory leak issue due to `alloc_warnings` when using reference table pipelines.

## 2022-08-22 Version 7.6.21

* Fixed an issue that may cause error 200 to occur when running `CREATE DATABASE` or `RESTORE DATABASE` commands on an unlimited database.
* Fixed an edge case issue where the blob cache eviction algorithm could cause an infinite loop.
* Fixed an issue that may cause `insert into mv_queries` to become invalid when the cluster is in `ONLY_FULL_GROUP_BY sql_mode`.
* Fixed an issue that returned 'zero rows' when sampling fails or there is no sampling data. The corrected behavior will use heuristic or histogram estimate depending on what is available. To enable this behavior, set `estimate_zero_rows_when_sampling_data_is_missing` to ‘false’.

## 2022-08-16 Version 7.6.20

* Fixed an issue where S3 can silently fail to upload a file for an unlimited database.

## 2022-08-15 Version 7.6.19

* Fixed an issue where queries that contain CTE (common table expressions) with the same name may not traverse correctly.
* Removed ability to use `utf8_general_mysql500_ci collation`. This collation is not supported by SingleStore.
* Added support for `s3_force_path_style` to S3 backup. `s3_force_path_style` (optional boolean, defaults to true) specifies whether to use path style (region.amazonaws.com/bucket) or virtual address style (bucket.region.amazonaws.com) syntax when specifying the location of the bucket. For S3 compatible services that only support virtual address paths, specify `"s3_force_path_style":"false"` in the configuration options. Refer to the [BACKUP DATABASE](https://docs.singlestore.com/db/v9.1/reference/sql-reference/operational-commands/backup-database.md) section for more information.
* Fixed a crash caused by `UPDATE` statements with a joined table where the optimizer pushes the JOIN into a derived table whose name is automatically generated and different from the original table being updated.
* Fixed an issue with window functions which refer to the window definition at the end of a `SELECT` statement.
* Improved the `Subselect To Join` rewrite to recognize more cases with subselects in filter conditions for left join.
* Added the ability to configure SingleStore to estimate the equality predicate for uncorrelated scalar subselects as 1/cardinality; and use heuristics for all other scalar subselect predicates. To enable the new estimation logic, set `exclude_scalar_subselects_from_filters` to 'false'.

## 2022-07-21 Version 7.6.18

* Fixed crashes that may occur when downloading blobs from Azure unlimited storage databases.
* Added the support of the `highlight` builtin on non-ASCII text.
* Fixed an issue when specifying all columns in the `SELECT` command resulted in columns being out of order rather than matching the table definition.
* Fixed an issue where a syntax error would occur when running queries against reference tables with comments following the query text.
* Added support for `NOT NULL` when using persisted computed columns.
* Improved the performance of hash joins over expressions.
* Improved the performance of downloading blob files for unlimited databases when SSL is enabled between SinglestoreDB and the blobstore.
* Fixed a “missing table” error that may occur when creating a pipeline on a child aggregator instead of the master aggregator.
* Fixed an error when using certain `DATE_FORMAT` options via Tableau.
* Fixed HDFS pipelines failures when loading from HA/BigIP clusters that advertise a different host name than the one used to connect.
* Fixed an issue where the incorrect backup size showed in `mv_backup_history` for incremental backups.
* Fixed a server crash caused by serializing big table or view definitions in snapshots.
* Added support for forwarding `SHOW RESULT TABLES` from child aggregators to the master aggregator when DDL forwarding is enabled.
* Added support for Reloading SSL Certs without having to restart the node.
* Reduce the memory used to track cached blob files and run scans over columnstore tables.
* Reduced the memory used by the blob cache by 100-200 bytes per cached blob.

## 2022-06-06 Version 7.6.17

* Fixed an issue that could cause an incorrect `MAX_QUEUE_DEPTH` output in `SHOW RESOURCE POOLS` command.
* Added information schema field: `information_schema.COLUMNS DATETIME_PRECISION`.
* Allowed the execution of pipeline DDL commands to be run inside stored procedures.
* Added a new engine variable named `columnstore_small_blob_combination_threshold` that can be used to control the size of column files created by combining compressed columnstore segments. Its default value is 32 Mb (the previously hard-coded value in the engine).
* Added an engine variable `columnstore_validate_blob_before_merge`. If enabled, the [background merger](https://docs.singlestore.com/db/v9.1/create-a-database/columnstore/managing-columnstore-segments.md) would validate the blob checksums before merging blobs.
* Fixed an issue where `DROP FUNCTION` would result in an unknown table error.
* Added the ability to `DROP TEMPORARY PROCEDURE` on child aggregators when DDL forwarding is enabled.

## 2022-05-16 Version 7.6.16

* Fixed an issue with rare crashes caused when backing up an unlimited storage database against Azure blob storage.
* Added a system engine variable `default_storage_engine` for MySQL 5.7 compatibility.
* Fixed a server crash caused by a rewrite trying to inline nested expressions.
* Fixed a server crash caused by table-valued functions parameters that assume the parameter name is the same as the alias of the table-valued function operator.
* Adjusted the maximum memory allocation function to proactively run even when the `total_server_memory` usage is well below the `maximum_memory` allocation.
* Added support for restoring a backup in an unlimited storage database that contains a larger amount of data than the local disk space available on the cluster.
* Fixed an issue where an incorrect error was generated for an aggregator result table when it was used by a parallel read. `DROP RESULT TABLE` now returns the correct error.
* Fixed issues with the `information_schema.mv_activities` and `information_schema.mv_activities_extended` tables reporting incorrect activities on database names ending with an integer. Refer to the [CREATE DATABASE](https://docs.singlestore.com/db/v9.1/reference/sql-reference/data-definition-language-ddl/create-database.md) section for more information.

## 2022-04-11 Version 7.6.15

* Fixed an issue where an incorrect error was generated for an aggregator result table when it was used by a parallel read. `DROP RESULT TABLE` now returns the correct error.
* Improved heuristic estimates for queries with complex join predicates.

## 2022-04-04 Version 7.6.14

* Fixed an issue with running `RESTORE DATABASE` into an unlimited storage cluster on Google Cloud Storage.
* Fixed an issue with out of memory errors being generated while compiling queries that use multiple `UNION` clauses.
* Fixed an issue where pipeline streams are not paused when metadata errors (topic, folder, bucket, and or broker connectivity issues) occur. Metadata errors will now be handled with pipeline retry logic. See [The Lifecycle of a Pipeline](https://docs.singlestore.com/db/v9.1/load-data/about-singlestore-pipelines/pipeline-concepts/the-lifecycle-of-a-pipeline.md) for details.
* Fixed an issue where a crash occurred when executing a `DELETE` command with a `LIMIT` clause on rowstore tables containing a hash index.

## 2022-03-11 Version 7.6.13

* Configured spilling to use less stack space to avoid stack overflow errors for some query shapes. The engine variable `enable_spilling` must be set to `on`.
* Fixed an issue with memory getting corrupted when an unlimited storage database runs against Azure.
* Fixed an issue where table-valued functions crashed when a parameter is used more than once while compiling the query.
* Allowed the execution of `UPDATE/UPSERT` commands on sort key columns via pipelines. Prior to this update, an error was generated.
* Fixed an issue with a parser error being generated when using a single quote (') in the column name of an external table-valued function return type.
* Fixed an issue with an unknown column error being generated when using a question mark (?) in the column name for a prepared statement.

## 2022-02-28 Version 7.6.12

* Improved the performance of sampling queries executed by the query optimizer.
* Added DNS spoofing options to kafka pipelines to support connecting to Kafka via proxy. See [CREATE PIPELINE](https://docs.singlestore.com/db/v9.1/reference/sql-reference/pipelines-commands/create-pipeline.md) for more information.

## 2022-02-22 Version 7.6.11

* Fixed an issue with query forwarding incorrectly triggering aggregator sync causing the aggregators to run out of disk space.
* Fixed an issue with incorrect `nullCount` and `rowCount` statistics for larger tables with autostats enabled.
* Fixed an issue with `memsql_exporter` ceasing to produce monitoring results.
* Fixed a bug where special characters in the output columns of external functions were not handled correctly.

## 2022-02-14 Version 7.6.10

* Fixed an issue with C# MySql client drivers getting "no database errors" on connection.
* Improved rowstore garbage collection by eliminating the delay for unlimited storage uploads to occur after a snapshot.
* Fixed an issue with partitions in unlimited storage databases going into an unrecoverable state while snapshots download during server restarts.
* Updated the privilege to execute the `TRUNCATE` table command to require users to have the `DROP` or `DELETE` permission.
* Fixed the `CREATED` column in the `information_schema.ROUTINES` table by now recording the creation date for Table-Valued Functions.

## 2022-02-07 Version 7.6.9

* Increased default blob cache disk space from 10 GB to 40 GB on hosts with less than 200 GB disk space.
* Improved disk space performance by enabling the blob cache to proactively shrink itself up to 25% if disk space is running low.
* Fixed a bug that a variety of conversion operators failed to check errors during the construction of the operator tree.
* Blocked using window functions in a MySQL expression outside of a DML query.
* Improved disk space performance by enabling blob cache to proactively remove files quicker after a `DELETE` command is executed.
* Fixed timeout errors when performing large `BACKUP/RESTORE` operations against an Azure blob store.
* Fixed the `CLEAR ORPHAN DATABASES` command to ensure all databases are dropped when the `leaf_failover_fanout` global variable is set to `load_balanced` and there are partition databases with more than replica partition.
* Fixed a bug that incorrectly pushes a join before a window function when attempting to perform a distributed join in an aggregator.
* Disabled batch processing when using external functions in `UPDATE...SET` as this specific process would crash.

## 2022-01-18 Version 7.6.8

* Fixed an issue where utf8mb4 characters were mistakenly extracted to the resulting utf8 string for the `JSON_EXTRACT_STRING` command.
* Improved the performance of queries when running in interpreter mode.
* Fixed a cluster database log corruption that could occur if the root user was dropped when the `sync_permissions` global variable was enabled.
* Improved the locking of `DETACH DATABASE` so it doesn’t block concurrent fail overs.
* Improved the predicate transitivity rewrite during query execution to cover more cases in an `EXISTS/NOT EXISTS` clause.
* Perform online copy an unlimited storage database while the source database is attached and actively being used.

## 2022-01-04 Version 7.6.7

* Added support for `DEFAULT` clause for `FIELDS` paths in `PARQUET` pipelines.
* Added support for `multipart_chunk_size_mb` configuration if `compatibility_mode=true`. See [SELECT … INTO S3](https://docs.singlestore.com/db/v9.1/reference/sql-reference/data-manipulation-language-dml/select/#select-into-s-3.md) for more information on the `multipart_chunk_size_mb` configuration.
* Added support for `SELECT…FOR UPDATE` on columnstore tables.  See [SELECT … FOR UPDATE](https://docs.singlestore.com/db/v9.1/reference/sql-reference/data-manipulation-language-dml/select/#select-for-update.md) for more information.
* Improved error handling of invalid partition IDs for parallel read prepared statements.
* Fixed an issue with garbage collection in unlimited storage databases that could cause a point in time restore to fail.
* Fixed a possible “failed to find remote file” error when an `AGGREGATOR SET AS MASTER` is run on a cluster with unlimited storage databases.
* Stopped row level locking when an `UPDATE` or `DELETE` join condition uses a full-text index.
* Fixed an issue where field nullability was not set correctly in some query shapes with full outer joins.
* Improved error messaging for unsupported correlated subselects in some cross database query shapes.
* Fixed a rare issue where nulls in `GROUP BY` columns were being grouped incorrectly.
* Fixed an issue with inconsistent snapshots caused by running `SNAPSHOT DATABASE` concurrently with an `ALTER TABLE` command against a columnstore table.
* Clarified error messaging when an incorrect configuration is given while creating an unlimited storage database.
* Fixed the calculation for `total_runtime_ms` for queries profiled from within stored procedures. Prior to this release, `total_runtime_ms` was not calculated accurately.
* Improved how the engine starts the prometheus exporter.

## 2021-12-06 Version 7.6.6

* Fixed the default value for `max_async_compilation_concurrency` so that it is now set appropriately when [control groups](https://en.wikipedia.org/wiki/Cgroups) are in use limiting CPU usage.
* Reduce probability of failed connections to clusters due to WebSockets proxy issues.
* **New Feature:** Introduced new aggregate function `VECTOR_SUM`.
* Fixed an issue with queries not assigned to resource group pools with hard CPU limits from using the CPU assigned to the pool.
* Fixed an issue with garbage collection of secondary index segments columnstore temporary tables.
* Fixed an issue with the incorrect results returned from the `JSON_ARRAY_UNPACK()` function when the argument is an empty string.
* Updated the `CREATE EXTERNAL FUNCTION` command so when a `LINK` is referenced, the database specification can be left off.

## 2021-11-22 Version 7.6.5

* Removed the disk space check that occurred when `ALTER TABLE ADD INDEX` is run. The check occurred prior to altering a columnstore table in an unlimited storage database.
* Fixed an issue with reoccurring timeout failures when running `DETACH DATABASE`.
* Fixed an issue with a crash occurring when an incremental backup was performed on an empty database.
* Clarified error messaging when invalid data is inserted into a utf8 charset data type column.
* Fixed an issue with an aggregator results table checking `INSERT` privileges.
* Fixed an issue where results data is incorrectly blank in particular columns when querying `information_schema.mv_plancache`.
* **Enhancement:** Improved the performance of columnstore `UPDATE` queries that do not modify unique key columns.
* Fixed an issue with a crash occurring when DDL is run inside a stored procedure that is executed within a resource pool on a child aggregator.
* Block the `DROP TEMPORARY TABLE` command from running in a transaction that writes to the temporary table being dropped. The `DROP TEMPORARY TABLE` command result will display an error.

## 2021-11-10 Version 7.6.4

* Initial GA release of version 7.6.
* **New Feature:** Point-in-time recovery (PITR) has moved from preview to production status, and is now supported for production use cases.
* **New Feature:** Added support for unlimited storage in Azure.
* **Enhancement:** Added `password_expiration` column to `information_schema.USERS` table. If the `password_expiration_seconds` engine variable is not enabled, the `password_expiration` column will be NULL. If the `password_expiration_seconds` engine variable is enabled, the `password_expiration` column will display the number of seconds remaining for the password to expire.
* **Enhancement:** Improved the performance of selective filters using string columns in columnstore tables.
* **New Feature:** Added support on Azure for unlimited storage databases and PITR.
* **New Feature:** Added support for Google Cloud Storage (GCS) for unlimited storage databases and PITR, as a preview feature.
* **Enhancement:** By default, all backups are now [lock-free](https://docs.singlestore.com/db/v9.1/manage-data/back-up-and-restore-data/lock-free-backups.md). Distributed write transactions no longer have to wait when a backup starts.
* **Enhancement:** Allow spilling hash `GROUP BY` operator.
* Fixed an issue with possible connection crashes on disaster recovery clusters when DDL queries are forwarded to the master aggregator and a database has not been selected.
* Fixed a crash caused by a check on the maximum number of partitions allowed on a leaf node. An error message is displayed when this threshold is exceeded.
* **Enhancement:** Improved full-text filter performance when used with other secondary hash index filters. For highly selective full-text filters, the improvement in execution speed can be 10 times faster.
* Fixed a regression in recovery performance for databases using remote storage.
* **New feature:** Introduced row-level decompression for the string data type which will increase performance on reads against columnstore tables.  Before this improvement, decompression occurred on the order of blocks of data which consists of 4096 rows.
* Fixed an issue with unexpected database writes on databases not written to. This behavior is disabled if the database does not have unlimited storage.
* **New Feature:** Added support for cross-database `INSERT...SELECT` into columnstore temporary tables.
* **New Feature:** Added support for new vector functions, namely [JSON\_ARRAY\_UNPACK](https://docs.singlestore.com/db/v9.1/reference/sql-reference/vector-functions/json-array-unpack.md), [SCALAR\_VECTOR\_MUL](https://docs.singlestore.com/db/v9.1/reference/sql-reference/vector-functions/scalar-vector-mul.md), [VECTOR\_ADD](https://docs.singlestore.com/db/v9.1/reference/sql-reference/vector-functions/vector-add.md), and [VECTOR\_MUL](https://docs.singlestore.com/db/v9.1/reference/sql-reference/vector-functions/vector-mul.md).

  Each of these vector operations can be suffixed with \_I8, \_I16, \_I32, \_I64, \_F32, \_F64. If you leave the suffix off, it is equivalent to suffixing with \_F32. `EUCLIDEAN_DISTANCE(a, b)` is equivalent in semantics to `(DOT_PRODUCT(VECTOR_SUB(a, b), VECTOR_SUB(a, b))`. All operations are performed within the data type specified. For example, `DOT_PRODUCT_I8(a, a)` will be the sum of the squares of a with the sum and the squares being 8-bit integers. This update also removes the requirement of the machine to have AVX2 to use vector functions.
* **New Feature:** Added support for [transactions in Kafka pipelines](https://docs.singlestore.com/db/v9.1/reference/sql-reference/pipelines-commands/create-pipeline/#section-idm4614490117752032689897982234.md).
* **Enhancement:** Introduced new logic to determine when to evict a compiled image of a query plan. The logic will sort on the oldest number of plans while considering the explicitly set memory limit usage of each plan. The feature is disabled by default. To enable the logic, the engine variable `enable_compiled_images_eviction` must be set to ON. The engine variable `compiled_images_eviction_memory_limit_mb`  is used to set the memory limit.
* **New Feature:** Added a new function, [JSON\_KEYS](https://docs.singlestore.com/db/v9.1/reference/sql-reference/json-functions/json-keys.md), which returns the top-level keys of a JSON object in the form of a JSON array. Optionally, if a keypath is defined, returns the top-level keys from the keypath.
* **Enhancement:** Added support for more query shapes with `FULL JOIN` or correlated subselects when reference tables are involved.  Prior to this release, these query shapes would hit a lockdown error.
* **Enhancement:** Improved selectivity estimate for `RIGHT JOIN` query shapes when doing `BloomFilter` decision. See [Query Plan Operations](https://docs.singlestore.com/db/v9.1/query-data/query-plan-operations.md) for a detailed explanation of `BloomFilter` and other filtering methods.
* **New Feature:** Added support for the [current user security model in stored procedures](https://docs.singlestore.com/db/v9.1/developer-resources/procedural-extensions/procedural-extensions-security/#section-idm4617320755363232632597752765.md). In this model, when the current user executes a stored procedure, the stored procedure is executed using the security permissions of that user.
* **New Feature**: Added support for query shapes that include repartitioned subqueries containing `SELECT` statements with aggregated column(s) without a `GROUP BY` clause. Prior to this release, these query shapes would hit a lockdown error.
* **New Feature:** Added support for `LEFT JOIN` when the left table is a reference table without a primary key.  Prior to this release, this query shape would hit a lockdown error.
* **Enhancement**: Improved query performance using `SORT KEY()` and `KEY () WITH CLUSTERED COLUMNSTORE` columns with integer data types.
* **New Feature**: Added support for `UNION` between reference and sharded tables.  Prior to this, this query shape would hit a lockdown error.
* **New Feature**: Added support for [SELECT ... INTO AZURE](https://docs.singlestore.com/db/v9.1/reference/sql-reference/data-manipulation-language-dml/select/#select-into-azure.md). This command supports the `WITH COMPRESSION` option, which is described in the next release note.
* **New Feature**: Added the `WITH COMPRESSION` option to `SELECT ... INTO FS` (SingleStore Self-Managed), [SELECT … INTO GCS](https://docs.singlestore.com/db/v9.1/reference/sql-reference/data-manipulation-language-dml/select/#select-into-gcs.md) , and [SELECT … INTO S3](https://docs.singlestore.com/db/v9.1/reference/sql-reference/data-manipulation-language-dml/select/#select-into-s-3-2.md). `WITH COMPRESSION` writes the `SELECT` query results, in compressed .gzip files, to an object store.
* **Enhancement:** Improved `EXPLAIN` output to clarify a result table for a broadcast `LEFT JOIN` or for a `MATERIALIZE_CTE` as they can have the same result table name. For broadcast `LEFT JOIN`, a branch operator is added so that the branching operation on the shared result table is reflected. See [Query Plan Operations](https://docs.singlestore.com/db/v9.1/query-data/query-plan-operations.md) for a detailed explanation of broadcasts and other distributed data movement.
* **Enhancement**: Improved query execution for repartition `DELETE FROM ...LIMIT` and broadcast `LEFT JOIN`.
* **New Feature:** Added support for external functions, as a preview feature. An external function calls code that is executed outside of a SingleStore database. For more information, see [CREATE EXTERNAL FUNCTION](https://docs.singlestore.com/db/v9.1/reference/sql-reference/procedural-sql-reference/create-or-replace-external-function.md).

***

Modified at: March 8, 2024

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

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