Maintenance Release Changelog
On this page
Fixed issue that caused an error (
Transaction rolled back mid-query) to occur when running cross database queries in multi-statement transactions.
Fixed a crash that could occur when
ALTER TABLE COMPRESSION=SPARSEis run in the same
ALTERstatement with an operation that doesn’t require data movement (ie.
ENABLED = ON
Fixed an issue where an edge case crash could occur during concurrent columnstore
UPDATEqueries while escalating from row level locking to table level locking.
Fixed a rare race condition that could cause sync replication to get stuck.
Fixed an issue with automatic histograms on clusters that were upgraded with the variable
TasksMaxto 128000 for
memsql.in order to prevent errors and/or unexpected node behavior.
service Previously, this setting was often exceeded, causing
systemdto limit the ability of
memsqldto fork processes.
memsqlctl start-nodeto check the validity of NUMA configurations when nodes are restarted.
If the system doesn’t have NUMA configurations, the nodes will be restarted. If any of the nodes have invalid NUMA configurations, the NUMA bindings will be recalculated for all the nodes on the host.
Fixed a timeout error that occurred when running
REBALANCE PARTITIONSon databases with large columnstore tables.
Improved the speed of server shutdown and of recovery for databases with large numbers of tables.
This improvement is evident at 1,000 tables or more, and increases significantly after 10,000 tables.
Fixed an issue that caused
RESTOREcommands to fail in cases where a database contained a large number of reference tables.
Fixed an issue that caused
DROP TEMPORARY TABLE IF NOT EXISTSto incorrectly return an error in cases where the table didn’t exist.
Fixed a crash caused by a check on the maximum number of partitions allowed on a leaf node.
Now, an error message is surfaced when this is exceeded.
Fixed issue that caused an error (
Transaction rolled back mid-query) to occur when running cross-database queries in multi-statement transactions.
Reduced blocks on
Added a new variable,
default_, which sets a threshold for the number of rows that are locked when updating rows in a columnstore table before a table lock is acquired.
columnstore_ table_ lock_ threshold For more information, see List of Engine Variables
Fixed a crash caused by timestamp values during daylight savings time changes in columnstore tables using a timestamp as a sort key or unique key.
Fixed a crash that occurred when querying
schema. COLUMNAR_ SEGMENTS
schema. MV_ COLUMSTORE_ FILES
schema. MV_ COLUMNAR_ SEGMENT_ INDEX
ALTER TABLE … DROP INDEX …is being run concurrently in order to drop a secondary columnstore index.
ALL-RESULTSmode when clients connect using server side prepared statements.
Previously, enabling audit logging disabled use of prepared statements.
Fixed a crash that occurred when
ANY_is included in a query.
Fixed a crash that occurred where a query-typed variable accesses a table via a 3-part name (for example,
dbname.) and the database referred to does not exist.
tablename. columnname Blocked the creation of pipelines which refer to computed columns or columns set via a default value in the
Snapshots of the memsql system database are now taken more frequently.
Previously, the memsql database was slower to recover on higher latency disk than user databases; more frequent snapshots speed up restart times.
CHECK BLOB CHECKSUMcommand now supports a
WITH REPAIRoption that can repair file system corruptions as long as one copy of a corrupt columnstore blob file exists on the cluster.
Fixed an issue that occurred when using server side prepared statements via the newer versions of the MariaDB client.
The MySQL client is unaffected.
Fixed a wrong result issue when using
INwith a columnstore secondary hash index, which caused only the first of multiple values with the same hash in a segment to be output.
Fixed wrong result when using
ORDER BYin query type variables.
Fixed an issue where
REPLICATE DATABASEwould fail in cases where no replicated database existed yet and the node containing the master aggregator was previously replaced with a new node.
SHOW PROCESSLISTreturns the IP address of the client (in the Host column) if the host name cannot be resolved.
Fixed an issue that occurred when the engine variable
interpreter_was set to
interpret_, where the first run of the query remained in interpreted mode even after compilation had finished.
Added support for
ALTER PIPELINE ..
. . SET RESOURCE POOL
Reduced the CPU usage required for many threads to allocate memory for variable length strings.
Added a new engine variable
convert_which, when set to
nonunique_ hash_ to_ skiplist
ON, creates a skiplist index in place of any non-unique hash index.
By default, the variable is set to
Pipelines no longer stop executing if free disk space drops lower than
5 * <the value of the minimal_.
disk_ space engine variable> They now stop executing if free disk space drops lower than
400 mb + <the value of the minimal_.
disk_ space engine variable>
Improved the error message returned when
REMOVE AGGREGATORis run on the master aggregator.
The behavior of the
max_engine variable no longer applies to DDL queries.
compilation_ time_ s Eliminating compilation timeouts for these queries, especially for
ALTER TABLE, will prevent the queries from potentially running forever.
Fixed a compatibility issue that occurred when running newer versions of SAP Business Object Data Services (BODS) against MemSQL.
The issue was that the command
SET sql_was not supported by MemSQL.
mode = <expression>
Fixed an issue where auto-attach would fail to attach a partition but succeed in bringing the leaf online, resulting in offline partitions.
Ensured that any re-used existing replica partition is still forced in sync as part of the copy operation run as a step of a
Previously, this was a cause of failure in cases where
REBALANCEfailed once prior.
Fixed a failure when running a
ROLLUPquery over a constant expression.
Disallowed parameter names with
.in them when defining a function or stored procedure.
Fixed an issue where joins with reference tables are sometimes executed using Cartesian joins, even when faster joins are possible.
Improved the performance of rebalance partition operations that copy partitions with many small columnstore BLOB files.
Fixed an issue where the engine variable
explicit_could be set to a different value on new nodes added to the cluster, as compared to the existing value already set on existing nodes.
defaults_ for_ timestamp This would cause the error
partition’s table metadata are out of syncwhen queries were run.
ANALYZE TABLEnow requires the
ALTER) permissions to execute.
Improved the performance of batch deletes on columnstores.
The increase in performance depends on the encoding of the columns.
preserve_is set to
original_ colstore_ json
ON, null values and empty arrays are preserved in JSON columns in columnstores.
Fixed an issue where user-defined tables having the same name as system tables, such as
USERS, were treated as case-sensitive when
table_was set to
name_ case_ sensitivity
SSL ciphers that use elliptic curves are now supported.
Added an optimizer setting that allows you to adjust the cost of performing a cross join.
STATEcolumn in the
information_view now shows a pipeline in an error state when the pipeline stops due to insufficient disk space.
Fixed an issue where running
STOP REPLICATINGwould sometimes cause replica partitions, after becoming primary partitions, to replicate asynchronously when the original primary database used synchronous replication.
Improved predicate transitivity rewrites to avoid adding redundant predicates.
This fixes compile timeouts for some queries with large numbers of predicates.
Fixed an issue where filters were sometimes not being used as hash join conditions if they involved expressions.
This was causing filters to be evaluated on more rows than needed.
Correctly generate an error when running
ALTER VIEWon a schema-bound view v1, where a schema-bound view v2 refers to v1.
Fixed an auto-attach failure in specific failure conditions where a node quickly got marked offline and then online by the aggregator, but the node itself did not restart.
Improved the parallelism of heartbeat reconnects.
This fixed erroneous node failures in cases of issues causing slow connections, when multiple nodes were unhealthy.
Fixed a crash where
INSERT .referred to tables not being written to.
. . SELECT . . . ON DUPLICATE KEY UPDATE
Added the engine variable
extract_ string_ collation When the variable is set to
AUTO(the default setting) or
JSON, the extracted string has the same collation as the JSON object that is being extracted from.
When the variable is set to
server, the extracted string has the same collation as the
Reduced memory usage in certain outer join queries that use single table or constant filters.
Fixed an issue where views using set operations (such as
MINUS) could be parsed incorrectly when being queried.
Fixed an issue with
INSERT .queries that use generator functions (functions that are computed on the aggregator, with the results sent to the leaves).
Fixed an intermittent incorrect permission denied error that occurred when views were used in queries on secondary clusters.
Improved the performance of the query that is run on
information_by MemSQL Ops schema monitoring.
schema. OPTIMIZER_ STATISTICS
strict_ mode The
django-mysqllibrary uses the value of this variable to connect to MemSQL.
Improved the efficiency of locking done by the security manager to allow more concurrent login/logout operations.
Added an error message to return when a command fails due to a bug:
<operation name>failed without specifying a detailed error message
Fixed an issue where the security checks done for temporary tables could result in an incorrect access denied error.
When external authentication to MemSQL (via PAM, Kerberos, etc.
) is slow, track the time needed to authenticate and add logging to the tracelog. This is done for troubleshooting purposes.
RESTOREcommand can restore a 6.
x backup to a later version, using a different database name than was specified when the database was backed up.
Fixed an issue where views could not be queried after being created, due to a parsing error.
Fixed an issue where synchronous replication incorrectly consumed all of the disk space on the host containing either the master or replica partitions.
The issue occurred when the host containing the replica partitions had a specific type of network connectivity problem with the host containing the master partitions.
Fixed an issue that could cause an online upgrade to fail if a reference database needs to reprovision in the middle of the upgrade.
Fixed an issue where incorrect reuse of query plans stored on disk could cause the error
No function with id 23003 exists.
You can specify that the
SHOW VARIABLEScommand returns only cluster-wide variables.
Fixed a bug where dropping a secondary index on a columnstore table and then adding another secondary index on the table (via
ALTER TABLE) causes the secondary indexes on the table to become corrupted after a node restart.
Fixed a bug where using
ALTER TABLEto add a secondary index to a columnstore table, truncating the table, and then restarting the node would cause the added secondary index to be disabled and alters on the table to crash the node.
Added Google Cloud Storage (GCS) pipelines to the
histogramcolumn to the
schema. COLUMN_ STATISTICS
pathcolumn to the
schema. PLANCACHE This column contains the path to the file where a query plan is stored on disk.
Avoid inaccurate sampling estimates for expressions that use
Fixed a crash that occurred when
PERCENTILE_were used with a sub-select.
int96support to Parquet pipelines.
EXPLAINquery runs, return a warning when the query is run on tables containing zero rows.
Fixed a crash that occurred during query rewrites for complex
DELETEqueries having subselects.
Fixed an error that occurred when a plan was dropped from the plancache during a distributed join.
Added clearer error messages when queries are unable to run due to workload manager or resource governor settings.
Also, added better logging for these errors.
Queries that are built from
TO_and query type values are parameterized when they run.
QUERY() Parameterization of these queries allows plans to be reused in the plancache.
Added support for pipelines that extract data from Google Cloud Storage (GCS).
Fixed a locking issue that could cause dropping a temporary table to fail.
Now, queries inside of stored procedures that use variables run as single partition queries if the queries only need to access data within single partitions.
Previously, these types of queries did not run as single partition queries.
Fixed an issue where
CLEAR ORPHAN DATABASESdid not handle table names that require escaping, such as table names prefixed with
ANALYZE TABLEincorporates the behavior of the
degree_ of_ parallelism
Now, call the
malloc_function less aggressively.
trim() This function shrinks the memory cached by libc malloc.
Added the columns
schema. TABLES These columns were previously returned when running
SHOW TABLES, only.
Now, improve the performance of queries that use hash outer joins with some types of table filters.
Fixed an incorrect
Transaction rolled back mid-queryerror and other expected behavior that could occur during a multi-statement transaction if the transaction was started on at least 65 partitions.
Fixed an error that occurred when
SELECT .was run on a columnstore table.
. . GROUP BY . . . ORDER BY RAND()
Now, increase the number of columns that
SELECTqueries can return.
Removed a limitation on the number of columns in a table allowed for columnstore sampling.
Increased the number of keys allowed for optimized columnstore JSON storage in some cases.
Fixed a deadlock that is possible when the
RESTORE DATABASEcommand fails and attempts to remove the restored database partitions that were created before the command failed.
Now, cluster-wide operations that take a global lock, such as
REBALANCE, update the
schema. PROCESSLIST The update indicates that a command is blocked on the lock.
sample_ per_ partition_ limit This variable controls the maximum number of rows sampled per partition for columnstores.
Now, stop examining samples of columnstore tables that have many columns.
Continue collecting samples for these types of tables.
Fixed an issue with kerberos-related
CONFIGclause keys in
CREATE PIPELINE .being considered invalid by HDFS pipelines; added the
allow_option to such pipelines to skip
CONFIGclause validity checks.
Now, periodically shrink the memory cached by libc malloc by calling
table_engine variable can be used to change whether MemSQL treats tables, views, and table aliases as case-sensitive or case-insensitive.
name_ case_ sensitivity This variable can only be changed if no user databases have been created on the cluster.
Fixed a crash that occurred when running
UPDATE .which sets a sparse
. . SET . . .
VARCHARcolumn that had been previously assigned to earlier in the same
. . SET . . . Fixed the same issue that occurred when setting a sparse
Fixed an issue where cross-database distributed joins could fail to cleanup the temporary result tables created to run the join.
REPLICATE DATABASEcommand requires a primary database and its secondary database to have the same durability setting (
Fixed an issue that caused
STOP REPLICATINGto encounter an error after a database was upgraded from MemSQL 6.
x to MemSQL 7. 0.
LOAD DATAincorporates the behavior of the
insert_ into_ computed_ column
Fixed a crash that sometimes occurred when calling the
MAXfunction on an
Now, HDFS Pipelines skip files in the data source that are under the
Added the clause
NULL DEFINED BY .to the syntax of
. . OPTIONALLY ENCLOSED
LOAD DATA ..
. . When this clause is used,
NULLvalues enclosed with quotes as
Now, snapshot reference databases after
ALTER TABLEis run.
Also, snapshot all databases after
Fixed a memory leak in queries that use full-text indexes.
Fixed an issue with database replication that occurred when the
snapshots_engine variable is set to 1.
Now, delete the existing samples associated with a table when columnstore sampling on the table is disabled.
Also, reset the sampling flag on all segments associated with the table so they will be resampled if columnstore sampling is re-enabled.
Initial GA release of MemSQL 7.
Last modified: June 22, 2022