2.00.15
Version: 2.00.15 Compatibility Level 2 with 2.00.14
For details, see Compatibility Changes.
New Features
- Introduced a set of new functions and configuration parameters to enhance login
security, including (2.00.15.1):
- Automatic account lockout after failed login attempts.
- Manual user lock/unlock, retrieval of user lock status.
- Customizable password complexity rules, password expiration notifications, and prevention of password reuse.
- Added configuration parameter enableStructuredAuditLog to structured binary-format audit logs. (2.00.15.1)
- Added the functions
scramClientFirstandscramClientFinal, and introduced the authMode parameter to thecreateUserfunction to support the SCRAM (Salted Challenge Response Authentication Mechanism). (2.00.15.1) - Added support for transparent data encryption (TDE).
- Added support for data transmission encryption.
- Enhanced login security.
- Added support for data masking.
- Added configuration parameter maxJoinTaskRetry to specify the maximum retry attempts for a single SQL JOIN task under memory pressure.
- Added configuration parameter allowTSDBLevel3Compaction to set whether to
allow compaction of level 3 files. Added new parameter level to function
triggerTSDBCompactionto specify the level at which to trigger file compaction. - Added function
callableFixedRateBondDirtyPriceto calculate the dirty price of a fixed-rate bond with embedded options. - Added function
getDFSDatabasesByOwnerto list databases created by the specified user. - Added function
gmd5androwGmd5to generate MD5 hashes. - Added function
cubicHermiteSplineFitto performs cubic Hermite interpolation on the given vectors. - Added function
rmsto calculate the root mean square value of the input. - Added function
boxcoxto transform input data into an approximately normal distribution using the Box-Cox transformation method. - Added function
arimato implement the Autoregressive Integrated Moving Average (ARIMA) model for time series analysis. - Added function
runSQLto avoid SQL injection through dynamic parameter binding. - Added function
getSlaveReplicationExecutionStatusto obtain the status of asynchronous replication tasks running on data nodes of the slave cluster, providing execution information for each thread. - Added support for online modification of the enableNullSafeJoin
configuration parameter through the
setDynamicConfigfunction and added functiongetEnableNullSafeJointo retrieve the dynamically modified value of enableNullSafeJoin. - Introduced in-memory online transaction processing (IMOLTP) engine, enabling to save data in memory to avoid disk I/O overhead.
- Introduced IOTDB engine for management of IoT data points.
- Added SQL predicates
notLike,notBetween, andnotInand their corresponding functions.
Improvements
- Enhanced storage-compute separation features (2.00.15.1):
- Supported specifying multiple cache directories for a compute node.
- The maximum memory cache size on compute nodes is now specified in GB instead of MB.
- Supported automatic flushing of memory cache to disk after graceful shutdown.
- Added functions to cache the specified data on compute groups, with task status monitoring supported.
- Added function
getComputeNodeCacheDetailsto obtain detailed cache information on the current node. - Added new parameters database and table for function
clearComputeNodeCacheto clear the memory and disk cache of specified database/table. - Enabled compression of disk cache compute nodes.
- Improved error handling in distributed queries when comparing CHAR constants with STRING partitioning columns in the WHERE clause. The system now raises an error message. (2.00.15.1)
- Optimized the query performance for VALUE-partitioned TSDB databases when filtering on partitioning columns. (2.00.15.1)
- Added support for the ANY type in stream tables and in-memory tables. (2.00.15.1)
- Added the "updateTime" field to the backup log file. (2.00.15.1)
- Added the recording of operations on the persisted MVCC table to the log. (2.00.15.1)
- Enhanced the
DELETEstatement performance. (2.00.15.1) - Enhanced the stability of batch job execution under high-load and high-concurrency scenarios.
- Optimized the logic for deserializing function views and scheduled job files during node startup. Previously, if a function contained a dictionary with function definitions as values, deserialization would fail, causing an unexpected shutdown. Now, it directly throws an error.
- The
getClusterDFSDatabasesfunction now allows non-admin users to retrieve distributed databases in the cluster that they have permission to access. - Privileges QUERY_RESULT_MEM_LIMIT and TASK_GROUP_MEM_LIMIT can now be set for user groups.
- The audit log now tracks all logins and logouts, permission changes, new connection creations, and configuration file updates.
- The query logs (<HomeDir>/resource/hardware.log) now track the amount of data sent and received.
- Enhanced certain parameters for FICC-related functions to support specifying STRING or DURATION type in addition to integers.
- The
schemafunction now provides detailed information, including dbUrl and tableName for DFS tables, and keyColumn for keyed tables. - The
loadTextfunction now supports parsing values of DECIMAL128 type. - The
sortBy!function now supports an empty in-memory table as input. - The
garchfunction now supports DECIMAL type. - When the
aggrTopNfunction receives a typed empty vector as input, it now returns an empty vector instead of throwing an error. - The
bfill/ffillfunction now supports filling null values in array vectors. - Added parameter index for the
interpolatefunction to allow interpolation of X based on the index vector. - The tmTopN functions now accept trading calendars (market identifier) as DURATION scalars in their window parameters.
- The
iiffunction now supports tuples as inputs for the trueResult and falseResult parameters. - Added assembleRule parameter to higher-order functions, replacing the consistent parameter, to specify how the results of sub-tasks are merged into the final result.
- The
transposefunction now supports converting nested dictionaries into a table and merging multiple dictionaries into a single table with array vector and tuple columns. - Optimized TSDB engine performance for concurrent queries.
- Added new parameter isInnerJoin to function
createLookupJoinEngineto enable inner join operations. - Added parameter mergeLastWindow for function
createDailyTimeSeriesEngineto handle irregular session periods. - Added parameter preCache for function
enableTablePersistenceto specify the number of records to load into memory from the persisted stream table at server startup. - The TRUE and FALSE keywords in SQL queries are now case-insensitive.
- Parallel join operation is now supported when enableNullSafeJoin is set to false.
- Enhanced the stability for concurrent SQL queries.
- The UPDATE statement now supports modifying array vectors in in-memory tables and adding columns of the ANY type to in-memory tables.
- Added support for partition pruning when modifying data in partitioned DFS tables with the UPDATE/DELETE statement.
- Dictionary keys can now include keywords, such as
context.
Issues Fixed
- Fixed a memory leak when calling a user-defined recursive function. (2.00.15.1)
- Fixed an error when deleting column(s) from a keyed table if any column name contains uppercase letters. (2.00.15.1)
- Fixed an error that occurred during join operations on shared keyed tables. (2.00.15.1)
- Fixed an issue where agent was not automatically set for nodes added via
addNodewithout a cluster restart. (2.00.15.1) - Fixed incorrect prompt message shown after password expiration when
enhancedSecurityVerificationis enabled. (2.00.15.1) - Fixed an issue where using the ols function with PIVOT BY on in-memory tables involving multiple groups could cause the error: "The number of observations must be more than the number of factors." (2.00.15.1)
- Fixed the issue where the server entered an infinite loop when executing
decimalFormat(0, '0.00E0'). (2.00.15.1) - Fixed server crashes that occurred when queries with
lead/laganalytic functions were executed in MySQL syntax mode. (2.00.15.1) - Fixed server crashes when appending an empty table to a keyed stream table. (2.00.15.1)
- Fixed server crashes caused by appending a partitioned DFS table to another. The system now reports an error for such case. (2.00.15.1)
- Fixed server crashes caused by concurrent writes to an in-memory keyed table. (2.00.15.1)
- Fixed server crashes caused by concurrent disk reads in the TSDB engine due to missing filter conditions in PIVOT BY after partition pruning. (2.00.15.1)
- Fixed occasional server crashes when the X and Y of the
corrfunction were tables with different numbers of columns. (2.00.15.1) - Fixed server crashes caused by using UPDATE/DELETE with WHERE EXISTS. Now it raises an error instead. (2.00.15.1)
- Fixed data reading errors when TSDB level files included array vectors.
- Fixed an issue where the server failed to report an error when an invalid path was specified for the py plugin in the globalDynamicLib parameter.
- Fixed unexpected partition data after restoring replicas.
- Fixed server crashes when querying a keyed or indexed table with multiple primary key columns, where the filter condition contained an empty SYMBOL vector.
- Fixed an issue in high-availability clusters where an existing table handle
could not access data from newly added partitions without obtaining a new handle
(reloading table via
loadTable). - Fixed the issue causing incorrect results in a function view after server restarts when the view included CROSS JOIN (ANSI SQL compliant) combined with other types of table joins.
- Fixed an intermittent thread assignment issue where the system may not allocate all stream subscription tasks to threads when enabling VS Code debugging.
- Fixed an error where SQL queries failed if they contained both a user-defined
aggregate function returning multiple values and a GROUP BY clause with
interval. - Fixed an issue where higher-order functions might produce incorrect results when their input was a user-defined function that returned its parameter unchanged.
- Fixed precision loss for the
segmentbyfunction when calculating data of DECIMAL128 type. - Fixed an issue in heterogeneous replay where data sources (generated by
replayDSwith timeRepartitionSchema specified) were replayed in a disordered manner. - Fixed a data loss issue in N-to-N replay that occurred when the data being replayed included empty partitions.
- Fixed an issue where adding a metric to the left semi join engine via the
addMetricfunction could lead to incorrect results if the columns of the new metric were not included in the metrics parameter. - Fixed memory spikes that occurred when stream data consumption couldn't keep pace with queued data.
- Fixed a function resolution error when using
funcByNamein a user-defined function specified by filter['handler'] in thestreamFilterfunction. - Fixed a type parsing error that occurred when passing a partially applied
user-defined function to the
movingfunction in the reactive state engine. - Fixed a "unrecognized column name" error that occurred when executing a multi-table JOIN query, if some partitions were offline due to node failures in the cluster.
- Fixed an issue where frequent concurrent updates and queries on tables in a TSDB database could result in empty results.
- Fixed server crashes during concurrent execution of SQL queries when multiple joins involved a subquery as one of the tables, or when the FROM clause contained a subquery.
- Fixed an error for queries on tables in TSDB databases when a sort column was
specified as a GROUP BY column and the
nuniquefunction was specified in the SELECT statement with parameters of type STRING or SYMBOL. - Fixed server crashes when incorrect parameters were passed to the
makeKeyfunction within a WHERE clause. - Fixed an issue where calculating maximum (via
max) of a STRING column (with the first row being null) by group could result in incorrect results. - Fixed a disk flush failure that occurred when the delta-of-delta value overflowed for LONG or NANOTIMESTAMP columns using the "delta" compression method.
- Fixed server crashes caused by a certificate format mismatch during online updates.
-
Fixed server crashes caused by OpenSSL version mismatch between server and plugins.
