暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

半年度总结|PolarDB Oracle兼容度更新亮点总览

PolarDB 2024-10-14
462

在云原生数据库PolarDB PostgreSQL版(兼容Oracle) 2.0版本(以下简称PolarDB)2024年4月至2024年9月的开发周期中,PolarDB在兼容性、安全性、迁移能力以及驱动工具等多个方面实现了显著提升。本文将简要总结PolarDB在过去半年内各个领域的进展和改进。

更新日志

内核兼容性提升

以下仅为内核兼容性提升,详细的内核版本更新记录请参考PolarDB PostgreSQL版(兼容Oracle)2.0版本更新说明。

  • 内置对象

    • 支持类似 number()
      的用法,并引入带引号的函数调用方式(如"TO_CHAR"
      ),作为对大小写功能的扩展,更好地兼容原生SQL中的函数调用习惯。

    • 支持对行类型的IS NULL
      IS NOT NULL
      判断,确保与Oracle的行为兼容。

    • 增强对DBA_OBJECTS
      视图中的同义词、表分区、包及其体、类型及其体、上下文、目录、语言、操作符、任务和队列的支持,以及DBA_INDEXES
      视图中的索引类型和nls_parameters
      视图,提升视图的使用兼容性。

    • 修复CHAR
      类型因语义差异引起的回流Oracle失败问题。

    • 修复has_schema_privilege
      系列函数的不兼容问题,不会因内置对象而返回错误。

    • 修复视图显示包含对象名称时不应包含Schema的问题,解决通过视图名称过滤对象失败的问题。

    • 修复timestamptz
      类型转换为date
      类型时小数点未截断的问题。

    • 修复information_schema.parameters
      视图中显示存储过程参数默认值的问题。

    • 修复information_schema
      内多个视图无法显示date
      类型的问题。

    • 修复DBA_SOURCE
      视图中存储过程定义信息被截断的问题。

  • SQL语法

    • 支持对EDITIONTABLE
      相关关键字的支持,扩展结构迁移过程中的兼容场景。

    • 支持在使用DISTINCT
      ORDER BY
      关键字时的多种特殊场景,满足对于Oracle中非SQL标准用法的需求。

    • 支持TO_DATE
      输入日期字符串和指定日期格式不严格匹配场景的兼容,提升NVL
      CONVERT
      函数返回时间类型时的兼容性。

    • 支持一元操作符'+'
      返回结果类型与Oracle兼容。

    • 支持新增同义词忽略大小写的功能,提升Oracle兼容性。

    • 支持在SELECT
      语句中将关键字作为表别名,进一步增强Oracle兼容性。

    • 支持在大小写交替的场景下忽略大小写,以满足非标准SQL用法的兼容需求。

    • 支持通过ALTER SESSION
      设置事务隔离级别。

    • 支持LIKE2
      LIKE4
      LIKEC
      操作符。

    • 支持IS NaN
      IS INFINITE
      判断。

    • 支持窗口函数的DISTINCT
      操作。

    • 修复当b
      为单一记录列表时,表达式where a in b
      的语义与Oracle不一致的问题,以增强Oracle兼容性。

    • 修复更新同义词时出现的RTE
      (Range Table Entry)找不到问题。

    • 修复一系列函数绑定参数的缺陷,提升系统稳定性。

  • DDL

    • 支持CREATE PROFILE
      功能,提供密码复用次数、时间与密码验证函数等全新功能,显著提升数据库安全性。

    • 支持ALTER TABLE ... RENAME
      在修改表列名时,可选使用COLUMN
      关键字。

    • 支持CREATE CONTEXT
      使用INITIALIZED
      语句,进一步提升兼容性。

    • 支持在PUBLIC SCHEMA
      下创建PUBLIC
      同义词。

    • 支持PACKAGE
      TYPE BODY
      的同义词。

    • 支持MODIFY COLUMN
      语法,实现与Oracle的兼容。

    • 支持通过DROP AGGREGATE
      方式删除聚合函数,提升兼容性。

    • 支持DROP
      语法中的FORCE
      关键字。

  • 分区表

    • 支持自动添加分区表索引功能,当需要建立全局索引时,支持不显式使用GLOBAL
      的调用方式。

    • 支持在分区表的触发器中使用REFERENCING OLD
      语法。

    • 修复分区表创建过程中的相关稳定性问题。

    • 支持包变量作为包函数参数的默认值。

    • 支持CREATE OR REPLACE PACKAGE BODY
      功能。

    • 支持在Package Body
      中使用前向声明来声明私有函数,提升兼容性。

    • 支持DBMS_LOB
      包中缺失的函数和包变量。

  • PL/SQL

    • 支持在函数中进行事务提交,并支持在SECURE DEFINER
      状态下的函数提交。

    • 修复一系列语句级事务、自治事务等稳定性缺陷。

    • 支持在包未实例化的情况下,通过cursor % attribute
      访问包中游标的属性。

    • 修复触发器函数声明段中使用:new/:old
      报错的问题。

    • 修复当存储过程包含out refcursor
      且参数为NULL时,内部其他游标使用报错的问题。

    • 修复同义词传给触发器时的错误objectAdress

    • 修复DDL逻辑复制创建的事件触发器导致创建外部表报错的问题。

  • 集合类型

    • 支持集合类型TABLE
      表达式的COLUMN_VALUE伪列。

    • 支持通过record.field().field
      方式直接访问record
      中集合类型的字段。

    • 支持使用collection_type % type
      功能。

客户端和驱动兼容

PolarDB-Tools

PolarDB-Tools的功能迭代主要集中在修复用法不兼容问题,提升工具对数据的兼容性。具体改进包括:

  • 修复PSQL中使用绑定冒号参数的兼容性问题。

  • 修复OnCommitRollback功能的兼容性问题。

JDBC

JDBC于2024年9月2日更新至V45.4.0.10.4版本,相较于历史版本,此次更新的主要内容包括:

  • 修复了PL块中绑定不正确的问题。为减小对性能的影响,已默认关闭该功能。

  • 支持在同一类型内部进行隐式转换,允许字符类型(如VARCHAR、CHAR)与数字类型(如NUMERIC、INTEGER、DOUBLE)作为INOUT参数相互转换。

  • 驱动中元信息的getDatabaseProductName()
    函数的返回值更新为“POLARDB2 Database Compatible with Oracle”

  • 修复了在MyBatis中,当对象实体的注册类型为Timestamp时,数据库无法正确推断参数类型的问题。

.NET

.NET于2024年9月18日更新至V8.0.4.1版本,至此,PolarDB的.NET系列驱动已全面支持.NET 2.0、.NET 3.5、.NET 4.0、.NET 5.0、.NET 6.0、.NET 7.0、.NET 8.0,以及netcoreapp3.1、netstandard2.0和netstandard2.1等多个版本。相较于历史版本,本次 .NET驱动在功能上有以下显著提升:

  • 支持V8.0.4.1版本,兼容.NET 6.0、.NET 7.0 和 .NET 8.0版本。

  • 允许不带$$符号执行PL/SQL存储过程。

  • 新增对Oracle语法兼容 2.0版本中64位日期格式的识别支持。

  • 修复了有关DBMS内置对象识别的元信息问题。

  • 修正了因ROWID导致的类型读取错误。

pgAdmin4

PolarDB于2024年8月26日发布了兼容pgAdmin4的版本,该版本可在Windows系统上部署,专为PolarDB中的PL/SQL调试而设计。

  • 引入PL/SQL存储过程的调试功能。

DTS迁移

ADAM评估

ADAM评估最新版本主要提升迁移兼容性评估的准确性,同时保持与PolarDB语法更新的同步。以下是此次升级的主要改进:

  • 提高ADAM评估中内置包和内置对象识别的准确性。

  • 增强了语法树对部分关键字的识别能力。

DTS结构迁移

在此开发周期内,PolarDB与DTS的协作显著提升,主要体现在以下几个方面:

  • 新增增量数据后的序列同步功能。

  • 提升结构迁移兼容性,适配大小写问题,修复索引迁移和分区表适配中的相关问题。

  • 修复DATE类型的兼容性问题,并改进了对字符类型NaN的处理。

点击查看产品介绍

文章转载自PolarDB,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论