1. 版本概览
[发布日期:2025 年 11 月 25 日]
IvorySQL 5.0 基于 PostgreSQL 18.0,带来更强的 Oracle 兼容能力、PL/iSQL 增强以及全新的全球化特性,同时对打包、自动化和工具链进行全面更新。 有关完整更新列表,请访问我们的 文档站点。
2. 增强内容
-
PostgreSQL 18.0
-
新增异步 I/O(AIO)子系统,可提升顺序扫描、位图堆扫描、vacuum 等操作的性能。
-
pg_upgrade 现在会保留优化器统计信息。
-
支持 "skip scan" 查找,使多列 B-tree 索引能够在更多场景下使用。
-
提供用于生成按时间排序 UUID 的 uuidv7() 函数。
-
支持虚拟生成列(在读取时计算值),并将其设为生成列的默认模式。
-
增加 OAuth 认证能力。
-
在 INSERT、UPDATE、DELETE 和 MERGE 的 RETURNING 子句中支持 OLD 和 NEW。
-
对 PRIMARY KEY、UNIQUE 与 FOREIGN KEY 引入时间区间约束。
-
更多细节请参阅 PostgreSQL 18.0 发布说明。
3. 新特性
3.1. 新增21 项 Oracle 兼容能力
-
Oracle 兼容 ROWID:Feature #126
让 IvorySQL 行标识符与 Oracle 语义保持一致,便于跨数据库工具协同。 -
PL/iSQL CALL 调用语法:Feature #764
新增 Oracle 风格的CALL入口,实现存储过程一致的调用体验。 -
PL/iSQL
%ROWTYPE:Feature #765
允许变量复用整张表或游标行的结构,便于紧凑编写 PL/iSQL。 -
PL/iSQL
%TYPE:Feature #766
支持变量继承既有列或变量的类型,降低类型漂移风险。 -
区分大小写兼容开关:Feature #767
在需要时可保留标识符大小写,以匹配 Oracle 行为。 -
NLS 参数兼容性:Feature #768
支持NLS_DATE_FORMAT、NLS_TIMESTAMP_FORMAT等 Oracle 风格 NLS 设置。 -
空字符串转 NULL:Feature #769
将长度为零的字符串转换为 NULL,以遵循 Oracle 的兼容规则。 -
解析器切换能力:Feature #770
可在 Oracle 与 PostgreSQL 解析器之间切换,实现会话级灵活性。 -
GB18030 数据库编码:Feature #771
为中国市场提供 GB18030 初始化和创建数据库选项。 -
Oracle 兼容
SYS_GUID:Feature #773
实现 OracleSYS_GUID函数,生成基于 RAW 的 GUID。 -
Oracle 兼容
SYS_CONTEXT:Feature #774
提供 OracleSYS_CONTEXTAPI,用于查询会话与环境元数据。 -
Oracle 兼容
USERENV:Feature #775
引入USERENV函数,使会话可检查 Oracle 风格的上下文信息。 -
Oracle 兼容函数语法:Feature #776
支持 EDITIONABLE/NONEDITIONABLE、RETURN、IS、OUT … NOCOPY等 Oracle 结构。 -
Oracle 兼容过程语法:Feature #777
支持包含 Oracle 选项的过程 DDL、EXEC 调用以及 ALTER PROCEDURE。 -
libpq OUT 参数传递:Feature #778
扩展客户端协议,使 OUT 参数可像 OCI 一样被消费。 -
过程 OUT 参数:Feature #779
存储过程现在可按 Oracle 约定声明 IN、OUT、IN OUT 模式。 -
函数 OUT 参数:Feature #780
函数支持 Oracle 风格 OUT(含 IN OUT)参数。 -
嵌套子程序:Feature #781
允许在子程序内部定义函数或过程,并支持重载。 -
Oracle 兼容
INSTR:Feature #782
与 OracleINSTR行为保持一致,覆盖子串搜索与位置判断。 -
Oracle 兼容 FORCE VIEW:Feature #783
允许在引用对象尚未存在时创建视图,重现 Oracle FORCE 选项。 -
Oracle 兼容 LIKE 运算符:Feature #784
对齐 Oracle 的通配符语义,确保匹配行为可预测。
3.3. 云原生与容器化
-
容器化部署支持(Docker Compose & Docker Swarm): 支持在 Docker Swarm 与 Docker Compose 中部署单实例数据库与高可用集群。
-
容器化部署支持(Kubernetes 基础版): 使用 Helm 在 Kubernetes(K8S)中部署单实例数据库与高可用集群。
-
发布 IvorySQL Operator v5(Kubernetes 进阶版): Operator v5 适配 IvorySQL v5.0,并同步升级系统组件版本与数据库扩展版本。
-
发布 IvorySQL Cloud v5(统一全生命周期与可视化控制平面): 提供可视化托管控制平面,覆盖订阅、全生命周期编排以及生态集成。
3.4. 新增 10 个 PostgreSQL 扩展
-
pg_cron:Feature #882
通过 pg_cron 集成在数据库层内执行计划任务。 -
pgAudit:Feature #929
借助 PostgreSQL 标准日志能力输出详尽的会话 / 对象审计记录。 -
PostGIS:Feature #880
提供空间数据处理与地理分析能力。 -
pgRouting:Feature #881
引入网络与路径分析能力。 -
PGroonga:Feature #879
增强全文检索。 -
ddlx:Feature #877
支持 ddlx,便于高级模式洞察与自动化 DDL 生成。 -
pgsql-http:Feature #883
允许数据库内部发起 HTTP/HTTPS 请求,实现与外部 Web 服务的无缝通信。 -
system_stats:Feature #946
通过 system_stats 提供系统级统计信息。 -
plpgsql_check:Feature #915
在运行前对 PL/pgSQL 函数做静态分析,定位错误、警告与潜在问题。 -
pgvector:Feature #878
融合 pgvector,为 AI/ML 工作负载提供原生向量相似度检索。
4. 缺陷修复
-
修复
unused_oids与duplicate_oids目录工具,使头文件扫描能准确检测冲突且无误报:Issue #841 -
为
libpq/ivytest产物新增.gitignore,避免生成的二进制与日志污染开发树:Issue #843 -
扩展 GitHub 工作流回归测试,覆盖
--with-libnuma配置,防止未来在启用 NUMA 的主机上出问题:Issue #869 -
让
psql用户可以通过\h create package获取 CREATE PACKAGE 语法帮助,补齐 PL/iSQL 包的 CLI 文档:Issue #936 -
排除 MainLoop 悬空指针引发的并发压力下间歇性段错误:Issue #898
-
修复
oracle_test/modules/*/sql的测试框架假设,让 Oracle 兼容测试套件再次端到端运行:Issue #897 -
更新
README.md与README_CN.md,同步 IvorySQL v5 特性、打包与快速上手信息:Issue #896 -
更正全局唯一索引的强制机制,使相关回归测试在所有支持平台上稳定通过:Issue #894