2.00.16
2.00.16.4
append! has changed: -
In previous versions, the modification had no effect and no error was raised;
-
Starting from the new version, in-place modifications are supported and take effect immediately.
tp = [dict([1,2],[3, 4]), (1, 2, 3)]
tp[1].append!(4)
print tp
/* Previous version: the modification has no effect and no error is raised; the result remains unchanged.
(2->4
1->3
,(1,2,3))
*/
/* New version: the modification takes effect, and the result reflects the changes.
(2->4
1->3
,(1,2,3,4))
*/
2.00.16.1
Changes Made to Match Industry Practices
-
Modified the parameters of
bondAccrInt,bondCashflow,bondConvexity,bondDirtyPrice,bondYieldfor improved consistency and functionality. Some parameter names have been changed, and the original signatures are no longer compatible. Please adapt your code accordingly.
2.00.16.0
System Impacts Caused by Bug Fixes
- In SQL EXEC statements, when both DISTINCT and an aggregate function are
used in a query involving table joins, the previous release returned a
scalar result. Since this release, the result is returned as a
vector.
sym = `C`MS`MS`MS`IBM`IBM`C`C`C$SYMBOL price= 49.6 29.46 29.52 30.02 174.97 175.23 50.76 50.32 51.29 qty = 2200 1900 2100 3200 6800 5400 1300 2500 8800 t1 = table(sym, qty); t2 = table(sym, price); x = exec distinct count(price) from t1 full outer join t2 on t1.sym=t2.sym; typestr x; // Output (previous releases): INT // Output (current release): FAST INT VECTOR - Modified the behavior of
createDailyTimeSeriesEngine:- When sessions are defined, the roundTime parameter is no longer applied, and mergeLastWindow no longer adjusts or aligns the session boundaries.
- When defining a cross-day session as
follows:
The behavior of parameter keyPurgeDaily has changed:sessionBegin = [00:00:00, 09:00:00, 13:00:00, 21:00:00] sessionEnd = [01:00:00, 11:30:00, 15:00:00, 00:00:00]- In previous releases, keyPurgeDaily was not effective before 21:00:00. Data between 15:00:00 and 21:00:00 was merged into the window starting at 21:00:00.
- Since this release, keyPurgeDaily takes effect before 21:00:00. Data between 15:00:00 and 21:00:00 will be discarded.
- When a user's permissions change:
- In previous releases, the user could activate their updated
permissions within the current session by switching to a different
user and then logging (
login) back in. - In the new release, the user must explicitly
logoutand log back in to apply the updated permission settings.
- In previous releases, the user could activate their updated
permissions within the current session by switching to a different
user and then logging (
- In the return value of the
getUserAccessfunction, the field name "COMPUTE_GROUP_allowed" has been renamed to "COMPUTE_GROUP_EXEC_allowed" starting from the new release. - Since this release, limits have been introduced for SQL WHERE clauses:
- A maximum of 1,024 conditions (comma-separated) is allowed in a WHERE clause.
- Each condition expression can contain up to 1,024 operators (including AND).
- Snapshot engines (created with
registerSnapshotEngine) are no longer supported since this release. Users are advised to switch to the IOTDB engine (created via the CREATE statement) which provides equivalent functionality for retrieving the latest record in each group. - In previous releases, there was no limit on the volume of data written in a
single transaction. Starting from the new release, a limit has been
introduced to improve system stability. By default, the maximum size for a
single transaction is restricted to 20% of the cache engine capacity. If the
data exceeds this limit, an error will be raised. For
example:
To retain the behavior of previous releases, this limit can be removed or relaxed using one of the following methods:Memory size of append transaction 2000000216 exceeds max limit (429496729) for OLAP. Please split data into batches.- Set the configuration parameter maxTransactionRatio=1 to allow transactions up to 100% of the cache engine capacity;
- Or call
setMaxTransactionSizeat runtime to adjust the limit dynamically.
- In previous releases, for in-memory tables, if a column was created using
tuples (i.e., ANY) containing elements of the same type, the system would
automatically convert that column to a ColumnarTuple type. After this
conversion, the column would no longer accept values of different types—any
attempt to insert such data would result in an error.
In the new release, this automatic conversion is no longer performed. The column remains of type ANY, allowing insertion of mixed-type data.
To maintain compatibility with the previous behavior, a configuration parameter autoConversionToColumnarTuple has been introduced. Its default value is false, meaning the system follows the new behavior (no automatic conversion). To restore the legacy behavior, set this parameter to true.id = 1 2 3 val = [[1,2,3,4], [4,5,6],[7,8,9]] t = table(id, val) isColumnarTuple(t[`val]) // Output (previous releases): true // Output (current release): false insert into t values(1, "a") // Error raised in previous releases: Failed to append data to column 'val'. insert into t values(1, "a") // Inserted successfully in current release
