8.1. 发布记录

8.1.1. 版本发布 24.2.6

发布日期:2024-11-30
  1. 当前版本Mysql2GaussDB-Oracle新增内容:

8.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会自动重新加载配置文件,并应用新的配置,再此过程中不需要重启应用服务。详细介绍可参考 配置信息热加载 ;

8.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

8.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’)时精度不准确的问题

8.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 ) …语法。具体请参考 合并插入

8.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 语法中查询列包含聚合函数且该聚合函数在排序列中。注:查询列聚合函数必须带有别名。

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

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

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

8.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。

8.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打到目标库中支持此场景。

8.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…语法。
      • 修改表名、视图名称。

8.1.10. 版本发布 24.1.0.0

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

8.1.11. 版本发布 23.4.1.0

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

8.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 语法。

8.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 节的说明。

8.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

8.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支持创建、清空、删除分区表,新增、删除表约束,创建、删除索引。