在云原生数据库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类型识别。