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 发行说明[1]。
新特性
新增 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 对齐,确保通配符行为可预测。
在线体验与多平台发行包
-
在线体验环境[2]:推出基于浏览器的交互式环境,无需安装即可实时体验 IvorySQL 5.0。 -
全平台打包支持:提供 X86、ARM、MIPS、LoongArch 架构的多平台安装包。
云原生与容器化
-
容器化部署支持(Docker Compose & Docker Swarm):支持在 Docker Compose 和 Docker Swarm 环境中部署单机版 IvorySQL 数据库及高可用集群。 -
容器化部署支持(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[3]
已修复问题
-
修复 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 5.0 功能集、打包与入门指南。 -
修正全局唯一索引强制约束逻辑,使相关回归测试在所有支持平台稳定通过。
源码仓库
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 -
Jiaoshun Tian -
luss -
Martin Gerhardy Mingran Feng -
omstack -
otegami -
Ruike Sun -
rophy -
Shaolin Chu -
Shawn Yan -
Shihua Yang -
Shiji Niu -
Shuisen Tong -
shlei6067 -
sjw1933 -
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
引用链接
PostgreSQL 18.0 发行说明: https://www.postgresql.org/docs/release/18.0
[2]在线体验环境: http://trial.ivorysql.org:8080/
[3]Complete Changelog: https://github.com/IvorySQL/IvorySQL/compare/IvorySQL_4.6...IvorySQL_5.0

