FAQ > 新一代客户端升级

2025-9-29客户端(新一代)升级说明    

简述
更新日志--------2025-9-29
升级:SELECTOPT新增选项65536,用于禁用SQL聚集函数在移动计算时的快速计算。(主要用于productof累乘这类快速计算可能会产生较大误差的聚集函数,禁止快速计算会使得效率变低)
升级:聚集函数的MovingFirst支持新模式:
  如果16位设定(65536),可禁用SQL聚集函数在移动计算时的快速计算,如果位17设定(131072),则不禁用移动计算时的快速计算。
如果位6设定(64)则MovingFirst模式,如果18位设定(262144)则非MovingFirst模式。
  如果上述位互相矛盾,例如既设定16位也设定了第17位,或者设定了第8位也设定了18位,则依旧按照旧有真假模式MovingFirst为真。
升级:新增dectoint,dectointdef,trydectoint,dectoint64,dectoint64def,trydectoint64,dectoint32,dectoint32def,trydectoint32,用于10进制数字符串转换整数。
  strtoint虽然也支持十进制转换,但由于strtoint支持其他进制表达字符串转换数字,采用dectoint可以规避这类不一定符合预期的行为。
升级:FireDac API模式连接PG ExecSQL支持COPY。
修正:CSV导入特殊字母被识别为数字0的问题。
  • 2025-9-29 升级说明
    --------------------------------------------------------
    升级:SELECTOPT新增选项65536,用于禁用SQL聚集函数在移动计算时的快速计算。(主要用于productof累乘这类快速计算可能会产生较大误差的聚集函数,禁止快速计算会使得效率变低)
    升级:聚集函数的MovingFirst支持新模式:
      如果16位设定(65536),可禁用SQL聚集函数在移动计算时的快速计算,如果位17设定(131072),则不禁用移动计算时的快速计算。
    如果位6设定(64)则MovingFirst模式,如果18位设定(262144)则非MovingFirst模式。
      如果上述位互相矛盾,例如既设定16位也设定了第17位,或者设定了第6位也设定了18位,则依旧按照旧有真假模式MovingFirst为真。
    说明:新增SELECTOPT参数选项65536(2^16),聚集函数计算时,禁用移动计算时的快速计算。
    新增SELECTOPT参数选项131072(2^17),聚集函数计算时,不禁用移动计算时的快速计算。
    新增SELECTOPT参数选项262144(2^18),指定为非MovingFirst模式,即先判断真假,再移动步数的方式。与已有64(2^6)MovingFirst模式对应。
    具体用法可参考FAQ:SELECTOPT(Options)
    --------------------------------------------------------
    升级:新增dectoint,dectointdef,trydectoint,dectoint64,dectoint64def,trydectoint64,dectoint32,dectoint32def,trydectoint32,用于10进制数字符串转换整数。
      strtoint虽然也支持十进制转换,但由于strtoint支持其他进制表达字符串转换数字,采用dectoint可以规避这类不一定符合预期的行为。

    说明:新增dectoint系列字符串转数字的相关模型,使用与strtoint系列一致,两者区别如下:
    strtoint系列支持十进制字符串转数字外,还支持二进制、八进制、十六进制字符串的转换,如strtoint("0b10101")转换后结果为21
    dectoint系列只支持十进制字符串转数字,不支持其它进制,即dectoint("0b10101")会报错处理,可避免strtoint中对于字符"b","x"等字符的错误转换。
    更多用法可具体参考对应函数说明。
    --------------------------------------------------------
    升级:FireDac API模式连接PG ExecSQL支持COPY。
    说明:数据库交互中,FireDac API模式连接PG库时新增支持 ExecSQL COPY功能。
    如将数据文件导入到数据库已有的数据表中:
    fileName:="D:/test.csv";
    size:=FileSize("", fileName);
    ReadFile(rwRaw(), "", fileName, 0, size, dataStr);
    sql:="copy test from STDIN with header DELIMITER ','";
    data:=array("STDIN":("Direction":1,"Value":(dataStr),"Type":91));
    t:=execsql(data, "pg_api", sql, ret);
    echo tostn(array(t,ret,SQLErrorMsg()));
    return 1;


    --------------------------------------------------------
    修正:CSV导入特殊字母被识别为数字0的问题。
    说明:解决在使用ftcsv()模式importfile导入csv格式时,可能将单个字符"o","b","x"错误解析成0的问题。
    如:
    filepath:="E:\\xxTest\\test.csv";
    rdo2 importfile(ftCSV(),"",filepath,data);
    return data;

    升级前与升级后效果对比:

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