Maintenance Release Changelog

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 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 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 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 for more information on the multipart_chunk_size_mb configuration.

  • Added support for SELECT…FOR UPDATE on columnstore tables.  See SELECT … FOR UPDATE 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 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 datatype 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. 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, SCALAR_VECTOR_MUL, VECTOR_ADD, and VECTOR_MUL.

    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.

  • 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, 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 for a detailed explanation of BloomFilter and other filtering methods.

  • New Feature: Added support for the current user security model in stored procedures. 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. 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, SELECT … INTO GCS , and SELECT … INTO S3. 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 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 [OR REPLACE] EXTERNAL FUNCTION.