All Products
Search
Document Center

PolarDB:PolarDB for PostgreSQL 18 is officially released

Last Updated:Feb 02, 2026

PolarDB for PostgreSQL 18 is now available. This version is compatible with PostgreSQL 18 and includes performance improvements, streamlined operations, and new features.

Release date

January 10, 2026 (Singapore time)

Billing

This product supports subscription and pay-as-you-go billing models. which provide flexible billing options. For more information about billing, see Product Billing.

What's new in this version

Built on community PostgreSQL 18, PolarDB for PostgreSQL 18 includes exclusive features:

Feature

Description

GanosBase spatiotemporal engine

Geospatial and temporal data processing

Global plan cache

Query plan caching across sessions

GBK/GB18030 character sets

Chinese character encoding support

Supported extensions

This release supports the following 26 PostgreSQL extensions:

hypopg ip4r mysql_fdw pase pgaudit pg_bigm pg_cron pg_filedump pg_hint_plan pgjwt pg_net pg_similarity pgsodium pg_stat_kcache pgtap pgvector pldebugger postgres-decoderbufs prefix roaringbitmap sequential_uuids ganos varbitx vault wal2json zhparser

Performance optimizations

PolarDB for PostgreSQL 18 includes the following system-level optimizations:

Optimization

Description

Profile-Guided Optimization (PGO)

Compiler-level optimization based on runtime profiles

Binary Optimization and Layout Tool (BOLT)

Post-link binary optimization

Link-Time Optimization (LTO)

Cross-module optimization at link time

I/O optimizations

Batch file reads/writes and expansion, batch dirty page flushing

Note

For complete PostgreSQL 18 release information, see PostgreSQL 18 Release Notes.

Key improvements

System-level performance

Feature

Improvement

Asynchronous I/O

Backend can send multiple read requests in parallel, improving sequential scans, bitmap heap scans, and VACUUM efficiency.

Query optimization

Optimizer automatically removes unnecessary self-joins and converts IN (VALUES ...) clauses to = ANY (array) for better statistics usage.

B-tree skip scan

B-tree indexes now support skip scan for improved query performance.

GIN parallel builds

GIN indexes support parallel creation for faster index maintenance.

VACUUM optimization

VACUUM can freeze all-visible pages, reducing subsequent full-table freeze overhead. New ONLY option processes only the parent partitioned table.

Developer experience

Feature

Improvement

Virtual generated columns

Generated columns are now virtual by default—values are computed on read instead of stored on write, saving storage space.

RETURNING clause enhancements

Supports OLD and NEW keywords, enabling INSERT, UPDATE, DELETE, and MERGE to return data from before and after changes.

High availability and logical replication

Feature

Improvement

Generated column replication

Logical replication now supports generated columns.

Parallel streaming

The default value of the streaming parameter for CREATE SUBSCRIPTION is changed to parallel.

Conflict detection

New logical replication conflict log helps identify and resolve data synchronization issues.

Security and access control

Feature

Improvement

Authentication

MD5 password authentication is deprecated. OAuth authentication method is introduced for modern, secure identity verification.

Permission functions

New pg_get_acl() and has_largeobject_privilege() functions. Default permissions can now be defined for large objects.


Upgrade guide

We recommend upgrading to PolarDB for PostgreSQL 18 to stay current with PostgreSQL community updates and access the latest resources and best practices.

When upgrading from PolarDB for PostgreSQL 17, most data types, built-in functions, table columns, and objects remain unchanged. You can achieve nearly 100% compatibility using logical replication. We recommend using DTS for migrations between PolarDB for PostgreSQL versions.

Note

This topic covers differences between PolarDB for PostgreSQL 18 and 17. For other version differences, see Differences between PostgreSQL 17 and PostgreSQL 16, Differences between PostgreSQL 16 and PostgreSQL 15, and Differences between PostgreSQL 15 and PostgreSQL 14.

Behavior changes

Change

Description

Data checksums

initdb now enables data checksums by default.

Time zone abbreviations

Processing now prioritizes current session settings.

MD5 deprecation

Setting MD5 passwords with CREATE ROLE or ALTER ROLE now issues a deprecation warning.

Full-text search

Configuration file and dictionary reads now use the cluster's default collation provider.

System view changes

View

Change

pg_backend_memory_contexts

The parent column is removed. The level column index base changed from 0 to 1.

pg_stat_all_tables

Now includes statistics for time consumed by VACUUM and ANALYZE operations.

pg_stat_wal

The wal_write, wal_sync, wal_write_time, and wal_sync_time columns are removed.

pg_log_backend_memory_contexts()

The index base changed from 0 to 1.

New functions

Function

Purpose

casefold()

Case-insensitive string matching

uuidv7()

UUID version 7 generation (time-ordered)

crc32(), crc32c()

Cyclic redundancy check (CRC) calculation

array_sort(), array_reverse()

Array sorting and reversal

pg_get_acl()

Access control list details retrieval

has_largeobject_privilege()

Large object permission checking

Function changes

Function

Change

MIN(), MAX()

Support array and composite types.

EXTRACT()

New WEEK option is added.

Permission changes

Change

Description

ALTER DEFAULT PRIVILEGES

Supports defining default permissions for large objects.

pg_signal_autovacuum_worker

New predefined role is added

GRANT/REVOKE

Support for the obsolete Rule permission is removed.

Other changes

Change

Description

VACUUM and ANALYZE

Now process inherited child tables of a parent table by default.

COPY FROM

No longer treats . as an end marker when reading CSV files.

Unlogged partitioned tables

Creation is now prohibited.

AFTER triggers

Execute with the role that was active when the trigger event was queued.

CREATE SUBSCRIPTION

The default value of the streaming parameter changed to parallel.