2024年4月至2024年9月
在云原生數(shù)據(jù)庫PolarDB PostgreSQL版(兼容Oracle) 2.0版本(以下簡稱PolarDB)2024年4月至2024年9月的開發(fā)周期中,PolarDB在兼容性、安全性、遷移能力以及驅(qū)動(dòng)工具等多個(gè)方面實(shí)現(xiàn)了顯著提升。本文將簡要總結(jié)PolarDB在過去半年內(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ì)象
支持類似
number()
的用法,并引入帶引號(hào)的函數(shù)調(diào)用方式(如"TO_CHAR"
),作為對(duì)大小寫功能的擴(kuò)展,更好地兼容原生SQL中的函數(shù)調(diào)用習(xí)慣。支持對(duì)行類型的
IS NULL
和IS NOT NULL
判斷,確保與Oracle的行為兼容。增強(qiáng)對(duì)
DBA_OBJECTS
視圖中的同義詞、表分區(qū)、包及其體、類型及其體、上下文、目錄、語言、操作符、任務(wù)和隊(duì)列的支持,以及DBA_INDEXES
視圖中的索引類型和nls_parameters
視圖,提升視圖的使用兼容性。修復(fù)
CHAR
類型因語義差異引起的回流Oracle失敗問題。修復(fù)
has_schema_privilege
系列函數(shù)的不兼容問題,不會(huì)因內(nèi)置對(duì)象而返回錯(cuò)誤。修復(fù)視圖顯示包含對(duì)象名稱時(shí)不應(yīng)包含Schema的問題,解決通過視圖名稱過濾對(duì)象失敗的問題。
修復(fù)
timestamptz
類型轉(zhuǎn)換為date
類型時(shí)小數(shù)點(diǎn)未截?cái)嗟膯栴}。修復(fù)
information_schema.parameters
視圖中顯示存儲(chǔ)過程參數(shù)默認(rèn)值的問題。修復(fù)
information_schema
內(nèi)多個(gè)視圖無法顯示date
類型的問題。修復(fù)
DBA_SOURCE
視圖中存儲(chǔ)過程定義信息被截?cái)嗟膯栴}。
SQL語法
支持對(duì)
EDITIONTABLE
相關(guān)關(guān)鍵字的支持,擴(kuò)展結(jié)構(gòu)遷移過程中的兼容場景。支持在使用
DISTINCT
和ORDER BY
關(guān)鍵字時(shí)的多種特殊場景,滿足對(duì)于Oracle中非SQL標(biāo)準(zhǔn)用法的需求。支持
TO_DATE
輸入日期字符串和指定日期格式不嚴(yán)格匹配場景的兼容,提升NVL
和CONVERT
函數(shù)返回時(shí)間類型時(shí)的兼容性。支持一元操作符
'+'
返回結(jié)果類型與Oracle兼容。支持新增同義詞忽略大小寫的功能,提升Oracle兼容性。
支持在
SELECT
語句中將關(guān)鍵字作為表別名,進(jìn)一步增強(qiáng)Oracle兼容性。支持在大小寫交替的場景下忽略大小寫,以滿足非標(biāo)準(zhǔn)SQL用法的兼容需求。
支持通過
ALTER SESSION
設(shè)置事務(wù)隔離級(jí)別。支持
LIKE2
、LIKE4
和LIKEC
操作符。支持
IS NaN
和IS INFINITE
判斷。支持窗口函數(shù)的
DISTINCT
操作。修復(fù)當(dāng)
b
為單一記錄列表時(shí),表達(dá)式where a in b
的語義與Oracle不一致的問題,以增強(qiáng)Oracle兼容性。修復(fù)更新同義詞時(shí)出現(xiàn)的
RTE
(Range Table Entry)找不到問題。修復(fù)一系列函數(shù)綁定參數(shù)的缺陷,提升系統(tǒng)穩(wěn)定性。
DDL
支持
CREATE PROFILE
功能,提供密碼復(fù)用次數(shù)、時(shí)間與密碼驗(yàn)證函數(shù)等全新功能,顯著提升數(shù)據(jù)庫安全性。支持
ALTER TABLE ... RENAME
在修改表列名時(shí),可選使用COLUMN
關(guān)鍵字。支持
CREATE CONTEXT
使用INITIALIZED
語句,進(jìn)一步提升兼容性。支持在
PUBLIC SCHEMA
下創(chuàng)建PUBLIC
同義詞。支持
PACKAGE
和TYPE BODY
的同義詞。支持
MODIFY COLUMN
語法,實(shí)現(xiàn)與Oracle的兼容。支持通過
DROP AGGREGATE
方式刪除聚合函數(shù),提升兼容性。支持
DROP
語法中的FORCE
關(guān)鍵字。
分區(qū)表
支持自動(dòng)添加分區(qū)表索引功能,當(dāng)需要建立全局索引時(shí),支持不顯式使用
GLOBAL
的調(diào)用方式。支持在分區(qū)表的觸發(fā)器中使用
REFERENCING OLD
語法。修復(fù)分區(qū)表創(chuàng)建過程中的相關(guān)穩(wěn)定性問題。
包
支持包變量作為包函數(shù)參數(shù)的默認(rèn)值。
支持
CREATE OR REPLACE PACKAGE BODY
功能。支持在
Package Body
中使用前向聲明來聲明私有函數(shù),提升兼容性。支持
DBMS_LOB
包中缺失的函數(shù)和包變量。
PL/SQL
支持在函數(shù)中進(jìn)行事務(wù)提交,并支持在
SECURE DEFINER
狀態(tài)下的函數(shù)提交。修復(fù)一系列語句級(jí)事務(wù)、自治事務(wù)等穩(wěn)定性缺陷。
支持在包未實(shí)例化的情況下,通過
cursor % attribute
訪問包中游標(biāo)的屬性。修復(fù)觸發(fā)器函數(shù)聲明段中使用
:new/:old
報(bào)錯(cuò)的問題。修復(fù)當(dāng)存儲(chǔ)過程包含
out refcursor
且參數(shù)為NULL時(shí),內(nèi)部其他游標(biāo)使用報(bào)錯(cuò)的問題。修復(fù)同義詞傳給觸發(fā)器時(shí)的錯(cuò)誤
objectAdress
。修復(fù)DDL邏輯復(fù)制創(chuàng)建的事件觸發(fā)器導(dǎo)致創(chuàng)建外部表報(bào)錯(cuò)的問題。
集合類型
支持集合類型
TABLE
表達(dá)式的COLUMN_VALUE偽列。支持通過
record.field().field
方式直接訪問record
中集合類型的字段。支持使用
collection_type % type
功能。
客戶端和驅(qū)動(dòng)兼容
PolarDB-Tools
PolarDB-Tools的功能迭代主要集中在修復(fù)用法不兼容問題,提升工具對(duì)數(shù)據(jù)的兼容性。具體改進(jìn)包括:
修復(fù)PSQL中使用綁定冒號(hào)參數(shù)的兼容性問題。
修復(fù)OnCommitRollback功能的兼容性問題。
JDBC
JDBC于2024年9月2日更新至V45.4.0.10.4版本,相較于歷史版本,此次更新的主要內(nèi)容包括:
修復(fù)了PL塊中綁定不正確的問題。為減小對(duì)性能的影響,已默認(rèn)關(guān)閉該功能。
支持在同一類型內(nèi)部進(jìn)行隱式轉(zhuǎn)換,允許字符類型(如VARCHAR、CHAR)與數(shù)字類型(如NUMERIC、INTEGER、DOUBLE)作為INOUT參數(shù)相互轉(zhuǎn)換。
驅(qū)動(dòng)中元信息的
getDatabaseProductName()
函數(shù)的返回值更新為“POLARDB2 Database Compatible with Oracle”
。修復(fù)了在MyBatis中,當(dāng)對(duì)象實(shí)體的注冊(cè)類型為Timestamp時(shí),數(shù)據(jù)庫無法正確推斷參數(shù)類型的問題。
.NET
.NET于2024年9月18日更新至V8.0.4.1版本,至此,PolarDB的.NET系列驅(qū)動(dòng)已全面支持.NET 2.0、.NET 3.5、.NET 4.0、.NET 5.0、.NET 6.0、.NET 7.0、.NET 8.0,以及netcoreapp3.1、netstandard2.0和netstandard2.1等多個(gè)版本。相較于歷史版本,本次 .NET驅(qū)動(dòng)在功能上有以下顯著提升:
支持V8.0.4.1版本,兼容.NET 6.0、.NET 7.0 和 .NET 8.0版本。
允許不帶$$符號(hào)執(zhí)行PL/SQL存儲(chǔ)過程。
新增對(duì)Oracle語法兼容 2.0版本中64位日期格式的識(shí)別支持。
修復(fù)了有關(guān)DBMS內(nèi)置對(duì)象識(shí)別的元信息問題。
修正了因ROWID導(dǎo)致的類型讀取錯(cuò)誤。
pgAdmin4
PolarDB于2024年8月26日發(fā)布了兼容pgAdmin4的版本,該版本可在Windows系統(tǒng)上部署,專為PolarDB中的PL/SQL調(diào)試而設(shè)計(jì)。
引入PL/SQL存儲(chǔ)過程的調(diào)試功能。
PolarDBO Flink CDC
PolarDBO Flink CDC基于社區(qū)Postgres CDC適配,用于讀取數(shù)據(jù)庫全量快照數(shù)據(jù)和變更數(shù)據(jù)。主要功能包括:
全面支持Flink產(chǎn)品的各類型與PolarDB PostgreSQL版(兼容Oracle) 2.0類型之間的雙向映射。
實(shí)現(xiàn)64位DATE在邏輯復(fù)制鏈路中的適配,確保秒級(jí)精度。
DTS遷移
ADAM評(píng)估
ADAM評(píng)估最新版本主要提升遷移兼容性評(píng)估的準(zhǔn)確性,同時(shí)保持與PolarDB語法更新的同步。以下是此次升級(jí)的主要改進(jìn):
提高ADAM評(píng)估中內(nèi)置包和內(nèi)置對(duì)象識(shí)別的準(zhǔn)確性。
增強(qiáng)了語法樹對(duì)部分關(guān)鍵字的識(shí)別能力。
DTS結(jié)構(gòu)遷移
在此開發(fā)周期內(nèi),PolarDB與DTS的協(xié)作顯著提升,主要體現(xiàn)在以下幾個(gè)方面:
新增增量數(shù)據(jù)后的序列同步功能。
提升結(jié)構(gòu)遷移兼容性,適配大小寫問題,修復(fù)索引遷移和分區(qū)表適配中的相關(guān)問題。
修復(fù)DATE類型的兼容性問題,并改進(jìn)了對(duì)字符類型NaN的處理。