Maintenance Release Changelog

2023-09-11 Version 8.0.25

  • 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 memsql_exporter was generating too much "pipeline_error" data.

  • The SHOW COLUMNAR MERGE STATUS command now outputs status for tables with empty sort keys.

  • The following commands now respect non-default columnstore_table_lock_threshold values: INSERT ... SELECT ... ON DUPLICATE UPDATEREPLACE ... SELECT, and REPLACE ... LOAD.

  • Fixed an issue where VECTOR_MUL was returning incorrect results on shard tables.

  • Fixed an issue where LIMIT and OFFSET after a window function with no PARTITION BY clause were returning incorrect information.

2023-08-22 Version 8.0.24

  • Improved performance of multi-part GCS backups.

  • Increased mv_plancache.activity_name from varchar(64) to varchar(512).

  • Fixed a potential crash in NFS backup when encountering an IO error.

  • SKIP PARSER ERRORS is now supported for Kafka. Additionally, a new related engine variable, pipelines_parse_errors_threshold, has been added.

  • Fixed an issue with significant memory reduction from spilling for hash join queries with variable length strings (varchar, text, etc.) involved.

  • Fixed a memory leak when using backreferences inside regexp built-ins (e.g. `regexp_substr()`).

  • Fixed an issue where, when parsing a table with many secondary keys, an incorrect name was used to refer to table's the primary key.

  • SingleStoreDB now supports in-place change of the data_conversion_compatibility_level for persisted computed column shard keys. We still suggest testing any existing applications before deploying a change to a production environment.

2023-07-25 Version 8.0.23

  • Added metrics to memsql_exporter to show a breakdown of disk usage by SingleStoreDB.

  • Added metrics to memsql_exporter to show unlimited storage utilization statistics.

  • Fixed a JSON formatting issue with the MV_EVENTS info schema table.

  • Fixed a potential issue where changing a user password would not change the connection pool password in the Data API.

  • Fixed a bug where the mv_disk_usage table would show incorrect results for the plancache directory.

  • Fixed an issue where creating a TEMP table with a PERSISTED column would result in an ER_TABLEACCESS_DENIED_ERROR.

  • Reverted the performance improvements for backups to GCS (Google Cloud Storage).

  • Fixed a bug for the statistic blob_fetch_network_time value.

  • Fixed a performance bug regarding the prefetch queue's size when flexible parallelism is enabled. The prefetch queue's size was increased from 10 to 10 times the number of scanning threads to improve query performance.

  • Fixed an issue with the incremental restore of an unlimited database that would fail if the restore was larger than the disk.

  • Fixed a pipeline wrong state issue caused by an error in a table with a computed column.

  • Added support for Control Group v2 (cgroup v2).

  • Fixed an issue where a large spike in the query memory consumption on a any SingleStoreDB node could cause replicas on the same node to become unrecoverable.

  • Fixed a bug where the permissions do not clear for Data Manipulation Language (DML) queries and then leak to subsequent Data Definition Language (DDL) queries.

2023-06-26 Version 8.0.22

  • Fixed a rare case where the query optimizer re-wrote a query into a non-equivalent query which produced more result rows.

  • Improved the performance of backups to GCS (Google Cloud Storage). GCS backups are not using multi-part uploads.

  • Fixed a crash that could occur if Linux refused to start a thread due to hitting a system limit on threads.

  • Introduced an optimizer feature where a single sharded table may be gathered to the optimizer in order to reduce duplicate work across partitions. Two new engine variables were added to control this behavior: optimizer_min_reference_tables_for_gathered_join and optimizer_min_reference_rows_for_gathered_join.

  • Fixed an issue on sample tables that can be created with different collations on different partitions.

  • Added the max_execution_timeengine variable. 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 SingleStoreDB.

  • Added mv_disk_usage and mv_data_disk_usage information schema tables that report the breakdown of disk utilization by SingleStoreDB.

  • PAM (Pluggable Authentication Module) users are now allowed to start and configure the memsql_exporter process.

  • Added support for ROW_COUNTinformation function within views.

  • Fixed a bug where a HashJoin on a materialized CTE gets executed as a NestedLoopJoin in some query shapes causing slow join performance.

  • Fixed the SPLITstring function that was not detecting the correct argument type when used inside a table-valued function (TVF) or a user-defined scalar-valued function (UDF).

  • Improved the accuracy of the blob_fetch_network_time statistic in query profiles.

2023-06-06 Version 8.0.21

  • Fixed unlimited storage S3 multipart uploads to properly retry on 200 responses which contain an embedded "SlowDown" error, instead of failing immediately.

  • Reduced memory usage in situations where tables are repeatedly created and dropped.

  • Fixed an issue where memory accumulates over time if reshuffle or repartition operators are executed for many unique query shapes.

  • Introduced a new global engine variablebackup_multipart_upload_concurrency that can be used to improve blobstore backup performance. The default value (3) can improve performance out of the box.

  • 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 the query_text output in profiles generated while the profiled query is executing.

  • Fixed an issue where the query optimizer could choose incorrectly between using the HashGroupBy or the StreamingGroupBy operators.

  • Fixed an issue where JSON computed column matching incorrectly triggers a JSON_EXTRACT_<type> function.

  • Fixed a STR_TO_DATE function bug when used with '%T' or '%r' in the format string.

  • Fixed a rare log file corruption issue with sync durability in unlimited storage databases.

  • Fixed an issue with handling a query that contains a common table expression (CTE) in a CREATE VIEW statement that has multiple UNION operators.

2023-05-17 Version 8.0.20

  • Added cross-database support for Recursive CTEs.

  • Fixed a bug where DEFAULT NOW/UUID/SYS_GUID is sometimes ignored when specified on a column in the primary key.

  • Fixed an issue where JSON_INCLUDE_MASK built-in returns a document with all fields, instead of zero fields for an empty mask '{}' case.

  • Added ability to JSON_MATCH_ANY() to receive the columnstore optimization even if the entire JSON column is projected in the query.

  • Fixed a crash caused by reusing plancache for a deleted link.

2023-05-01 Version 8.0.19

  • Fixed an issue with DATETIME columns with ON UPDATE CURRENT_TIMESTAMP defaults that could cause incorrect results.

  • 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.

  • 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".

2023-04-25 Version 8.0.18

  • Fixed an issue where errors could occur during backup when large files are copied.

  • Fixed an issue where S3 pipelines could stop loading data from the bucket if files are deleted from the bucket while the pipeline is active.

  • 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.

  • Improvements to memsql_exporter: Improved error handling and reduced memory usage.

  • Fixed an issue with ALTER USER, and now the following syntax works as expected:

    ALTER USER user IDENTIFIED BY 'password';
  • Added  JSON_INCLUDE/EXCLUDE_MASK function when applied to a JSON document; it will return a subset of the document based on the mask.


2023-04-17 Version 8.0.17

  • Added support for LOAD DATA from S3 for Avro and Parquet data.

  • Fixed a potential crash issue in UPDATE queries that involve joins and that have scalar subselects in SET clauses.

  • Fixed an issue where running DROP PLAN FROM PLANCACHE ... FOR QUERY on a query with invalid syntax could cause a crash.

  • Updated timezone metadata to include Mexico's latest timezone change.

  • Fixed an issue where DETACH DATABASE was not killing long running queries that were blocking the database from getting detached.

  • Fixed an issue with missing row counts during optimization when sampling is disabled.

  • Fixed an issue where background mergers were not stopping quickly enough, resulting in delayed DDL operations or REBALANCE commands.

  • Fixed an issue with setting maximum_blob_cache_size_percent on a single site that could cause the blob cache to shrink incorrectly.

  • 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 in information schema view JSON_COLUMN_SCHEMA where incorrect details were being shown for the leaf columns.

  • Fixed an issue where the memory used by an external function was not being freed quickly enough.

  • Fixed a column name resolution issue for recursive CTEs when the column type is the same across the base branch and the recursive branch.

2023-04-03 Version 8.0.16

  • The default_partitions_per_leaf global variable will no longer be user-settable in SingleStoreDB Cloud, ensuring that it's always defined for the most optimal performance, according to the current resource size.

  • Fixed an issue where filters using the range_stats column in the information_schema.optimizer_statistics table were not allowed.

  • Fixed an issue where incorrect results could be returned when segment-level flexible parallelism is used inside a subquery containing both a shard key filter and either an aggregate, a window function, or the limit clause.

  • Fixed an issue where an internal result table was not created for a recursive CTE involving data across databases.

2023-03-27 Version 8.0.15

  • Fixed an error that could occur when attaching databases with a snapshot file of greater than 5 GB.

  • Fixed an issue where too many rows are sampled from columnstore tables with more than 1 billion rows.

  • Fixed an issue with histogram estimation in columns with a negative value TIME type.

  • 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 "table partition count mismatch errors" that occur due to the following conditions: the system variable enable_workspace_ha is set and there is an upgraded workspace with an attached read replica.

  • Fixed an issue with DDL endpoint queries using a lower-than-specified query parallelism setting when workspaces are enabled.

  • Improved column type resolution for base and recursive branches in recursive common table expressions (CTEs).

  • Fixed an issue that prevents GROUP BY Push-Down optimization if the join filter contains a mismatched column type.

  • Fixed a data conversion compatibility level 8.0 error that may occur when sampling columnstore tables.

  • Fixed a possible deadlock that may occur between the blob cache and the Rowstore Garbage Collection (GC) when the blob cache encounters an out-of-memory error.

  • Add an information schema table (JSON_COLUMN_SCHEMA) which shows the schema inferred for JSON columns in columnstore tables.

2023-03-20 Version 8.0.14

  • Improved the parsing performance of queries that contain several tables.

  • Improved error handling when restoring from an incomplete incremental backup.

  • Improved the performance of S3 pipelines when Garbage Collection (GC) is enabled.

  • The  read_advanced_counters, snapshot_trigger_size, and  snapshot_to_keep  engine variables can now be set on SingleStoreDB Cloud.

  • Added new session variable disable_remove_redundant_gby_rewrite to prevent the GROUP BY columns from being removed when used in an ORDER BY clause.

  • Added syntax to allow multiple leaf nodes to be detached using the DETACH LEAF command.

  • Introduced disk and memory availability checks that run before a database is allowed to be attached to a workspace.

  • Added the ability to cache histogram results during optimization to reduce the work performed by the histograms.

  • Added the ability to backup a database to an HTTPS S3 target with an unverified SSL certificate when using the option: verify_ssl: false.

2023-03-06 Version 8.0.13

  • Fixed an issue with column type checking on base and recursive case of a recursive common table expression.

  • Fixed an issue that may cause a "Table doesn't exist" error when a multi-insert contains expressions and the target table has a computed column as its shard key.

  • Expanded existing Unicode characters to support Private Use Area (PUA) code points. Including one in the Basic Multilingual Plane (U+E000–U+F8FF) and one in each plane 15 and 16 (U+F0000–U+FFFFD, U+100000–U+10FFFD).

  • Fixed a crash that could occur when a computed column definition refers to a table name.

  • Increased default blob cache size on hosts with less than 200GB of total disk space.

  • Added the ability to set the maximum_blob_cache_size_percent global variable for workspaces.

  • Fixed an issue with promote lock timeout errors that may occur during a rebalance due to a heavy ingest workload, which causes the merger to be slow to pause.

  • Introduced a new global variable subprocess_max_retries, which is used for retrying on retry-able connection failures during select into/backup queries for S3 and GCS.

  • New feature: ORDER BY SELF JOIN, creates a self join on ORDER BY LIMIT queries to take advantage of differences in bandwidth.

  • Fixed an issue with the schema registry so only superusers can see redacted pipeline metadata such as credentials and URLs.

2023-02-27 Version 8.0.12

  • Background snapshots are now allowed to run during BACKUP DATABASE commands. This prevents increased disk usage by logs during a long-running backup.

  • The CREATE_TIME, CREATE_USER, ALTER_TIME, and ALTER_USER columns in the information_schema.TABLESview are now properly set for views and TVFs (table-valued functions).

2023-02-21 Version 8.0.11

  • Fixed an issue that occurred when the MATCH_PARAM_<type> argument of the JSON_MATCH_ANYfunction was not in a predicate expression.

  • Improved the performance of the JSON_MATCH_ANY_EXISTSfunction over columnstore tables.

  • Fixed a profiling issue specific to non-collocated hash joins where the memory usage and disk spilling are missing under the join operators.

2023-02-13 Version 8.0.10

  • Fixed an issue where the database engine locks up on certain out-of-memory errors.

  • Fixed an issue where the audit logs now show the original user of a query forwarded to the master aggregator instead of the internal distributed user.

  • Fixed a parsing issue for queries containing multi-line comments near GROUP BY or ORDER BY clauses.

  • The num_background_merger_threadsengine variable is now settable on Cloud.

  • 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. 

  • Improved the query execution performance of JSON columns under a higher level of parallelism.

  • Expanded support for encoded GROUP BY query shapes containing expressions in aggregates.

  • Added support for incremental backups to blob stores where a single partition contains more than 5 TB of data.

2023-02-06 Version 8.0.9

  • Added the REVERSE() built-in string function that reverses the target string.

  • Added the DATETIME_PRECISION column to both PARAMETER and ROUTINESinformation_schema views. Also, the DATETIME_PRECISION column will include TIME and TIMESTAMP data types in the COLUMNSinformation_schema view.

  • Fixed an issue causing incorrect trace messages in master logs where clocks were incorrectly advancing from "0".

  • Added a new information_schema view named LMV_LOCAL_DATABASES. This view shows the state of local databases like SHOW DATABASES EXTENDED, but it can be queried against unlike show commands.

  • Improved the code generation performance of tables with a large number of indexes.

  • Added the /api/v2/jwks_setup endpoint to Data API to allow users to enable JWT Auth in Data API on Cloud. See jwks_setup for more information.

  • Sampling will no longer be used for table size estimation when statistics are present.

  • Fixed an issue where extra CPU was used when a read-only database is attached to a workspace without any writable mount for the read-only database.

  • The spilling_minimal_disk_spaceengine variable can now be set at startup.

2023-01-30 Version 8.0.8

  • Fixed an issue with the master aggregator leaking memory while performing a background task.

  • Fixed the case where the REGEXP_REPLACE and REGEXP_SUBSTR expressions can produce non-utf8 strings by introducing the new engine variableregexp_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.

  • Improved the performance on columnstore scans that perform multiple JSON extraction operations on the same JSON column.

2023-01-24 Version 8.0.7

  • Added a new OPTIMIZE TABLE <table_name> INDEX; command for columnstore tables. This command runs the optimization routine for columnstore secondary indexes manually.

  • Fixed an issue where recursive CTEs could fail to execute on upgrade to 8.0 if materialized CTEs were disabled.

  • Added the ignore_foreign_keys system variable, which allows foreign key syntax in CREATE TABLE commands, but completely ignores the key (it will not show up in metadata).

  • 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_collationengine variable. 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.

  • Fixed an issue with databases becoming unrecoverable when upgrading to version 8.0 if any tables contained shard keys using computed columns that call JSON_EXTRACT_STRING.

  • Added the option to authenticate Data API requests using JWT.

  • 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).

2023-01-17 Version 8.0.6

  • Fixed a performance regression when running SET <system variable> = <expression> commands. These commands are often run by client drivers on new connections.

  • Improved the performance of various commands (SHOW commands, DDL, etc.) when there are very many views or tables in the database (100s of thousands).

  • Added CREATE_TIME and ALTER_TIME columns to information_schema.pipelines. CREATE_TIME shows the date/time a pipeline was created or recreated. ALTER_TIME shows the date/time a pipeline was altered via an ALTER PIPELINE statement.

  • Fixed an issue introduced in version 8.0.4 where SHOW TABLE STATUS was incorrectly displaying views.

  • Added a new global variable, num_background_merger_threads, which controls the number of background merger threads to start for each node.

  • information_schema.table_statistics now correctly shows information about global temporary tables.

2023-01-11 Version 8.0.5

  • Added support to PROFILE for hash join spilling.

  • Fixed an upgrade issue where a database that was originally created on SingleStoreDB 6.8 or earlier and was then upgraded to 7.3 is then REPLICATED to SingleStoreDB version 7.8 could result in broken shard keys.

  • Added support for Recursive CTEs in cases where a Recursive CTE has dependency on a streaming result table outside of its dependency cycle.

  • Fixed an issue with Recursive CTEs where one Recursive CTE refers to another Recursive CTE and that second CTE would only read the rows from the first CTE’s final iteration.

  • 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 with aggregate functions using incorrect enum/set types that may result in inaccurate output in the operator tree.

  • Fixed an edge case issue which could cause the engine to hang during shutdown.

  • Improved performance of comparing utf8mb4 strings.

  • Added a new information schema view internal_table_statistics which shows memory use of SingleStoreDB internal metadata tables. The columns displayed are the same as those shown for table_statistics.

  • Fixed an edge case issue that could cause ADD AGGREGATOR to fail.

  • Reduced the memory used by ANALYZE queries by splitting approx count queries to only query a single JSON column at a time.

  • Improved the accuracy of network_time in PROFILE output for some query shapes.

  • The blob cache is now allowed to use more disk space by default on larger local disks. It will now use up to 90% of local disk space on disks over 2 TB in size instead of 75%.

  • Added a new global variable, maximum_blob_cache_size_percent, which can set the blob cache size as a value from 0 to 1 that is percentage of local disk the blob cache is allowed to use. The default value is 0.

  • Added a new global variable, num_background_merger_threads, which controls the number of background merger threads to start for each node. The default value is 2.

  • 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.

Last modified: September 18, 2023

Was this article helpful?