在云原生数据库PolarDB PostgreSQL版(兼容Oracle) 2.0版本(以下简称PolarDB)2023年10月至2024年3月的开发周期中,PolarDB在兼容性、安全与权限管理以及驱动工具兼容性方面实现了显著提升。本文将简要总结PolarDB在过去半年内各个领域的进展和改进。
更新日志
内核兼容性提升
以下仅为内核兼容性提升,详细的内核版本更新记录请参考PolarDB PostgreSQL版(兼容Oracle)2.0。
内置对象
支持乘方操作符。
支持在64位DATE类型上创建BITMAP类型索引。
支持通过
func(arg1 => 1)
方式调用内置函数的参数名称。支持
V$VERSION
、DBA_TYPE_ATTRS
等一系列兼容性内置视图。支持
TO_DATE
函数对于'Y,YYY'
形式控制标识位。增加
DBA_CONSTRAINTS
等视图额外列,提升视图部分兼容性。支持
xml
和xmltype
之间的类型转换,以防止某些调用失败问题。扩充
TO_CHAR
函数格式,支持如DDSPTH
等一系列兼容性控制标识位。修复一系列非
IMMUTABLE
属性的内置函数属性,避免因函数属性导致的执行计划不正确。修复
DECODE
表达式的返回类型兼容性问题。修复
mod
函数的兼容性问题,尤其是在除以0时的行为。修复
V$VERSION
视图的访问权限问题。
内置包
支持
DBMS_UTILITY
内置包获取依赖。支持
DBMS_SESSION
内置包中的三个新函数。提升
DBMS_SQL
内置包的一系列不兼容问题。提升
DBMS_ALERT
内置包对空消息的支持。提升
DBMS_MVIEW
内置包,支持在REFRESH
时不包含依赖的对象。修复
DBMS_LOB
包中的不兼容函数。
分区表
支持在分区表中使用
Interval分区
并配合Global Index
。支持允许分区表中的
MAXVALUE
分区转为DEFAULT
分区,以接受分区键上的空值。修复分区表视图查询中的缺陷。
SQL语法
支持包同义词的使用。
支持将
PRIMARY
作为非保留关键字,用作表名、列名或函数名。支持直接通过
DROP TRIGGER
不写表名的方式删除触发器。支持扩充函数的最大参数个数至
384
。支持复杂类型的
CREATE OR REPLACE
操作。支持在
CREATE TRIGGER
后添加REFERENCING
关键字。支持在创建物化视图时使用
BUILD
关键字。支持在有视图依赖的情况下修改基表列。
支持在使用
OR REPLACE
关键字时修改视图的列。支持索引创建时使用
NOLOGGING
等关键字。支持
INSERT ALL
跟完整的子查询语法。支持
ALTER TYPE MODIFY ATTRIBUTE
语法。支持函数
OUT
参数类型进行隐式类型转换,修复了一系列由OUT
返回参数引发的缺陷。修复64位
DATE类型
通过DBLINK
推送到远端后的缺陷。修复全局临时表重复删除临时文件的缺陷。
PL/SQL
支持
NEW + 函数名
的方式调用函数。支持对象类型中的存储过程直接在PL/SQL中调用。
支持组合类型的
%TYPE
语法。支持
EXECUTE IMMEDIATE
语句中使用OUT
参数返回值。修复语句级事务因
CID
导致的缺陷及失败状态问题。修复自治事务触发的
buffer
泄漏相关缺陷。修复对象类型允许包头函数未在包体中定义的缺陷。
修复对象类型构造函数的兼容性问题。
修复对象类型在跨进程使用时的问题。
修复未匹配
LABEL
语法时执行会中断的问题。
权限和安全特性
限制超级用户对用户自定义函数(
UDF
)的使用,以防止在提权漏洞中利用钓鱼函数,是阻止数据提取漏洞的重要环节。支持内置用户的
REPLICATION
权限,允许用户通过REPLICATION组
的内置用户为其他用户进行组权限赋权。默认情况下,高权限账号将拥有
CAST权限
和REPLICATION权限
。高权限账号默认具备
pg_monitor
权限,能够通过该权限为其他用户授予组权限,同时去除某些敏感信息读取的权限。
驱动和工具兼容
PolarDB-Tools
修复pg_dump工具在导出内置函数时的缺陷。
JDBC
在2024年4月11日,JDBC发布V45.4.0.9版本,主要针对内置数据类型的处理和转换进行优化,从而提升PolarDB的行为兼容性。此次更新包括以下重要特性:
支持列名和表名的大写以及严格大写模式。
支持64位
DATE
类型,其数据表示格式与TimeStamp
完全相同,相关驱动可使用Timestamp
方式处理该DATE
类型。支持Oracle模式下的
Interval
输入。支持
NUMBER
类型的GET行为。支持将
BLOB
类型处理为Bytea
,将CLOB
类型处理为Text
。支持不带
$$
符号的存储过程。支持使用冒号作为参数的变量名。
支持匿名块中的绑定参数。
支持屏蔽
PL/SQL
的警告信息。
此次版本的发布将显著提升开发者在使用PolarDB时的灵活性和便利性。
.NET
在2024年4月10日,.NET发布V7.0.6版本,PolarDB的.NET系列驱动支持.NET 2.0、.NET 3.5、.NET 4.0、.NET 5.0、.NET 6.0、.NET 7.0以及netcoreapp3.1、netstandard2.0和netstandard2.1等多个版本。PolarDB 的发布版本中主要包含以下功能:
允许不带
$$
符号执行PL/SQL存储过程。识别
DECLARE
与BEGIN
块开头的PL代码块。支持Oracle语法兼容 2.064位DATE类型识别。