3.00.6
Changes Made to Match Industry Practices
-
Support subtype expressions for the ANY type and columnar tuple. The outputs of
typestr,type,schema, and related functions have changed:-
Use
ANY[<BasicType>]to represent subtypes of ANY, such asANY[INT]; -
The return value of
typeis represented by adding 128 to the type value of the basic type.a = array(ANY[DECIMAL32(2)], 0, 10) isColumnarTuple(a) typestr(a) // Previous versions return 'ANY VECTOR' // New version returns 'ANY[DECIMAL32(2)] VECTOR' type(a) // Previous versions return int(25) // New version returns int(165) b = table(10:0, `a`b`c, [INT, ANY[DECIMAL32(2)], DECIMAL64(4)]) schema(b).colDefs /* Previous versions return name typeString typeInt extra comment ---- ------------ ------- ----- ------- a INT 4 b ANY 25 c DECIMAL64(4) 38 4 */ /* New version returns name typeString typeInt extra comment ---- ----------------- ------- ----- ------- a INT 4 b ANY[DECIMAL32(2)] 165 2 c DECIMAL64(4) 38 4 */
-
-
INT columns in in-memory tables no longer support writing STRING data:
-
Previous versions attempt to extract digits from the string and write the converted value;
-
The new version reports an error.
share streamTable(10000:0, `time`sym`price`qty`id, [TIMESTAMP, SYMBOL, INT, INT, DOUBLE]) as trades n = 500 timev = temporalAdd(2012.01.01T11:24:56.245, take([1, 3, 5, 7], n).sort(), "s") symv = take(`AA`BB`CC, n) pricev = rand("A" + string(1..10), n) qtyv = rand(0..50 join int(), n) id = rand(1..100 join int(), n) * 0.01 insert into trades values(timev, symv, pricev, qtyv, id) // Previous versions can write the data by removing the letters in pricev and converting the remaining part to numbers. // New version reports an error: Failed to append data to column 'price' with error: Failed to convert string to int: A2
-
-
Deprecated legacy changelog-related interfaces, including
changelogStreamTable,getStreamTableChangelog,peekAppend,StreamGraph::changelogSource, andDStream::changelogSink. -
The return format of
getStatelessMetricshas changed. TheoutputMetricKeyandtriggerOncolumns in the returned table now retain double quotation marks:-
Previous versions return values such as
b:value1anda:f1; -
The new version returns values such as
"b" : "value1"and"a" : "f1".
-
-
Date fields of INSTRUMENT and MKTDATA types, such as
referenceDate,settlement, andtermDates, now only allow the DATE type:-
Previous versions allow STRING or DATE values;
-
The new version no longer supports STRING values.
-
-
When the PKEY primary-key engine creates a database, only
chunkGranularity = "TABLE"is supported;chunkGranularity = "DATABASE"is no longer supported. -
The JIT distribution and support scope have changed:
-
JIT is now dynamically linked through
libjit.so. The Linux ABI=1 version enables JIT by default; useisJIT()to confirm whether it has been loaded successfully. -
The standalone JIT installation package has been removed, and JIT is no longer compatible with Windows.
-
JIT usages supported in previous versions but not currently supported in the new version include: recursive functions, RSE streaming engine-related functionality, expressions in the form
table(xxx as id), symbol vector, SQL, multi-statement assignment, accessing values of temporary variables such asa()[2], metaprogramming, module, class vector, int128-based types (including INT128, IPADDR, UUID, COMPLEX, and POINT), changing a variable's type after its type has been determined, higher-order function symbols, and some dictionary key/value types.
-
System Impacts Caused by Bug Fixes
-
The return form of
complexwhen the input is a matrix has changed:-
Previous versions return a vector;
-
The new version returns a matrix.
x = matrix([0.75, 0.125, 0.0, 0.125], [-0.25, 0.125, 0.0, 0.125], [-0.0, 0.0517767, -0.75, 0.3017767], [-0.0, -0.3017767, 0.75, -0.0517767]) typestr(complex(x, 0)) // Previous versions return 'FAST COMPLEX VECTOR' // New version returns 'FAST COMPLEX MATRIX'
-
-
When
loadTextconverts strings that do not match numeric formats to numeric types according to a specified schema, the result has changed:-
Previous versions extract and convert the numeric prefix of the string;
-
The new version returns null values.
t = table(["2013.06.13 13:30:10.008", "2012.06.13 13:30:10", "2012.06.13 13:30:10.008", "13:30:10.008007006", "2012.06.13 13:30:10.008007006"] as str) saveText(t, "compat_numeric.csv") schema = table(`str as name, `INT as type) t1 = loadText("compat_numeric.csv", ",", schema) print(t1) /* Previous versions return str ---- 2013 2012 2012 13 2012 */ // New version returns only null values
-
-
In 3.00.6, the build environment of the OpenBLAS library has changed, so the fallback architecture may differ from earlier versions. If the
OPENBLAS_CORETYPEenvironment variable is not set, OpenBLAS selects an instruction set based on the machine architecture. As a result, functions that rely on OpenBLAS may produce numerical differences across machines or compared with earlier versions, such as differences in precision, eigenvector order, or sign. Affected calculations includepca,varma,vectorAR,derivative,arima,bvls,olsEx,piecewiseLinFit, andschur. To keep results consistent with the previous environment, setOPENBLAS_CORETYPE=Haswellbefore startup.
Upgrade Notes
-
When upgrading from 2.00.16 or 2.00.17 to 3.00.6, if the earlier version enabled
enhancedSecurityVerificationand executedlockUser,unLockUser,createUser,resetPwd,changePwd, orsetIPConnectionLimit, ACL log compatibility must be handled first: configureuseOldAclLog=1to start the new version, wait until all controller nodes complete the automatic checkpoint (the completion log isCheckpoint completed, ACL fixed.), then changeuseOldAclLogto 0 or remove the configuration and restart all nodes in the cluster. -
For backup files generated by
backupSettingsin 2.00.16 or 2.00.17, when restoring them in the new version withrestoreSettings, specify the Server version that generated the backup file throughserverVersion, for example,serverVersion="200.16"orserverVersion="200.17". -
If streaming high availability was enabled in a 2.00.18 or 3.00.5 environment, rollback to an earlier version is not supported after upgrading to 3.00.6 because the serialization format for streaming high availability has changed.
-
After upgrading to 3.00.6, if users are created, deleted, or modified, or if
aclCheckPointortakeMasterCheckpointis triggered, ACL logs or checkpoint data that cannot be recognized by earlier versions may be written, and rollback to an earlier version is not supported.
