FAQ > 客户端升级

2022-05-31客户端升级说明:算符-^的优先级与32位最小整数问题修订    

【简述】更新日志--------2022-05-31
  修订:在uses的时候进行函数调用,不再重复查找已确认不存在的全局TSF函数,解决WEB模式下因为本地函数数量巨大引发的查找性能问题。
  修订:确认算符优先级-2^4为-16,也就是说和其他语言保持一致,使得求幂的优先级高过-,另外-2147483648常量不再支持,应该和C++头定义一样写成-2147483647-1
  修订:对于-(-2147483647-1)的操作的结果变为浮点数。(对应为0-)越界的操作。
  修订:sqlopt(16384)下向后移动存在问题。
  升级:新增IMAP类,支持IMAP协议。
  • 2022-05-31  升级:
    -------------------------------------
     1、修订:在uses的时候进行函数调用,不再重复查找已确认不存在的全局TSF函数,解决WEB模式下因为本地函数数量巨大引发的查找性能问题。
     说明:效率优化,不影响使用。
    -------------------------------------
    2、修订:确认算符优先级-2^4为-16,也就是说和其他语言保持一致,使得求幂的优先级高过-,另外-2147483648常量不再支持,应该和C++头定义一样写成-2147483647-1
    3、修订:对于-(-2147483647-1)的操作的结果变为浮点数。(对应为0-)越界的操作。


    说明:即设定^优先级高于-,更新前,a:=-2^4时,a值为16,不符合一般语言规范。
    另,修订32位负号溢出问题:
     1)32位负号溢出会与整数0- 操作保持一致,即-(-2147483648)等同于0-(-2147483648)
          由-2147483648的32位整型,变更为2147483648的64位整型(即double)
     2)int64计算不做溢出考虑,因为int64的最大有效位超过了浮点精度
     3)32位整型不能定义-2147483648,而要表达这个常量,须用-2147483647-1替代,
         即ifint(-2147483647-1)为1,而ifint(-2147483648)为0,ifint64(-2147483648)为1
    -------------------------------------
    4、修订:sqlopt(16384)下向后移动存在问题。
    说明:新增的selectopt(16384)功能支持不完全问题,解决报错问题。
    升级前:天软新增的selectopt(16384)功能不支持向后移的操作,会引发报错,或返回错误结果。
       比如在selectopt(16384) 时使用refof进行后移,会引发报错:refof: Internal server error occurred! please try later.
    升级后:在selectopt(16384) 时使用refof进行后移不报错且能返回正确结果。
    运行场景如下:
    t:=Array(('A':5,'D':2,'E':6),
                  ('A':6,'D':4,'E':5),
                  ('A':9,'D':5,'E':4),
                  ('A':9,'D':5,'E':4),
                  ('A':3,'D':2,'E':1));
       t:= select selectopt(16384) *, refof(['A'],-1) from t order by ['A'] end;
       return t;
     注:  selectopt(16384) 下目前不支持聚集函数向后移动的功能,等待以后开发。

    -------------------------------------
    5、升级:新增IMAP类,支持IMAP协议。

    -------------------------------------