7.1. 发布记录

7.1.1. 版本发布 24.2.6

发布日期:2024-11-30
  1. 当前版本Mysql2GaussDB-Oracle新增内容:
  2. 当前版本Oracle2GaussDB-Oracle新增内容:
    • 新增支持IGNORE_ROW_ON_DUPKEY_INDEX优化器提示,该优化器提示将会被转换为 ON DUPLICATE KEY UPDATE NOTHING 子句。

  3. 统一SQL转换小工具优化:
    • SQL编辑器实现SQL的格式化,清除,大小写转换功能.

    • 新增版本号及用户手册链接功能.

    • 新增统一SQL全局配置修改功能.

  4. 新增统一SQL自定义对象脚本升级工具:
    • 以往的自定义对象脚本需要找到所有增量版本下源库到目标库对应目录下的脚本然后手动执行,本次提供了全量脚本,且可以通过升级工具自动执行,具体使用方法可参考 导入统一SQL脚本到目标库中

  5. 废弃所有-D参数,全部使用配置文件配置(unisql.conf):
    • 本版本开始不支持-D配置参数,全部改为unisql.conf配置文件来配置参数。具体使用方法可参考 配置文件

  6. 当前版本MySQL2GoldenDB-MySQL新增内容:

7.1.2. 版本发布 24.2.5

发布日期:2024-10-30
  1. 当前版本Oracle2PostgreSQL新增内容:
    • 新增提交当前事务commit,将所有对数据的更改永久保存。具体请参考 提交当前事务

  2. 日志模块功能调整及优化:
    • 移除配置项[unsiql.debug];新增配置项[unisql.log.level],用于设置日志级别;新增配置项[unisql.log.enable],用于设置是否开启日志功能,具体配置请参考 unisql.conf文件说明 ;

    • 支持慢SQL及大SQL告警日志打印,用户可以通过配置对应的阈值打印相关告警日志,新增配置项包括告警日志开关:[unisql.slowsql.enable],大SQL阈值配置:[unisql.slowsql.length],慢SQL阈值配置:[unisql.slowsql.duration],具体配置参考: unisql.conf文件说明 ;

    • 支持SQL透传日志打印,对于透传的SQL,统一SQL会打印debug级别的日志信息标识此SQL为透传,透传功能可参考: SQL透传 ;

    • 支持SQL转换关联配置项日志打印,当一个SQL语法转换跟unisql.conf中的配置有关时,会打印debug级别的日志信息标识此SQL的转换配置,具体配置请参考 unisql.conf文件说明 ;

  3. 配置文件热加载功能:
    • 支持配置文件热加载,当配置文件发生变化时,统一SQL会自动重新加载配置文件,并应用新的配置,再此过程中不需要重启应用服务。详细介绍可参考 配置信息热加载 ;

7.1.3. 版本发布 24.2.4

发布日期:2024-10-15
  1. 当前版本Mysql2GaussDB-Oracle新增内容:
    • 新增支持 select…force index 语法支持指定多个列,具体请参考 强制索引查询

    • 新增支持 groups 作为表明、列名、索引名、别名,具体请参考 创建普通表

  2. 当前版本MySQL2GoldenDB-MySQL新增内容:
  3. 当前版本Oracle2PostgreSQL新增内容:
    • 新增支持TRUNC函数第二个参数fmt值为DAY、DY、D、IW的转化。具体请参考 TRUNC

7.1.4. 版本发布 24.2.3

发布日期:2024-09-30
  1. 当前版本Mysql2GaussDB-Oracle新增内容:
    • 新增支持DROP DATABASE [IF EXISTS]语法。具体请参考 删除库

    • 新增支持通过配置,查询列为空的转化。具体请参考 空值判断

    • 新增支持ddl中对于列约束为 not null default ‘’ 时,允许用户设置是否去除 not null。去除 not null 需要配置unisql.drop.notnull.for.default.empty=1,具体配置请参考 unisql.conf文件说明

    • 新增支持查询列值时忽略大小写,允许用户设置哪些表的哪些列在查询时忽略大小写,该功能通过配置项unisql.table.column.upper.case实现,且配置项unisql.table.column.upper.case.print.sql.switch必须设置为1,具体配置请参考 unisql.conf文件说明

  2. 当前版本Oracle2PostgreSQL新增内容:
    • 新增支持UPDATE TABLE SET (XX,XXX)多列语法。具体请参考 更新多列

    • 新增支持PARTITION关键字作为表名、列名的语法。具体请参考 创建表,包含临时表等

    • 新增支持number数据类型兼容老版本转换,通过配置项开启是否将number转为int。需要配置unisql.datatype.number.replace.integer = 1; 具体配置请参考 unisql.conf文件说明

  3. 当前版本新增自动版本检测机制:
    • 当统一SQL Go 模块链接库版本号和 sql-convert-runtime 版本号不一致时,sql-convert-runtime初始化时将返回[统一SQL版本号错误]相关的提示信息。

  4. 当前版本Oracle2OceanBase-MySQL变更内容:
    • 支持sysdate+/-日期量功能,日期加法将会转换为DATE_ADD函数,日期减法将会转换为DATE_SUB函数

    • bugfix:修复to_number函数内嵌to_char(sysdate+日期量,’yyyymmdd’)时精度不准确的问题

7.1.5. 版本发布 24.2.1.1

发布日期:2024-09-13
  1. 当前版本Oracle2GaussDB-Oracle新增内容:
    • 新增支持MERGE INTO table_name [ [ AS ] alias ] USING ( VALUES ( expression [, …] ) ) [ AS ] alias ( column[, …] ) ON ( condition ) …语法。具体请参考 合并插入

7.1.6. 版本发布 24.2.1

发布日期:2024-09-05
  1. 当前版本MySQL2GaussDB-Oracle新增内容:
    • 新增支持mediumint数据类型,统一SQL将mediumint类型转换为int类型。具体请参考 转换为 GaussDB-Oracle

    • 新增支持varchar(n)数据类型,统一SQL将varchar(n)类型转换为nvarchar2(3*n)类型。具体请参考 转换为 GaussDB-Oracle

    • 新增支持通过配置指定字段转换后的数据类型,例如:table_mysql表的column_mysql字段原来的数据类型为mediumblob,统一SQL默认转换为bytea,可以通过配置项指定该字段转换后的数据类型为text,需要配置unisql.table.column.replace.datatype=table_mysql:column_mysql:text; 具体配置请参考 unisql.conf文件说明

    • 新增支持 alter table xxx auto_increment=number 语法,用于更改自增列当前值。具体请参考 修改自增列的起始值

    • 新增支持 alter table add column [if not exists] ... 语法,统一SQL转换后将 [if not exists] 去掉。具体请参考 修改普通表

    • 新增支持函数 convert(column using 编码) 用法,编码支持范围为:UTF8,GBK。具体请参考 CONVERT

    • 新增支持 select xxx from xxx where xxx group by xxx order by xxx 语法中查询列包含聚合函数且该聚合函数在排序列中。注:查询列聚合函数必须带有别名。

    • 新增支持建表语句中 主键唯一索引普通索引 , 普通键 带有注释信息。具体请参考 创建普通表

    • 新增支持元数据缓存中存储目标库表字段数据类型信息。

    • 新增支持定时拉取目标库元数据缓存信息。

7.1.7. 版本发布 24.1.8

发布日期:2024-08-22
  1. 当前版本Oracle2GaussDB-Oracle新增内容:
    • 新增支持create table xxx as select语法拷贝表结构并保留列的not null约束。

    • 新增支持delete from 语法在delete后使用表别名。

    • 新增支持(+)外连接语法。

    • 新增支持sql中除法运算分母为0的情况。

  2. 新增Mysql2GaussDB-Oracle支持。

  3. 本版本开始配置文件unisql.conf所在目录名称由unisqlconf改为config。

7.1.8. 版本发布 24.1.6.0

发布日期:2024-07-31
  1. 当前版本Oracle2GaussDB-Oracle新增内容:
    • 新增支持 PERCENTILE_CONT(PERCENTILE) WITHIN GROUP (ORDER BY COLUMN [ DESC | ASC ]) OVER (PARTITION BY COLUMN)语法。
      • 支持PERCENTILE_CONT WITHIN GROUP 后带OVER的解析和转化。

    • 新增支持SQL中||、!=后直接跟正负数的场景。
      • GAUSSDB中||、!=后不可直接跟正负数,统一SQL兼容此类场景。

    • 新增支持源SQL字符为GBK编码。
      • 支持源SQL使用GBK编码(C语言开发的应用),需配合参数unisql.charset使用。

    • 新增支持自定义USER_USERS视图。
      • 创建自定义USER_USERS视图兼容使用ORACLE中同名视图的场景。

    • 新增支持通过配置指定自有函数所在SCHEMA。
      • 支持统一SQL的自定义数据库对象创建在指定SCHEMA下,需配合参数unisql.schema使用。

    • 新增支持ALTER TABLE [ SCHEMA. ] TABLE_NAME MODIFY [(] COLUMN_NAME DEFAULT EXPRESSION [,COLUMN_NAME DEFAULT EXPRESSION[,…])]语法。
      • 支持修改列默认值的语法。

    • 新增支持ALTER TABLE [SCHEMA.]TABLE_NAME MOVE TABLESPACE TABLESPACE_NAME语法。
      • 支持此语法的解析,注意由于GAUSSDB-ORACLE中的表空间功能不完善,统一SQL在进行转换时,将该语句默认转换成SELECT 1 配合参数unisql.global.replace.sql使用。

    • 新增支持UPDATE TABLE SET (XX,XXX)多列语法。

      支持多列更新语法。

    • 新增支持NVL函数第二个参数为空格。

      -对于第二个参数为单个空格的情况,统一SQL转换时会在第一个参数外部嵌套一个TO_CHAR函数,解决GAUSS-ORACLE中的类型转换问题。

    • 新增支持DECODE函数中参数类型不一致
      • GAUSSDB_ORACLE限制了DECODE函数中所有参数的类型需保持一致,统一SQL的配置参数:unisql.decode.parameters.funcnames 支持将DECODE函数的参数统一转化为TEXT类型,前提为DECODE的参数包含函数且函数名包含在本参数的配置内(多个函数名之间用英文逗号分割)。因浮点类型转化为TEXT会导致精度不一致问题,故本参数不适用DECODE函数中处理字段包含FLOAT、DOUBLE等浮点类型的场景。

    • 新增支持ROWNUM解析。
      • 支持ROWNUM在WHERE条件表达式中的解析。

    • 新增支持INSERT ALL INTO语法。
      • 支持INSERT ALL INTO语法解析并转化为WITH语句。

    • 新增TO_DATE函数增强。
      • TO_DATE(ARGS)-TO_DATE(ARGS)在ORACLE中返回值为数字类型,在GAUSS-ORACLE中返回类型为INTERVAL,将补丁脚本中的自定义函数PUBLIC.TO_NUMBER打到目标库中支持此场景。

7.1.9. 版本发布 24.1.3.0

发布日期:2024-06-28
  1. 当前版本Oracle2TDSQL-PostgreSQL版Oracle模式新增内容:
    • 新增支持REGEXP_INSTR、MEDIAN函数。
      • REGEXP_INSTR函数作用是返回正则表达式匹配值在源字符串中的位置。

      • MEDIAN用于返回一组数值的中值,即将一组数值排序后返回居于中间的数值。如果参数集合中包含偶数个数值,该函数将返回位于中间的两个数的平均值。

    • 新增支持DROP TABLE CASCADE CONSTRAINTS语法。
      • 如果当前表的主键或唯一键被其他表引用,删除当前表的同时会删除其他表引用的约束。

    • 新增支持ALTER TABLE XXX MODIFY COLUMN语法。
      • 修改列的属性。

    • 新增支持PL/SQL 匿名块。
      • 支持范围仅考虑匿名块,EXECUTE IMMEDIATE后面的SQL直接透传,不支持存储过程、函数、触发器、包,不支持自治事务,不支持异常,不支持嵌套匿名块,不支持绑定变量,不支持单条NULL和空语句。

    • 新增支持CREATE、TRUNCATE分区表的语法。
      • 分区键仅支持列,分区范围支持使用字符串、常数表达,统一SQL会根据表名、分区名在转化库中创建分区表,分区表名为:表名$分区名。

      • 清空分区表,分区表名为:表名$分区名,暂不支持表和分区名上有双引号的清空。

  2. 本版本Oracle2GaussDB-Oracle新增内容:
    • 新增支持WM_CONCAT函数。
      • 将分组内的字符串根据逗号进行拼接。

    • 新增支持NOLOGGING、COMPUTE STATISTICS关键字。
      • 创建索引支持NOLOGGING、COMPUTE STATISTICS关键字。

    • 新增支持RENAME…TO…语法。
      • 修改表名、视图名称。

7.1.10. 版本发布 24.1.0.0

发布日期:2024-04-30
  1. 修复 Oracle2Tdsql-mysql、 Oracle2OceanBase-MySQL中 伪列 rowiduser , 序列的 nextvalcurrval 改写不正确的问题。

7.1.11. 版本发布 23.4.1.0

发布日期:2024-01-24
  1. 修复 Oracle2Tdsql-mysql、 Oracle2OceanBase-MySQL中 伪列 rowiduser , 序列的 nextvalcurrval 改写不正确的问题。

7.1.12. 版本发布 23.4.0.0

发布日期:2023-12-29
  1. 统一SQL Oracle2DM 第一版发布。

  2. 新增多发功能,支持将DML操作发送到Oracle执行的同时把改写后的DML多发至多个库中执行。

  3. 新增启动系统属性: unisql.error.skip ,用于控制转换过程中出现任何异常SQL可以保持原样透传,默认关闭,详见:unisql.conf文件说明

  4. 新增支持改写Oracle lengthb 函数。

  5. 新增支持Oracle的 ORDER BY … [ ASC | DESC ] [ NULLS FIRST | NULLS LAST ] 语法。

  6. 新增支持Oracle的 CREATE GLOBAL TEMPORARY TABLE ... ON COMMIT PRESERVE|DELETE ROWS 用法。

  7. 新增支持Oracle的 CREATE BITMAP INDEX 语法。

  8. 新增支持Oracle的 ALTER TABLE ... ADD CONSTRAINT ... ENABLE | DISABLE 语法。

7.1.13. 版本发布 23.3.0.0

发布日期:2023-09-28
  1. 统一SQL Oracle2Tdsql-mysql 第一版发布。

  2. 统一SQL Oracle2OceanBase-Oracle 第一版发布。详细支持、不支持特性可查阅文档第5章 Oracle2OceanBase-Oracle

  3. 调整了日志打印方式,参考 2.3.4 节的说明。

  4. 增加了 sql-convert-runtime-native 工程,文档中增加了配套的使用说明,参考 2.2 节的说明。

7.1.14. 版本发布 23.2.0.0

发布日期:2023-06-30
  1. 统一SQL Oracle2Lightdb-Oracle 第一版发布。

  2. 新增 Mybatisjrescloud 集成统一SQL示例。

  3. Oracle2PostgreSQL 新增支持 层次查询

  4. 第3章 Oracle2PostgreSQL 增加不支持特性说明(3.4)。

  5. 统一SQL Java SDK(sql-convert-runtime) 23.2.0.0 发布,对应的动态库版本为 LightDB1.0-unisql-V202302-00-000

7.1.15. 版本发布 23.1.1.0

发布日期:2023-06-02
  1. 统一SQL运行时SQL语句转换 Oracle2PostgreSQL 第一版发布。

  2. 支持序列 seq_name.nextval 转换改写,支持 rownum 部分用法,支持使用83个oracle函数。

  3. 支持DUAL,支持pivot/unpivot部分语法,支持 (+) 外关联部分语法。

  4. DML支持 INSERT ALL INTO 部分语法, 支持 MERGE INTO 部分语法。

  5. DDL支持创建、清空、删除分区表,新增、删除表约束,创建、删除索引。