2.00.16

2.00.16.4

当字典或元组嵌套字典/元组时,通过 append! 等原地修改函数修改其中元素(字典/元组)的行为发生变化:旧版本中修改不会生效且无报错,新版本起支持原地修改并生效。

tp = [dict([1,2],[3, 4]), (1, 2, 3)]
tp[1].append!(4)
print tp

/* 旧版本:修改不会生效,也不会报错,结果保持不变。
(2->4
1->3
,(1,2,3))
*/

/* 新版本:修改将生效,结果反映修改内容。
(2->4
1->3
,(1,2,3,4))
*/

2.00.16.1

涉及保持一致性或兼容行业惯例的修改

对 FICC 系列函数( bondAccrIntbondCashflowbondConvexitybondDirtyPricebondDurationbondYield )的参数结构进行了调整,部分参数名已修改,接口更为统一,功能更强大。原有参数结构将不再兼容,请根据新接口进行适配。

2.00.16.0

缺陷修复带来的系统影响

  • 在 SQL EXEC 语句中若使用了 DISTINCT 和聚合函数,并且查询涉及表连接,旧版本的查询结果为一个标量,新版本中则返回一个向量。
    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;
    //老版本返回 INT
    //新版本返回 FAST INT VECTOR
  • 在创建流数据日级时间序列引擎 (createDailyTimeSeriesEngine) 时:
    • 若配置了 session 时段 roundTime 不再生效,mergeLastWindow 不再规整 session 时段
    • 采用如下方式指定跨天 session 时段时:
      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]
      
      //即 session 时段为21:00:00-次日01:00:00,09:00:00-11:30:00, 13:00:00-15:00:00。
      keyPurgeDaily 的行为发生变化:
      • 在之前版本中,keyPurgeDaily 在 21:00:00 之前不生效,15:00:00-21:00:00 之间的数据会并入 21:00:00的窗口。
      • 在新版本中,keyPurgeDaily 在 21:00:00 之前生效,15:00:00-21:00:00 之间的数据会被丢弃。
  • 当用户的权限发生变化:
    • 在旧版本中,该用户可以在当前会话中通过切换为其他用户后再次登录(login)的方式来生效新权限。
    • 在新版本中,权限变更后必须显式执行登出(`logout`)操作,并重新登录,才能获取最新的权限设置。
  • 函数 getUserAccess 的返回结果中,原 “COMPUTE_GROUP_allowed” 字段名自新版本起改为 “COMPUTE_GROUP_EXEC_allowed”。
  • 在新版本中,设置了对 SQL 查询 WHERE 子句的限制:WHERE 子句中的条件数量(以逗号分隔)最多为 1024 个;每个条件表达式中最多允许 1024 个运算符(包括 AND)。若超过限制,系统将报错。
  • 自新版本起,将不再支持快照引擎(由 registerSnapshotEngine创建)。用户可使用IOTDB 引擎(通过 CREATE 语句等方式指定)实现相同的功能,获取每个分组的最新记录。
  • 旧版本中,单次事务写入的数据量无限制。新版本起,为提升系统稳定性,引入了单次事务写入大小限制,默认限制为存储引擎 Cache Engine 容量上限的 20%。当写入数据量超过限制时,将会报错,例如:
    Memory size of append transaction 2000000216 exceeds max limit (429496729) for OLAP. Please split data into batches.
    如需保持旧版本行为,可通过以下方式取消或放宽该限制:
    • 设置配置参数 maxTransactionRatio=1,即将事务大小限制调整为 Cache Engine 上限的 100%;
    • 或在运行时调用 setMaxTransactionSize 动态修改限制值。
  • 在旧版本中:在内存表中,对于元素类型相同的元组(ANY)所创建的列,系统会自动将其转换为列式元组类型(ColumnarTuple)。转换后,该列不再允许插入其他类型的数据,若尝试插入将报错。

    从新版本起:系统不再自动执行上述转换,而是保持为普通的ANY类型列,因此允许插入不同类型的数据。

    id = 1 2 3
    val = [[1,2,3,4], [4,5,6],[7,8,9]]
    t = table(id, val)
    isColumnarTuple(t[`val]) 
    //老版本返回 true 
    //新版本返回 false
    
    insert into t values(1, "a")  // 老版本报错:Failed to append data to column 'val'.
    insert into t values(1, "a") //新版本可以插入
    为保持对旧版本行为的兼容性,引入配置项 autoConversionToColumnarTuple,默认值为 false,表示默认采用新版本行为(不自动转换为列式元组)。如需兼容老版本行为,可将该配置项设置为 true。