2025年04月至2025年09月

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

image

更新日志

内核兼容性提升

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

  • 内置对象

    • 增强SYS_CONTEXT函数,支持更多用户环境属性获取,满足安全审计与上下文感知需求。

    • 支持SOURCE视图语法,便于查看存储过程或函数的源码定义。

    • 支持高级兼容模块加载机制,简化Oracle兼容功能的启用流程。

    • 增强内置视图builtin views功能,提供更多系统监控信息。

  • SQL语法

    • 支持在CREATE INDEX语句中指定索引所属schema,提升对象组织灵活性与跨schema管理能力。

    • 当创建的索引名称与现有表名冲突时,自动添加后缀以避免命名冲突,提高自动化建模的健壮性。

    • 实现WITH RECURSIVE子句的扩展支持,允许更复杂的递归查询场景,适用于树形结构与层级遍历。

    • 支持TRANSLATE(... USING [N]CHAR_CS)语法,实现字符集转换功能,增强国际化处理能力。

    • 支持IS [NOT] JSON表达式,用于判断字段是否为合法JSON格式,强化半结构化数据校验。

    • 支持MOD运算符(取模),提供更直观的数学表达方式。

    • 支持新型外连接符号 (+),兼容传统Oracle风格的外连接写法。

    • 支持func.param语法访问函数参数值,提升调试与日志输出便利性。

    • 支持UPPER用户自定义函数,便于文本标准化处理。

    • 支持CAST操作中保留数值类型的精度与刻度(typmod),确保视图与表达式类型的一致性。

    • 支持DECODE表达式的返回类型推导模式优化,避免类型不一致问题。

    • 支持从NAME类型隐式转换为VARCHAR,提升类型兼容性。

    • 支持链式调用语法func1(arg).func2(arg),增强函数式编程体验。

    • 支持在函数参数中使用变量作为默认表达式,提升动态性。

    • 支持在CTE(公共表表达式)中定义游标,提升复杂查询组织能力。

    • 支持ROWID在子查询中正常使用,保障查询语义一致性。

    • 支持聚合函数WM_CONCAT,提供字符串拼接能力。

    • 支持GET作为函数名关键字使用,兼容特定命名习惯。

    • 支持在MERGE INTO语句中使用多层子查询,扩展适用场景。

    • 支持在LOCAL FUNCTION中调用私有过程,提升模块化设计能力。

    • 支持XMLelementXMLAgg的参数与返回类型改为XMLType类型,提升标准兼容性。

    • 支持日期格式不匹配时不抛错,提升容错能力。

    • 支持DISTINCT fun(A) ORDER BY B语法,实现去重后排序聚合。

  • DDL 语法

    • 支持在ALTER TRIGGER中默认使用小写标识符,保持命名风格的一致性。

    • 支持在CREATE后直接使用ALTER而无需分号分隔,提升脚本编写便捷性。

    • 支持DROP SYNONYM FORCE语法,允许强制删除同义词而不检查依赖关系。

    • 支持Oracle风格的对象权限授予语法(GRANT ... ON object TO user),降低迁移成本。

    • 支持授予默认角色(GRANT DEFAULT ROLE),简化用户登录时的角色激活逻辑。

    • 支持替换物化视图(REPLACE MATERIALIZED VIEW),简化视图维护流程。

    • 支持DROP PACKAGE BODY语法,允许仅删除包体而保留包头。

    • 支持SET ROLE IDENTIFIED BY语法,要求切换角色时提供密码验证,增强安全性。

    • 支持子类型(SUBTYPE)在DBMS_XMLGEN包中的使用,增强XML生成功能。

    • 支持分区表并行创建,显著提升大表初始化效率。

    • 支持DROP TABLE PURGE语法,跳过回收站直接删除表。

    • 重构REPLACE TYPE BODY

    • 支持包体中省略函数默认参数,简化代码维护。

  • PLSQL

    • 支持关联数组构造器(Associative Array Constructor),提升PL/SQL中复杂数据结构的操作能力。

    • 支持PL/SQLSTRING类型声明,贴近Oracle开发习惯。

    • 支持多集合操作(Multiset Operations),如MULTISET UNIONINTERSECT等,丰富集合运算能力。

    • 支持DO关键字调用匿名块或存储过程,提升脚本可读性。

    • 支持将SQLCODE作为函数参数的默认值,增强异常处理逻辑的表达能力。

    • 支持在同一包中定义同名的函数与过程,提升代码组织自由度。

    • 支持将关联数组(AARRAY)与字符串之间进行自动转换,方便数据交换。

    • 支持将记录类型的元素作为集合元素进行类型转换,拓展复合类型的应用场景。

    • 支持将默认游标设为非滚动类型,符合大多数业务场景预期。

    • 支持默认使用小写字母创建PL对象名称,减少大小写敏感问题。

    • 支持嵌套记录类型作为集合元素,支持更复杂的数据结构建模。

    • 支持在本地函数中引用:NEW / :OLD触发器变量,提升触发器逻辑复用性。

    • 支持将关联数组作为OUT参数传递,增强过程间通信能力。

    • 支持将记录数组作为函数参数,支持批量数据处理。

    • 支持嵌套同义词指向关系对象,提升对象抽象层次。

    • 支持PRAGMA SERIALLY_REUSABLE,优化包内存使用,适用于短生命周期会话。

    • 支持SAVEPOINTEXECUTE IMMEDIATE中使用,增强动态SQL的事务控制能力。

    • 支持包内游标%ROWTYPE作为函数参数类型,提升代码重用性。

    • 支持关联数组嵌套记录类型,构建复杂内存数据结构。

    • 支持将包变量作为函数参数的默认值,增强封装性。

    • 支持将集合元素的类型修饰符(typmod)正确保留,避免类型丢失。

    • 支持PLSQL ERROR LOG DETAILS,提供更详细的错误堆栈信息。

  • 内置包

    • 引入DBMS_DESCRIBE包,支持描述包含全输入参数(IN参数)的函数元信息,助力动态调用分析。

    • 扩展DBMS_STATS功能,支持auto_degree自动并行度设置,优化统计信息收集效率。

    • 新增UTL_HTTP包支持,允许从数据库内部发起HTTP请求,打通外部服务集成通道。

    • 支持UTL_FILE包远程文件I/O操作,可在数据库端读写服务器文件系统中的文件。

    • 支持UTL_MATCH包,提供字符串相似度计算功能(如编辑距离),适用于模糊匹配场景。

    • 支持polar_dbms_lob包中的多个过程,增强LOB数据操作能力。

  • 基础设施

    • 支持会话级别权限管理机制,实现更细粒度的安全控制。

    • 支持所有用户配置文件模式(All User Profile Mode),统一安全管理策略。

    • 允许普通用户创建dblinkfdw扩展,提升分布式查询的可用性。

    • 支持pg_cron定时任务由普通用户使用,增强任务调度的灵活性。

    • 支持AUTO EXPLAIN用户开关设置,便于开启执行计划自动捕获。

客户端和驱动兼容

JDBC

本开发周期内新增42.5.4.0.122.5.4.0.10.11版本,提升JDBCOracle场景的兼容性能力。

Druid连接池

Druid连接池从1.2.26版本开始官方支持。

ShardingSphere

适配支持配套驱动。

ODBC

适配支持Ubuntu系统和32CentOS系统。

.NET

兼容旧版本,无新功能更新。

Flink CDC

兼容旧版本,无新功能更新。

Debezium PolarDBO connector

兼容旧版本,无新功能更新。

PolarDB-Tools

版本更新至2.0.14.33,现支持配套内核版本的语法升级。

pgAdmin4

兼容旧版本,无新功能更新

PolarPlus

  • 命令语法增强

    • SQL后缀省略支持:支持在命令中省略SQL后缀,提升使用体验。

    • 自动文件扩展名处理:自动为没有扩展名的文件添加.sql后缀(如testtest.sql),保持与Oracle SQLPlus的兼容性。

    • 命令行参数优化:支持sqlplus -s用法,为了保持与SQLPlus的兼容性,现在会忽略-s参数。

  • 跨平台兼容性改进

    • CRLF支持:完善了对WindowsUnix 换行符格式的处理。

    • 反斜杠字符处理:修复了\字符后跟\r\n序列的检测逻辑。

    • 换行符兼容:优化了-结尾换行符的处理逻辑。

  • 文件操作功能

    • @命令支持:实现了使用@执行SQL文件的功能,与SQLPlus兼容,类似于psql中的\i功能。

    • 文件参数传递:支持@/path/to/file arg1 arg2语法,参数会自动设置为变量&1&2&3等。

  • Spool功能

    • 支持spool命令将输出结果写入文件。

    • 支持spool offspool out停止文件输出。

  • 变量系统

    • Oracle风格变量引用:支持使用&var语法引用变量(Oracle 风格),而非psql:var语法。

    • 全局变量支持:&var可在任何地方使用,包括PL/SQL和字符串常量中。

    • 支持DEFINE var = value语法声明变量。

    • 支持variable关键字声明变量,使用:var获取变量值。

    • 变量结尾处理:修复&number作为结尾时的变量识别问题。

  • SQLPlus语法兼容

    • 关键字支持:支持REMPROMPTrepfootclearSQLPlus关键字。

    • 修复关键字前空格识别错误的问题。

    • 修复SQLPlus关键字在普通SQL中报错的问题。

    • 支持关键字后无空格的用法。

    • 换行处理:支持使用-结尾表示换行的语法。

迁移与评估

  • DTS 优化对象识别规则,提升迁移成功率。

  • ADAM 优化评估规则,提升评估准确率。