3.00.3
Version: 3.00.3 Compatibility Level 2 with 3.00.2
For details, see Compatibility Changes.
Release Date: 2025-05-19
Available Downloads:
New Features
- Launched ORCA, an enterprise-level real-time computing platform that enables easy development and deployment of latency-sensitive distributed stream processing tasks using declarative programming.
- 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.
- Introduced a set of new functions and configuration parameters to enhance
login security, including:
- 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.
- Added the functions
scramClientFirst
andscramClientFinal
, and introduced the authMode parameter to thecreateUser
function to support the SCRAM (Salted Challenge Response Authentication Mechanism). - Added function
floatingRateBondDirtyPrice
to calculate the dirty price per 100 face value for a floating rate bond. - Added function
callableFixedRateBondDirtyPrice
to calculate the dirty price of a fixed-rate bond with embedded options. - Added function
convertibleFixedRateBondDirtyPrice
to calculate the dirty price per 100 face value for a convertible bond. - Added function
amortizingFixedRateBondDirtyPrice
to calculate the dirty price per 100 face value for an amortizing fixed-rate bond. - Added function
getDFSDatabasesByOwner
to list databases created by the specified user. - Added function
gmd5
androwGmd5
to generate MD5 hashes. - Added function
cubicHermiteSplineFit
to performs cubic Hermite interpolation on the given vectors. This function can be called in the fitMethod parameter ofcreateYieldCurveEngine
. - Added function
rms
to calculate the root mean square value of the input. - Added function
boxcox
to transform input data into an approximately normal distribution using the Box-Cox transformation method. - Added function
arima
to implement the Autoregressive Integrated Moving Average (ARIMA) model for time series analysis. - Added function
runSQL
to avoid SQL injection through dynamic parameter binding. - Added support for online modification of the enableNullSafeJoin
configuration parameter through the
setDynamicConfig
function and added functiongetEnableNullSafeJoin
to retrieve the dynamically modified value of enableNullSafeJoin. - Added SQL predicates
notLike
,notBetween
, andnotIn
and their corresponding functions. - Added function
createThresholdEngine
to create a threshold engine for aggregate calculations triggered by cumulative value thresholds. - Added functions
deleteMarketHoliday
andlistAllMarkets
to manage trading calendars on the current node. - Added the built-in
CEPMonitor
class to the CEP engine and introduced new functions to retrieve monitor and listener instances. - Added function
getLocalIOTDBStaticTable
to retrive the static table of an IOTDB database stored on the local node. - Added functions and configuration parameters to enhance login security.
- Added and optimized functions to support the SCRAM login protocol.
- Added functions to facilitate multi-cluster management operations.
- Added function
kernelRidge
which combines ridge regression regularization with the kernel trick to model complex nonlinear relationships in the data and outputs a regression prediction model. - Added support for creating connections and releasing resources manually via Linux terminal when Web connection fails. This feature is intended for emergency maintenance and is not recommended for routine operations.
- Added configuration parametermaxQueryExecutionTime to specify the maximum execution time (in seconds) for a single query.
- Added function
pchipInterpolateFit
to apply piecewise cubic Hermite interpolation to the given numeric vectors X and Y. - Added function
setChunkLastUpdateTime
to manually set the last update time of specified chunks. - Added function
compose
to create a composite function. - Added function
temporalDeltas
to calculate time differences between adjacent elements in a data structure. - Added function
temporalDiff
to calculate time differences between two data structures. - Added function
deepCopy
to create a deep copy of an object. - Added function
bvls
to perform Bounded-Variable Least Squares (BVLS) regression and return the estimated coefficients. - Added configuration parameter autoConversionToColumnarTuple to control whether a tuple column (of ANY type) with consistent-typed elements is automatically converted to a columnar tuple during in-memory table construction. To restore the legacy behavior, set this parameter to true.
Improvements
- Enhanced storage-compute separation features:
- 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
getComputeNodeCacheDetails
to obtain detailed cache information on the current node. - Added new parameters database and table for function
clearComputeNodeCache
to clear the memory and disk cache of specified database/table. - Enabled compression of disk cache compute nodes.
- Improved memory stability by providing functions and configuration options to prevent OOM (Out of Memory).
- The PKEY engine's bloomfilter index now supports the following types: TEMPORAL, BINARY, and COMPLEX.
- Added an error message when
chunkGranularity="DATABASE"
is specified during IOTDB engine creation. - 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
getClusterDFSDatabases
function 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
schema
function now provides detailed information, including dbUrl and tableName for DFS tables, and keyColumn for keyed tables. - The
loadText
function now supports parsing values of DECIMAL128 type. - The
sortBy!
function now supports an empty in-memory table as input. - The
garch
function now supports DECIMAL type. - When the
aggrTopN
function receives a typed empty vector as input, it now returns an empty vector instead of throwing an error. - The
bfill
/ffill
function now supports filling null values in array vectors. - Added parameter index for the
interpolate
function 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
iif
function 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
transpose
function now supports converting nested dictionaries into a table and merging multiple dictionaries into a single table with array vector and tuple columns. - The
ewmMean
function now supports halfLife of DURATION type, along with a new parameter times to specify the timestamp of each observation. - Added support for offset=-3 in
subscribe
to subscribe from the earliest retained record in the current stream table, including both in-memory and persisted data. - Optimized TSDB engine performance for concurrent queries and improved the efficiency of DELETE FROM operations.
- Added new parameter isInnerJoin to function
createLookupJoinEngine
to enable inner join operations. - Added parameter mergeLastWindow and mergeSession for function
createDailyTimeSeriesEngine
. - Added support for metric calculation on DECIMAL128 data in the reactive state engine.
- Added parameter preCache for function
enableTablePersistence
to 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 join order optimization.
- 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
. - Optimized memory cache statistics for symbol base.
- After calling
cancelJob
for a replay job, subsequent code execution is now terminated with an error message. - Added a limit of 1024 for the number of conditions and the length of expressions in the WHERE clause. Queries exceeding this limit will now throw an error.
- When using the LIMIT or TOP clause, the system will no longer check the number of partitions, preventing errors caused by an excessive number of partitions.
- Optimized the query performance when using the
LIMIT
statement. - Optimized the
temporalParse
function behavior to returnNULL
instead of an out-of-range error. - Optimized the dynamic selection mechanism of the GROUP BY algorithm.
- Optimized the partition pruning mechanism.
- Improved the error messages of the
tmbeta
function. - Added support for the ANY type in stream tables and in-memory tables.
- 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.
- Added the “updateTime” field to the backup log file.
- Added the recording of operations on the persisted MVCC table to the log.
- Improved the
rand
function by making the count parameter optional, allowing it to return a random scalar when count is not specified. - Added support for the
dropColumns!
function to delete non-partitioning columns in DFS tables. - Added support for BLOB type index columns in TextDB.
- Added a new parameter chunkId to the
triggerNodeReport
function, allowing reporting of specified chunk information. - The accessType parameter in the
grant
function now supports MAX_PARTITION_NUM_PER_QUERY to limit the number of partitions that can be queried at one time. - Added support for using non-constant expressions as values in JSON objects.
- Classes now support array vector member variables.
- Optimized the performance of
getClusterDFSDatabases
andgetClusterDFSTables
when processing clusters with a large number of chunks (hundreds of thousands or more). - Added support for backup and restore of empty tables in an IOTDB database.
- Optimized class-related features:
- Support for declaring array vector member variables.
- Support for keyword arguments in member functions.
- Support for class member functions returning multiple values when used in the reactive state engine.
Issues Fixed
- 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.
- Fixedan issue where catalog information might be lost after performing checkpoint operations on ACL logs.
- 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 precision loss for the
segmentby
function when calculating data of DECIMAL128 type. - Fixed a data loss issue in N-to-N replay that occurred when the data being replayed included empty partitions.
- Fixed a type parsing error that occurred when passing a partially applied
user-defined function to the
moving
function in the reactive state engine. - Fixed an issue where the forceTriggerSessionEndTime parameter did not
take effect when mergeSessionEnd was set to true in
createDailyTimeSeriesEngine
. This issue was introduced in versions 3.00.2.4. - Fixed an error when inserting array vectors into the cross-sectional engine if the triggeringPattern was set to "perRow".
- 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 caused by naming conflict between table names and built-in functions during table join operations.
- Fixed an error that occurred during join operations on shared keyed tables.
- Fixed an issue where frequent concurrent updates and queries on tables in a TSDB database could result in empty results.
- Fixed an issue where memory usage statistics were inaccurate when a stream table contained array vector columns.
- Fixed an issue where stream table permissions were not automatically revoked
after executing operations such as
undef
,dropStreamTable
. - 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 issue where calculating maximum (via
max
) of a STRING column (with the first row being null) by group could result in incorrect results. - Fixed server crashes caused by a certificate format mismatch during online updates.
- Fixed server crashes caused by OpenSSL version mismatch between server and plugins.
- Fixed potential server crashes when the stream dispatch engine writes data to an asynchronously persisted stream table with stacked threads.
- Fixed server crashes caused by a data race between the network thread and the subscription thread during stream table subscription.
- Fixed potential crashes in
movingWindowData
when processing large scale datasets. - Fixed a data race due to concurrent access to partition metadata before a node goes online or offline.
- Fixed server crashes caused by cache allocation failure in the OLAP proxy storage engine of the storage-compute separation architecture.
- Fixed server crashes caused by invalid parameters passed to
sqlColAlias
. - Fixed server crashes caused by OOM issues in
createWindowJoinEngine
when processing large scale data. - Fixed a parsing failure when the user-defined function was used as an operator within a module.
- Fixed an issue where SQL queries with a WHERE clause containing an empty condition returned an empty table instead of an error.
- Fixed an issue where agent was not automatically set for nodes added via
addNode
without a cluster restart. - Fixed incorrect prompt message shown after password expiration when
enhancedSecurityVerification
is enabled. - Fixed server crashes that occurred when queries with
lead
/lag
analytic functions were executed in MySQL syntax mode.
Deprecated Features
Deprecated functions registerSnapshotEngine
and
unregisterSnapshotEngine
.