1. Version Overview

[Release Date: Nov 25, 2025]

IvorySQL 5.0, based on PostgreSQL 18.0, introduces significant Oracle compatibility improvements, PL/iSQL enhancements, and new globalization capabilities while refreshing packaging, automation, and tooling. For a comprehensive list of updates, please visit our documentation site.

2. Enhancements

  • PostgreSQL 18.0

    1. An asynchronous I/O (AIO) subsystem that can improve performance of sequential scans, bitmap heap scans, vacuums, and other operations.

    2. pg_upgrade now retains optimizer statistics.

    3. Support for "skip scan" lookups that allow using multicolumn B-tree indexes in more cases.

    4. uuidv7() function for generating timestamp-ordered UUIDs.

    5. Virtual generated columns that compute their values during read operations. This is now the default for generated columns.

    6. OAuth authentication support.

    7. OLD and NEW support for RETURNING clauses in INSERT, UPDATE, DELETE, and MERGE commands.

    8. Temporal constraints, or constraints over ranges, for PRIMARY KEY, UNIQUE, and FOREIGN KEY constraints.

For further details, visit PostgreSQL’s release notes.

3. New Features

3.1. 21 New Oracle Compatibility Features

  • Oracle-compatible ROWID support: Feature #126
    Ensures IvorySQL row identifiers align with Oracle semantics for seamless cross-database tooling.

  • PL/iSQL CALL invocation syntax: Feature #764
    Adds the Oracle-style CALL entry point so stored procedures can be invoked consistently.

  • PL/iSQL %ROWTYPE support: Feature #765
    Allows variables to mirror entire table or cursor rows for concise PL/iSQL coding.

  • PL/iSQL %TYPE support: Feature #766
    Enables variables to adopt the data type of existing columns or variables to reduce drift.

  • Case-sensitive compatibility switch: Feature #767
    Preserves identifier case to match Oracle behavior when required.

  • NLS parameter compatibility: Feature #768
    Honors Oracle-style NLS settings such as NLS_DATE_FORMAT and NLS_TIMESTAMP_FORMAT.

  • Empty string to NULL translation: Feature #769
    Converts zero-length strings to NULL to match Oracle compatibility rules.

  • Parser switching capability: Feature #770
    Adds toggles between Oracle and PostgreSQL parsers for per-session flexibility.

  • GB18030 database encoding: Feature #771
    Provides GB18030 initialization and create-database options for full Chinese market coverage.

  • Oracle-compatible SYS_GUID: Feature #773
    Implements the Oracle SYS_GUID function to generate RAW-based GUIDs.

  • Oracle-compatible SYS_CONTEXT: Feature #774
    Delivers the Oracle SYS_CONTEXT API for querying session and environment metadata.

  • Oracle-compatible USERENV: Feature #775
    Adds the USERENV function so sessions can inspect Oracle-style contextual details.

  • Oracle-compatible function syntax: Feature #776
    Supports Oracle constructs such as EDITIONABLE/NONEDITIONABLE, RETURN, IS, and OUT …​ NOCOPY options.

  • Oracle-compatible procedure syntax: Feature #777
    Enables procedure DDL with Oracle options, EXEC invocation, and ALTER PROCEDURE support.

  • libpq OUT parameter plumbing: Feature #778
    Extends client protocol handling so OUT parameters can be consumed like OCI.

  • Procedure OUT parameter support: Feature #779
    Allows stored procedures to declare IN, OUT, and IN OUT modes per Oracle conventions.

  • Function OUT parameter support: Feature #780
    Permits Oracle-style OUT parameters within functions, including IN OUT combinations.

  • Nested subprograms: Feature #781
    Introduces support for declaring functions or procedures within other subprograms, including overloading.

  • Oracle-compatible INSTR: Feature #782
    Matches Oracle INSTR behavior for substring searches and position checks.

  • Oracle-compatible FORCE VIEW: Feature #783
    Lets views be created even when referenced objects do not yet exist, mirroring Oracle’s FORCE option.

  • Oracle-compatible LIKE operator: Feature #784
    Aligns pattern-matching semantics with Oracle for predictable wildcard behavior.

3.2. Online Trial and Multi-Platform Distribution Packages

  • Online Experience: IvorySQL v5.0: Featuare #887
    An interactive, browser-based environment will be launched to allow users to explore and evaluate IvorySQL v5.0 in real time — no installation required.

  • Packaging for All Platforms: Featuare #949
    Provides multi-platform media packages for X86、ARM、MIPS、LoongArch architecture.

3.3. Cloud-Native & Containerized

  • Containerized Deployment Support (Docker Compose & Docker Swarm): Supports deployment of standalone IvorySQL databases and high-availability clusters in Docker Swarm and Docker Compose environments.

  • Containerized Deployment Support (Kubernetes): Supports deployment of standalone IvorySQL databases and high-availability clusters on Kubernetes (K8S) using Helm.

  • IvorySQL Operator v5 released (Kubernetes): The IvorySQL Operator v5 has been adapted to support IvorySQL v5.0, with upgrades to system component versions and database extension versions.

  • IvorySQL Cloud v5 released (Unified Lifecycle & Visual Control Plane): Offers a fully managed, graphical control plane that handles IvorySQL v5 database subscriptions, orchestrates end-to-end lifecycle operations, and integrates surrounding ecosystem services.

3.4. Support for 10 Additional PostgreSQL Extensions

  • pg_cron: Feature #882
    Scheduled job execution within the database layer will be available through pg_cron integration.

  • pgAudit: Feature #929
    Provides detailed session and/or object audit logging via the standard PostgreSQL logging facility.

  • PostGIS: Feature #880
    Spatial data processing and geospatial analytics will be enabled through PostGIS compatibility.

  • pgRouting: Feature #881
    Network and routing analysis features will be introduced with pgRouting support.

  • PGroonga: Feature #879
    Full-text search capabilities will be enhanced via planned PGroonga support.

  • ddlx: Feature #877
    Support for ddlx to enable advanced schema introspection and automated DDL generation.

  • pgsql-http: Feature #883
    Allow the database to initiate HTTP/HTTPS requests internally, enabling seamless communication between the database and external web services.

  • system_stats: Feature #946
    System level statistics will be provided by system_stats support.

  • plpgsql_check: Feature #915
    Static code analysis on PL/pgSQL functions to identify errors, warnings, and potential issues before runtime execution

  • pgvector: Feature #878
    Integration with pgvector to empower AI/ML workloads through native vector similarity search.

4. Fixed Issues

  • Repaired unused_oids and duplicate_oids catalog tooling so header scans correctly detect conflicts without false positives: Issue #841

  • Added .gitignore coverage for libpq/ivytest artifacts to prevent generated binaries and logs from polluting developer trees: Issue #843

  • Extended GitHub workflow regression runs to cover builds configured with --with-libnuma, preventing future breakages on NUMA-enabled hosts: Issue #869

  • Enabled psql users to access CREATE PACKAGE syntax help via \h create package, closing the CLI documentation gap for PL/iSQL packages: Issue #936

  • Eliminated the MainLoop dangling-pointer scenario that triggered intermittent segmentation faults under concurrency stress: Issue #898

  • Re-enabled oracle_test/modules/*/sql cases by fixing harness assumptions so Oracle-compatibility suites execute end-to-end again: Issue #897

  • Updated README.md and README_CN.md to reflect IvorySQL v5 feature set, packaging, and onboarding instructions: Issue #896

  • Corrected globally unique index enforcement so related regression tests now pass reliably across supported platforms: Issue #894

5. Source Code

IvorySQL’s development is maintained across four main repositories:

6. Contributors

The following individuals (in alphabetical order) have contributed to this release as patch authors, committers, reviewers, testers, or reporters of issues.

  • Carlos Chong

  • ccwxl

  • Cédric Villemain

  • elodiefb

  • Fawei Zhao

  • Ge Sui

  • Grant Zhou

  • Imran Zaheer

  • jerome-peng

  • Jiaoshun Tian

  • luss

  • Martin Gerhardy

  • msdnchina

  • omstack

  • otegami

  • 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

  • Zheng Tao

  • Zhenhao Pan

  • Zhuoyan Shi