在云原生数据库 2.0版本(以下简称PolarDB)2025年04月至2025年09月的开发周期中,针对兼容性、迁移能力以及驱动工具等多个方面实现了显著提升。本文将简要总结PolarDB在本开发周期内各个领域的进展和改进。
更新日志
内核兼容性提升
以下仅为内核兼容性提升,详细的内核版本更新记录请参考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中调用私有过程,提升模块化设计能力。支持
XMLelement和XMLAgg的参数与返回类型改为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/SQL中
STRING类型声明,贴近Oracle开发习惯。支持多集合操作(Multiset Operations),如
MULTISET UNION与INTERSECT等,丰富集合运算能力。支持
DO关键字调用匿名块或存储过程,提升脚本可读性。支持将
SQLCODE作为函数参数的默认值,增强异常处理逻辑的表达能力。支持在同一包中定义同名的函数与过程,提升代码组织自由度。
支持将关联数组(AARRAY)与字符串之间进行自动转换,方便数据交换。
支持将记录类型的元素作为集合元素进行类型转换,拓展复合类型的应用场景。
支持将默认游标设为非滚动类型,符合大多数业务场景预期。
支持默认使用小写字母创建PL对象名称,减少大小写敏感问题。
支持嵌套记录类型作为集合元素,支持更复杂的数据结构建模。
支持在本地函数中引用
:NEW / :OLD触发器变量,提升触发器逻辑复用性。支持将关联数组作为
OUT参数传递,增强过程间通信能力。支持将记录数组作为函数参数,支持批量数据处理。
支持嵌套同义词指向关系对象,提升对象抽象层次。
支持
PRAGMA SERIALLY_REUSABLE,优化包内存使用,适用于短生命周期会话。支持
SAVEPOINT在EXECUTE 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),统一安全管理策略。
允许普通用户创建
dblink和fdw扩展,提升分布式查询的可用性。支持pg_cron定时任务由普通用户使用,增强任务调度的灵活性。
支持
AUTO EXPLAIN用户开关设置,便于开启执行计划自动捕获。
客户端和驱动兼容
JDBC
本开发周期内新增42.5.4.0.12和2.5.4.0.10.11版本,提升JDBC在Oracle场景的兼容性能力。
版本42.5.4.0.12(2025-08-13)
支持使用jdbc:postgresql协议连接集群。
版本42.5.4.0.10.11(2025-07-10)
支持通过CallableStatement接口调用函数/存储过程,支持各种类型的IN&OUT&INOUT参数。
支持错误处理,与数据库内核的错误处理机制兼容。
支持适配Spring框架中使用
Types.STRUCT结构体。增强类型绑定支持。
Druid连接池
Druid连接池从1.2.26版本开始官方支持。
ShardingSphere
适配支持配套驱动。
ODBC
适配支持Ubuntu系统和32位CentOS系统。
.NET
兼容旧版本,无新功能更新。
Flink CDC
兼容旧版本,无新功能更新。
Debezium PolarDBO connector
兼容旧版本,无新功能更新。
PolarDB-Tools
版本更新至2.0.14.33,现支持配套内核版本的语法升级。
pgAdmin4
兼容旧版本,无新功能更新
PolarPlus
命令语法增强
SQL后缀省略支持:支持在命令中省略SQL后缀,提升使用体验。
自动文件扩展名处理:自动为没有扩展名的文件添加
.sql后缀(如test至test.sql),保持与Oracle SQLPlus的兼容性。命令行参数优化:支持
sqlplus -s用法,为了保持与SQLPlus的兼容性,现在会忽略-s参数。
跨平台兼容性改进
CRLF支持:完善了对Windows和Unix 换行符格式的处理。
反斜杠字符处理:修复了
\字符后跟\r\n序列的检测逻辑。换行符兼容:优化了
-结尾换行符的处理逻辑。
文件操作功能
@命令支持:实现了使用@执行SQL文件的功能,与SQLPlus兼容,类似于psql中的\i功能。文件参数传递:支持
@/path/to/file arg1 arg2语法,参数会自动设置为变量&1、&2、&3等。
Spool功能
支持
spool命令将输出结果写入文件。支持
spool off和spool out停止文件输出。
变量系统
Oracle风格变量引用:支持使用&var语法引用变量(Oracle 风格),而非psql的
:var语法。全局变量支持:
&var可在任何地方使用,包括PL/SQL和字符串常量中。支持
DEFINE var = value语法声明变量。支持
variable关键字声明变量,使用:var获取变量值。变量结尾处理:修复
&number作为结尾时的变量识别问题。
SQLPlus语法兼容
关键字支持:支持
REM、PROMPT、repfoot、clear等SQLPlus关键字。修复关键字前空格识别错误的问题。
修复SQLPlus关键字在普通SQL中报错的问题。
支持关键字后无空格的用法。
换行处理:支持使用
-结尾表示换行的语法。
迁移与评估
DTS 优化对象识别规则,提升迁移成功率。
ADAM 优化评估规则,提升评估准确率。