2.00.6

New Features

  • Added new function cells to retrieve multiple cells from a matrix by the specified row and col indices.

  • Added new function randDiscrete for sampling from a discrete probability distribution.

  • Added new functions dynamicGroupCumsum and dynamicGroupCumcount, and their state functions in the reactive state streaming engine.

  • Added new function getTSDBCompactionTaskStatus to get the status of level file compaction tasks of the TSDB engine.

  • Added new function createDistributedInMemoryTable to create a distributed in-memory table.

  • Support tiered storage to store cold data on slow hard disks or object storage (Amazon S3). These data are read-only.

  • Added new parameter sortKeyMappingFunction to function createPartitionedTable in the TSDB engine to apply mapping functions to the sortKey for optimal performance.

  • Optimized the update performance in the TSDB engine.

  • Added new function toCharArray to split a string into a vector of characters.

  • Added new configuration parameter maxDynamicLocalExecutor to specify the maximum number of dynamically-generated local executors and the frequency at which they are generated.

  • Added transaction statement to encapsulate multiple SQL statements on an in-memory table or a shared table into one transaction.

Improvements

  • Optimized the performance of select count(*) on a table in the TSDB database.

  • Reduced the time to load the index of the TSDB storage engine.

  • Improved the performance of writing and reading SYMBOL type of data.

  • The window functions cummed and cumpercentile can now be used as state functions in the reactive state streaming engine (createReactiveStateEngine).

  • Added new parameter closed to time-series streaming engines (createTimeSeriesEngine and createDailyTimeSeriesEngine) to specify whether the left boundary or right boundary of the calculation window is inclusive.

  • The keyColumn parameter of streamEngineParser is now case-insensitive.

  • Added new parameter keyPurgeFreqInSec to time-series streaming engines (createTimeSeriesEngine and createDailyTimeSeriesEngine) to remove groups with no incoming data for a long time.

  • Optimized the performance for using user-defined functions in time-series streaming engines (createTimeSeriesEngine and createDailyTimeSeriesEngine).

  • streamFilter now supports processing columns of standard stream tables. Previously it only processes the output of heterogeneous replay().

  • The metrics parameter of createTimeSeriesEngine and createDailyTimeSeriesEngine now supports matrices.

  • Now support queries where (1) the group by columns are not the partitioning columns, and (2) order-sensitive functions are applied to the queried columns.

  • The rule parameter of resample now supports "H", "L", "U", "min", "N", and "S". Added new parameters closed, label, and origin to set the interval of groups.

  • Function byRow now supports the array vector.

  • If an error is raised during the execution of the replay function, a runtime exception will be thrown.

  • Function matrix can convert a fixed length array vector to a matrix.

  • Optimized the performance of generating random integers.

Issues Fixed

  • An OOM error caused by concurrent writes, queries or calculations may lead to a server hang-up.

  • If data deduplication is enabled in the TSDB engine, when writes and reads are conducted at the same time, the result may be incorrect.

  • When writes and reads are conducted in the OLAP engine at the same time, the result may be incorrect.

  • A query using exec with limit 1 in the TSDB engine returns a table rather than a vector.

  • When writing to an OLAP cache engine, if an exception other than OOM occurs, the system will repeatedly attempt to rewrite, which leads to a server hang-up.

  • If a data node is started via the web interface or a cluster is restarted repeatedly, defunct processes are generated.

  • If moveReplicas is called after executing suspendRecovery, it fails to move some of the chunks.

  • If a cluster is rebooted after submitting concurrent tasks, some chunks are always in the status of RECOVERING.

  • If delete is used to delete large amount of data, incorrect information may be written to the checkpoint file, which causes a node to crash and cannot be restarted.

  • If snapshot is enabled in the reactive state streaming engine, resubscription to a table with different metrics causes a server crash.

  • Appending a single record to the lookup join engine may cause a server crash.

  • If the data written to a high-availability stream table are in different schema, they can still enter the persistent queue, and the error "Can't find the object with name" is reported after a leader switch.

  • If the parameter fill is specified for createDailyTimeSeriesEngine, the result of date without data is filled.

  • A non-admin user can use function createUser.

  • The command changePwd does not limit the length of the new password.

  • If an array vector takes up large amount of memory but does not reach warningMemSize, an OOM error is raised.

  • matrix([],[]) leads to a server crash.

  • When using exec with pivot by, if no function is used on the exec column, the statement will generate a table, rather than a matrix.

  • If numJobs > 1 or numJobs = -1 is set in function randomForestClassifier for concurrent jobs, a repeated use of dataSource leads to a server crash.

  • If the parameter duration of function interval has different precision with that of the parameter X, a crash occurs.

  • When creating an in-memory keyed table with keyedTable(keyColumns, table), if the keyColumns in the table have duplicate values, a memory leak occurs.

  • For moving functions that can be used on matrices, such as mcorr and mwavg, when calculating on indexed matrices, the label column may be lost in the result.

  • Function LoadTextEx does not report an error when an exception of data loading occurs since 2.00.4.