IvorySQL 開源社區小夥伴們,大家好,IvorySQL 開源社區今天激動的向大家宣佈:IvorySQL 5.0 發佈了!
IvorySQL 5.0 基於 PostgreSQL 18.0 全面升級:Oracle 兼容性再突破,生態組件集成再升級,雲原生深度支持,配合全平台安裝包與在線絲滑體驗,讓複雜變得簡單。
基於 PostgreSQL 18.0
PostgreSQL 18.0 核心升級:
- 引入異步 IO(AIO)子系統,可顯著提升順序掃描、位圖堆掃描、VACUUM 等操作的性能。
pg_upgrade工具:新增優化器統計信息保留功能。- 支持跳躍掃描(skip scan),使多列 B-tree 索引在更多場景下可用。
- 新增
uuidv7()函數:生成時間戳有序的 UUID。 - 虛擬生成列:讀取時動態計算列值,現已成為生成列的默認類型。
- 支持 OAuth 認證。
- RETURNING 子句增強:INSERT/UPDATE/DELETE/MERGE 命令支持 OLD 和 NEW 關鍵字。
- 時間範圍約束:為 PRIMARY KEY、UNIQUE、FOREIGN KEY 約束添加範圍級約束支持。
更多細節請查看 PostgreSQL 18.0 發行説明。
新特性
新增 21 個 Oracle 兼容功能
- Oracle 兼容 ROWID 支持:確保 IvorySQL 行標識符與 Oracle 語義一致,便於跨數據庫工具無縫遷移。
- PL/iSQL CALL 調用語法:新增 Oracle 風格的 CALL 入口點,實現存儲過程統一調用。
- PL/iSQL
%ROWTYPE支持:允許變量映射整個表或遊標行結構,簡化 PL/iSQL 編碼。 - PL/iSQL
%TYPE支持:支持變量繼承現有列或變量的數據類型,減少類型漂移。 - 大小寫敏感兼容開關:按需保留標識符大小寫,以匹配 Oracle 行為。
- NLS 參數兼容:支持 Oracle 風格的 NLS 設置,如
NLS_DATE_FORMAT、NLS_TIMESTAMP_FORMAT等。 - 空字符串轉 NULL:將零長度字符串自動轉換為 NULL,以符合 Oracle 的兼容性規則。
- 解析器切換能力:新增在 Oracle 和 PostgreSQL 解析器之間切換的能力,實現會話級的靈活配置。
- GB18030 數據庫編碼支持:新增 GB18030 初始化和數據庫創建選項,全面覆蓋中文市場需求。
- Oracle 兼容
SYS_GUID函數:實現 Oracle 的SYS_GUID函數,用於生成基於 RAW 的全局唯一標識符(GUID)。 - Oracle 兼容
SYS_CONTEXT函數:提供 OracleSYS_CONTEXTAPI,用於查詢會話與環境元數據。 - Oracle 兼容
USERENV函數:增加USERENV函數,支持會話查詢 Oracle 風格的上下文信息。 - Oracle 兼容函數語法:支持 EDITIONABLE/NONEDITIONABLE、
RETURN、IS、OUT ... NOCOPY等 Oracle 語法結構。 - Oracle 兼容存儲過程語法:支持含 Oracle 選項的存儲過程 DDL、EXEC 調用及 ALTER PROCEDURE 操作。
- libpq OUT 參數支持:擴展客户端協議處理能力,使 OUT 參數可像 OCI 一樣被消費。
- 存儲過程 OUT 參數支持:允許存儲過程按照 Oracle 規範聲明 IN、OUT 和 IN OUT 模式參數。
- 函數 OUT 參數支持:支持函數中使用 Oracle 風格 OUT 參數,包括 IN OUT 組合模式。
- 嵌套子程序:支持在子程序內部聲明函數或過程,並支持重載。
- Oracle 兼容
INSTR函數:匹配 OracleINSTR的子串搜索和位置檢查行為。 - Oracle 兼容 FORCE VIEW:支持在引用對象不存在時創建視圖,模擬 Oracle 的 FORCE 選項。
- Oracle 兼容 LIKE 運算符:使模式匹配語義與 Oracle 對齊,確保通配符行為可預測。
在線體驗與多平台發行包
- 在線體驗環境:推出基於瀏覽器的交互式環境,無需安裝即可實時體驗 IvorySQL 5.0。
- 全平台打包支持:提供 X86、ARM、MIPS、LoongArch 架構的多平台安裝包。
雲原生與容器化
- 容器化部署支持(Docker Compose & podman & Docker Swarm):支持在 Docker Compose 、 podman 和 Docker Swarm 環境中部署單機版 IvorySQL 數據庫及高可用集羣。
- 刪除已修復問題中的CREATE PACKAGE語法幫助,具體刪除行:使psql用户可通過h create package訪問 CREATE PACKAGE 語法幫助,填補 PL/iSQL 包相關的命令行文檔空白。
- 容器化部署支持(Kubernetes):支持通過 Helm 在 Kubernetes(K8s)上部署單機版 IvorySQL 數據庫及高可用集羣。
- IvorySQL Operator v5 發佈(Kubernetes 進階版):適配 IvorySQL 5.0,同步升級系統組件版本及數據庫擴展版本。
- IvorySQL Cloud 5.0 發佈:支持 IvorySQL 5.0 數據庫的可視化託管控制平面,覆蓋訂閲、全生命週期管理以及生態集成。
擴展適配
- pg_cron:通過集成 pg_cron 實現在數據庫層執行定時任務。
- pgAudit:通過標準 PostgreSQL 日誌設施提供細粒度的會話與對象審計日誌。
- PostGIS: 通過 PostGIS 兼容性支持空間數據處理與地理空間分析。
- pgRouting:引入 pgRouting 支持,提供網絡與路徑分析功能。
- PGroonga:增強全文搜索能力。
- ddlx:支持 ddlx,實現高級模式自省與自動化 DDL 生成。
- pgsql-http:允許數據庫內部發起 HTTP/HTTPS 請求,實現與外部 Web 服務的無縫通信。
- system_stats:提供系統級統計信息。
- plpgsql_check:對 PL/pgSQL 函數進行靜態代碼分析,在運行前發現錯誤、警告與潛在問題。
- pgvector:集成 pgvector,原生支持向量相似度搜索,賦能 AI/ML 工作負載。
詳細的變化請查看:Complete Changelog
已修復問題
- 修復
unused_oids與duplicate_oids目錄工具,使頭文件掃描能準確檢測 OID 衝突,避免誤報。 - 為
libpqivytest產物添加.gitignore規則,防止生成的二進制文件和日誌污染開發者工作目錄。 - 擴展 GitHub workflow 迴歸測試,覆蓋
--with-libnuma配置,防止未來在支持 NUMA 的主機上出現故障。 - 使
psql用户可通過h create package訪問 CREATE PACKAGE 語法幫助,填補 PL/iSQL 包相關的命令行文檔空白。 - 消除了 MainLoop 中的懸空指針場景,解決了在高併發壓力下偶發的段錯誤。
- 修復測試框架假設,重新啓用
oracle_test/modules/sql測試用例,使 Oracle 兼容性測試套件可再次端到端執行。 - 更新
README.md與README_CN.md,同步 IvorySQL v5 功能集、打包與入門指南。 - 修正全局唯一索引強制約束邏輯,使相關回歸測試在所有支持平台穩定通過。
源碼倉庫
IvorySQL 的開發主要在以下四個倉庫進行維護:
- IvorySQL 數據庫源碼:https://github.com/IvorySQL/IvorySQL
- IvorySQL 官網:https://github.com/IvorySQL/Ivory-www
- IvorySQL 文檔:https://github.com/IvorySQL/IvorySQL-docs
- IvorySQL Docker:https://github.com/IvorySQL/docker_library
問題反饋
社區歡迎大家試用 IvorySQL 5.0,如果在使用的過程中出現問題或發現 bug,歡迎您在 GitHub 提交 issue,鏈接:https://github.com/IvorySQL/IvorySQL/issues
致謝
最後,致謝各位貢獻者!感謝大家在產品發佈的過程中作出貢獻,為社區發展添磚加瓦。
以下是該版本的貢獻者(排名不分先後):
- Carlos Chong
- ccwxl
- Cédric Villemain
- Fu Bei
- Fawei Zhao
- Ge Sui
- Grant Zhou
- Imran Zaheer
- jerome-peng
- luss
- Martin Gerhardy
- Mingran Feng
- omstack
- Oreo Yang
- otegami
- Ruike Sun
- rophy
- Shaolin Chu
- Shawn Yan
- Shuntian Jiao
- Shuisen Tong
- shlei6067
- sjw1933
- Steven Niu
- Xiangyu Liang
- Xiaohui Liu
- Xinjie Lv
- xuexiaoganghs
- Xueyu Gao
- yangchunwanwusheng
- Yanliang Lei
- Yasir Hussain Shah
- Yuan Li
- Zhe Zhang
- Zheng Tao
- Zhenhao Pan
- Zhuoyan Shi