全部產品
Search
文件中心

PolarDB:2024年4月至2024年9月

更新時間:Oct 16, 2024

在雲原生資料庫PolarDB PostgreSQL版(相容Oracle) 2.0版本(以下簡稱PolarDB)2024年4月至2024年9月的開發週期中,PolarDB在相容性、安全性、遷移能力以及驅動工具等多個方面實現了顯著提升。本文將簡要總結PolarDB在過去半年內各個領域的進展和改進。

更新日誌

核心相容性提升

以下僅為核心相容性提升,詳細的核心版本更新記錄請參考PolarDB PostgreSQL版(相容Oracle)2.0版本更新說明

  • 內建對象

    • 支援類似 number()的用法,並引入帶引號的函數調用方式(如"TO_CHAR"),作為對大小寫功能的擴充,更好地相容原生SQL中的函數調用習慣。

    • 支援對行類型的IS NULLIS NOT NULL判斷,確保與Oracle的行為相容。

    • 增強對DBA_OBJECTS視圖中的同義字、表分區、包及其體、類型及其體、上下文、目錄、語言、操作符、任務和隊列的支援,以及DBA_INDEXES視圖中的索引類型和nls_parameters視圖,提升視圖的使用相容性。

    • 修複CHAR類型因語義差異引起的迴流Oracle失敗問題。

    • 修複has_schema_privilege系列函數的不相容問題,不會因內建對象而返回錯誤。

    • 修複視圖顯示包含對象名稱時不應包含Schema的問題,解決通過視圖名稱過濾對象失敗的問題。

    • 修複timestamptz類型轉換為date類型時小數點未截斷的問題。

    • 修複information_schema.parameters視圖中顯示預存程序參數預設值的問題。

    • 修複information_schema內多個視圖無法顯示date類型的問題。

    • 修複DBA_SOURCE視圖中預存程序定義資訊被截斷的問題。

  • SQL文法

    • 支援對EDITIONTABLE相關關鍵字的支援,擴充結構遷移過程中的相容情境。

    • 支援在使用DISTINCTORDER BY關鍵字時的多種特殊情境,滿足對於Oracle中非SQL標準用法的需求。

    • 支援TO_DATE輸入日期文字和指定日期格式不嚴格匹配情境的相容,提升NVLCONVERT函數返回時間類型時的相容性。

    • 支援一元操作符'+'返回結果類型與Oracle相容。

    • 支援新增同義字忽略大小寫功能,提升Oracle相容性。

    • 支援在SELECT語句中將關鍵字作為表別名,進一步增強Oracle相容性。

    • 支援在大小寫交替的情境下忽略大小寫,以滿足非標準SQL用法的相容需求。

    • 支援通過ALTER SESSION設定交易隔離等級。

    • 支援LIKE2LIKE4LIKEC操作符。

    • 支援IS NaNIS INFINITE判斷。

    • 支援視窗函數的DISTINCT操作。

    • 修複當b為單一記錄列表時,運算式where a in b的語義與Oracle不一致的問題,以增強Oracle相容性。

    • 修複更新同義字時出現的RTE(Range Table Entry)找不到問題。

    • 修複一系列函數綁定參數的缺陷,提升系統穩定性。

  • DDL

    • 支援CREATE PROFILE功能,提供密碼複用次數、時間與密碼驗證函數等全新功能,顯著提升資料庫安全性。

    • 支援ALTER TABLE ... RENAME在修改表列名時,可選使用COLUMN關鍵字。

    • 支援CREATE CONTEXT使用INITIALIZED語句,進一步提升相容性。

    • 支援在PUBLIC SCHEMA下建立PUBLIC同義字。

    • 支援PACKAGETYPE BODY的同義字。

    • 支援MODIFY COLUMN文法,實現與Oracle的相容。

    • 支援通過DROP AGGREGATE方式刪除彙總函式,提升相容性。

    • 支援DROP文法中的FORCE關鍵字。

  • 分區表

    • 支援自動添加分區表索引功能,當需要建立全域索引時,支援不顯式使用GLOBAL的調用方式。

    • 支援在分區表的觸發器中使用REFERENCING OLD文法。

    • 修複分區表建立過程中的相關穩定性問題。

    • 支援包變數作為包函數參數的預設值。

    • 支援CREATE OR REPLACE PACKAGE BODY功能。

    • 支援在Package Body中使用前向聲明來聲明私人函數,提升相容性。

    • 支援DBMS_LOB包中缺失的函數和包變數。

  • PL/SQL

    • 支援在函數中進行事務提交,並支援在SECURE DEFINER狀態下的函數提交。

    • 修複一系列語句級事務、自治事務等穩定性缺陷。

    • 支援在包未執行個體化的情況下,通過cursor % attribute訪問包中遊標的屬性。

    • 修複觸發器函式宣告段中使用:new/:old報錯的問題。

    • 修複當預存程序包含out refcursor且參數為NULL時,內部其他遊標使用報錯的問題。

    • 修複同義字傳給觸發器時的錯誤objectAdress

    • 修複DDL邏輯複製建立的事件觸發程序導致建立外部表格報錯的問題。

  • 集合類型

    • 支援集合類型TABLE運算式的COLUMN_VALUE偽列。

    • 支援通過record.field().field方式直接存取record中集合類型的欄位。

    • 支援使用collection_type % type功能。

用戶端和驅動相容

PolarDB-Tools

PolarDB-Tools的功能迭代主要集中在修複用法不相容問題,提升工具對資料的相容性。具體改進包括:

  • 修複PSQL中使用綁定冒號參數的相容性問題。

  • 修複OnCommitRollback功能的相容性問題。

JDBC

JDBC於2024年9月2日更新至V45.4.0.10.4版本,相較於歷史版本,此次更新的主要內容包括:

  • 修複了PL塊中綁定不正確的問題。為減小對效能的影響,已預設關閉該功能。

  • 支援在同一類型內部進行隱式轉換,允許字元類型(如VARCHAR、CHAR)與數字類型(如NUMERIC、INTEGER、DOUBLE)作為INOUT參數相互轉換。

  • 驅動中元資訊的getDatabaseProductName()函數的傳回值更新為“POLARDB2 Database Compatible with Oracle”

  • 修複了在MyBatis中,當對象實體的註冊類型為Timestamp時,資料庫無法正確推斷參數類型的問題。

.NET

.NET於2024年9月18日更新至V8.0.4.1版本,至此,PolarDB的.NET系列驅動已全面支援.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等多個版本。相較於歷史版本,本次 .NET驅動在功能上有以下顯著提升:

  • 支援V8.0.4.1版本,相容.NET 6.0、.NET 7.0 和 .NET 8.0版本。

  • 允許不帶$$符號執行PL/SQL預存程序。

  • 新增對Oracle文法相容 2.0版本中64位日期格式的識別支援。

  • 修複了有關DBMS內建對象識別的元資訊問題。

  • 修正了因ROWID導致的類型讀取錯誤。

pgAdmin4

PolarDB於2024年8月26日發布了相容pgAdmin4的版本,該版本可在Windows系統上部署,專為PolarDB中的PL/SQL調試而設計。

  • 引入PL/SQL預存程序的調試功能。

PolarDBO Flink CDC

PolarDBO Flink CDC基於社區Postgres CDC適配,用於讀取資料庫全量快照資料和變更資料。主要功能包括:

  • 全面支援Flink產品的各類型與PolarDB PostgreSQL版(相容Oracle) 2.0類型之間的雙向映射。

  • 實現64位DATE在邏輯複製鏈路中的適配,確保秒級精度。

DTS遷移

ADAM評估

ADAM評估最新版本主要提升遷移相容性評估的準確性,同時保持與PolarDB文法更新的同步。以下是此次升級的主要改進:

  • 提高ADAM評估中內建包和內建對象識別的準確性。

  • 增強了文法樹對部分關鍵字的識別能力。

DTS結構遷移

在此開發週期內,PolarDB與DTS的協作顯著提升,主要體現在以下幾個方面:

  • 新增增量資料後的序列同步功能。

  • 提升結構遷移相容性,適配大小寫問題,修複索引遷移和分區表適配中的相關問題。

  • 修複DATE類型的相容性問題,並改進了對字元類型NaN的處理。