2.00.15

缺陷修复带来的系统影响

  • 修改函数 elasticNetCV, lassoCV, ridgeCV 参数校验:

    • 旧版本中,参数 yColName, xColNames 可以指定时间类型的列。
    • 新版本起,参数 yColName, xColNames 仅支持数值类型列,否则会报错。
  • 修改 iif 函数和三元运算符 ?: 返回值类型:

    • 旧版本中,优先根据 trueResultfalseResult 数据形式确定返回值的形式。
    • 新版本起,返回值与 cond 的数据形式一致。
    iif([true,false],1:2,(3..4$1:2))
    true false?(1:2):(3..4$1:2)
    // 旧版本返回 INT PAIR 1:4
    // 新版本返回 FAST INT VECTOR [1,4]
  • 修改函数 seq 对 NULL 值的处理行为。当 startend 任一为 NULL 时:

    • 旧版本会返回不符合预期的结果。
    • 新版本会直接报错。
  • 若建表时为 LONG 或 NANOTIMESTAMP 类型的列指定 delta of delta 压缩算法(即compressMethods="delta"),当 delta-of-delta 值溢出时:

    • 旧版本中,数据刷盘失败且持续重试,导致系统阻塞。
    • 新版本起,溢出数据会转换为空值。
    dbName = "dfs://test"
    if(existsDatabase(dbName)) {
        dropDatabase(dbName)
    }
    db = database(dbName,HASH, [INT, 1])
    t = table(10:0,[`id, `data],[INT, LONG])
    pt = db.createPartitionedTable(t, `pt, `id,  {data:"delta"})
    t =  table(1..5 as id, [1,1,8704332179800340403, 105, 27162335252578330] as data)
    pt.append!(t)
    purgeCacheEngine()
    sleep(1000)
    select * from pt

    新版本查询结果:

    id data
    1 1
    2 1
    3 8,704,332,179,800,340,403
    4
    5
  • 当 SQL CASE 语句的 THEN 和 ELSE 子句中使用 string 函数且返回标量时,旧版本返回 STRING 类型,新版本改为 SYMBOL 类型。

    t = table(0 NULL 1 as id)
    re = select case when id=0 then string("a")  else  string("b") end from t
    select name,typeString from schema(re).colDefs
    // 旧版本 col1 列为 STRING 类型
    // 新版本 col1 列为 SYMBOL 类型
  • 修改 varma 函数输入数据源时的排序逻辑:

    • 旧版本中,模型会根据数据源第一列对数据自动排序。
    • 新版本起,仅当第一列是时间列时,模型才会对数据排序。
  • 修改非管理员用户执行 getClusterDFSDatabases 时的可见范围:

    • 旧版本中,返回用户拥有 DB_MANAGE 权限或自己创建的分布式数据库。
    • 新版本起,新增返回用户拥有DB_READ/DB_INSERT/DB_UPDATE/DB_DELETE/DBOBJ_CREATE/DBOBJ_DELETE 权限的分布式数据库。