2023年10月至2024年3月
在云原生數(shù)據(jù)庫(kù)PolarDB PostgreSQL版(兼容Oracle) 2.0版本(以下簡(jiǎn)稱(chēng)PolarDB)2023年10月至2024年3月的開(kāi)發(fā)周期中,PolarDB在兼容性、安全與權(quán)限管理以及驅(qū)動(dòng)工具兼容性方面實(shí)現(xiàn)了顯著提升。本文將簡(jiǎn)要總結(jié)PolarDB在過(guò)去半年內(nèi)各個(gè)領(lǐng)域的進(jìn)展和改進(jìn)。
更新日志
內(nèi)核兼容性提升
以下僅為內(nèi)核兼容性提升,詳細(xì)的內(nèi)核版本更新記錄請(qǐng)參考PolarDB PostgreSQL版(兼容Oracle)2.0。
內(nèi)置對(duì)象
支持乘方操作符。
支持在64位DATE類(lèi)型上創(chuàng)建BITMAP類(lèi)型索引。
支持通過(guò)
func(arg1 => 1)
方式調(diào)用內(nèi)置函數(shù)的參數(shù)名稱(chēng)。支持
V$VERSION
、DBA_TYPE_ATTRS
等一系列兼容性?xún)?nèi)置視圖。支持
TO_DATE
函數(shù)對(duì)于'Y,YYY'
形式控制標(biāo)識(shí)位。增加
DBA_CONSTRAINTS
等視圖額外列,提升視圖部分兼容性。支持
xml
和xmltype
之間的類(lèi)型轉(zhuǎn)換,以防止某些調(diào)用失敗問(wèn)題。擴(kuò)充
TO_CHAR
函數(shù)格式,支持如DDSPTH
等一系列兼容性控制標(biāo)識(shí)位。修復(fù)一系列非
IMMUTABLE
屬性的內(nèi)置函數(shù)屬性,避免因函數(shù)屬性導(dǎo)致的執(zhí)行計(jì)劃不正確。修復(fù)
DECODE
表達(dá)式的返回類(lèi)型兼容性問(wèn)題。修復(fù)
mod
函數(shù)的兼容性問(wèn)題,尤其是在除以0時(shí)的行為。修復(fù)
V$VERSION
視圖的訪問(wèn)權(quán)限問(wèn)題。
內(nèi)置包
支持
DBMS_UTILITY
內(nèi)置包獲取依賴(lài)。支持
DBMS_SESSION
內(nèi)置包中的三個(gè)新函數(shù)。提升
DBMS_SQL
內(nèi)置包的一系列不兼容問(wèn)題。提升
DBMS_ALERT
內(nèi)置包對(duì)空消息的支持。提升
DBMS_MVIEW
內(nèi)置包,支持在REFRESH
時(shí)不包含依賴(lài)的對(duì)象。修復(fù)
DBMS_LOB
包中的不兼容函數(shù)。
分區(qū)表
支持在分區(qū)表中使用
Interval分區(qū)
并配合Global Index
。支持允許分區(qū)表中的
MAXVALUE
分區(qū)轉(zhuǎn)為DEFAULT
分區(qū),以接受分區(qū)鍵上的空值。修復(fù)分區(qū)表視圖查詢(xún)中的缺陷。
SQL語(yǔ)法
支持包同義詞的使用。
支持將
PRIMARY
作為非保留關(guān)鍵字,用作表名、列名或函數(shù)名。支持直接通過(guò)
DROP TRIGGER
不寫(xiě)表名的方式刪除觸發(fā)器。支持?jǐn)U充函數(shù)的最大參數(shù)個(gè)數(shù)至
384
。支持復(fù)雜類(lèi)型的
CREATE OR REPLACE
操作。支持在
CREATE TRIGGER
后添加REFERENCING
關(guān)鍵字。支持在創(chuàng)建物化視圖時(shí)使用
BUILD
關(guān)鍵字。支持在有視圖依賴(lài)的情況下修改基表列。
支持在使用
OR REPLACE
關(guān)鍵字時(shí)修改視圖的列。支持索引創(chuàng)建時(shí)使用
NOLOGGING
等關(guān)鍵字。支持
INSERT ALL
跟完整的子查詢(xún)語(yǔ)法。支持
ALTER TYPE MODIFY ATTRIBUTE
語(yǔ)法。支持函數(shù)
OUT
參數(shù)類(lèi)型進(jìn)行隱式類(lèi)型轉(zhuǎn)換,修復(fù)了一系列由OUT
返回參數(shù)引發(fā)的缺陷。修復(fù)64位
DATE類(lèi)型
通過(guò)DBLINK
推送到遠(yuǎn)端后的缺陷。修復(fù)全局臨時(shí)表重復(fù)刪除臨時(shí)文件的缺陷。
PL/SQL
支持
NEW + 函數(shù)名
的方式調(diào)用函數(shù)。支持對(duì)象類(lèi)型中的存儲(chǔ)過(guò)程直接在PL/SQL中調(diào)用。
支持組合類(lèi)型的
%TYPE
語(yǔ)法。支持
EXECUTE IMMEDIATE
語(yǔ)句中使用OUT
參數(shù)返回值。修復(fù)語(yǔ)句級(jí)事務(wù)因
CID
導(dǎo)致的缺陷及失敗狀態(tài)問(wèn)題。修復(fù)自治事務(wù)觸發(fā)的
buffer
泄漏相關(guān)缺陷。修復(fù)對(duì)象類(lèi)型允許包頭函數(shù)未在包體中定義的缺陷。
修復(fù)對(duì)象類(lèi)型構(gòu)造函數(shù)的兼容性問(wèn)題。
修復(fù)對(duì)象類(lèi)型在跨進(jìn)程使用時(shí)的問(wèn)題。
修復(fù)未匹配
LABEL
語(yǔ)法時(shí)執(zhí)行會(huì)中斷的問(wèn)題。
權(quán)限和安全特性
限制超級(jí)用戶(hù)對(duì)用戶(hù)自定義函數(shù)(
UDF
)的使用,以防止在提權(quán)漏洞中利用釣魚(yú)函數(shù),是阻止數(shù)據(jù)提取漏洞的重要環(huán)節(jié)。支持內(nèi)置用戶(hù)的
REPLICATION
權(quán)限,允許用戶(hù)通過(guò)REPLICATION組
的內(nèi)置用戶(hù)為其他用戶(hù)進(jìn)行組權(quán)限賦權(quán)。默認(rèn)情況下,高權(quán)限賬號(hào)將擁有
CAST權(quán)限
和REPLICATION權(quán)限
。高權(quán)限賬號(hào)默認(rèn)具備
pg_monitor
權(quán)限,能夠通過(guò)該權(quán)限為其他用戶(hù)授予組權(quán)限,同時(shí)去除某些敏感信息讀取的權(quán)限。
驅(qū)動(dòng)和工具兼容
PolarDB-Tools
修復(fù)pg_dump工具在導(dǎo)出內(nèi)置函數(shù)時(shí)的缺陷。
JDBC
在2024年4月11日,JDBC發(fā)布V45.4.0.9版本,主要針對(duì)內(nèi)置數(shù)據(jù)類(lèi)型的處理和轉(zhuǎn)換進(jìn)行優(yōu)化,從而提升PolarDB的行為兼容性。此次更新包括以下重要特性:
支持列名和表名的大寫(xiě)以及嚴(yán)格大寫(xiě)模式。
支持64位
DATE
類(lèi)型,其數(shù)據(jù)表示格式與TimeStamp
完全相同,相關(guān)驅(qū)動(dòng)可使用Timestamp
方式處理該DATE
類(lèi)型。支持Oracle模式下的
Interval
輸入。支持
NUMBER
類(lèi)型的GET行為。支持將
BLOB
類(lèi)型處理為Bytea
,將CLOB
類(lèi)型處理為Text
。支持不帶
$$
符號(hào)的存儲(chǔ)過(guò)程。支持使用冒號(hào)作為參數(shù)的變量名。
支持匿名塊中的綁定參數(shù)。
支持屏蔽
PL/SQL
的警告信息。
此次版本的發(fā)布將顯著提升開(kāi)發(fā)者在使用PolarDB時(shí)的靈活性和便利性。
.NET
在2024年4月10日,.NET發(fā)布V7.0.6版本,PolarDB的.NET系列驅(qū)動(dòng)支持.NET 2.0、.NET 3.5、.NET 4.0、.NET 5.0、.NET 6.0、.NET 7.0以及netcoreapp3.1、netstandard2.0和netstandard2.1等多個(gè)版本。PolarDB 的發(fā)布版本中主要包含以下功能:
允許不帶
$$
符號(hào)執(zhí)行PL/SQL存儲(chǔ)過(guò)程。識(shí)別
DECLARE
與BEGIN
塊開(kāi)頭的PL代碼塊。支持Oracle語(yǔ)法兼容 2.064位DATE類(lèi)型識(shí)別。