-
Notifications
You must be signed in to change notification settings - Fork 0
PG Version Matrix
Vivek edited this page Jul 14, 2026
·
1 revision
Feature support across PostgreSQL 10–18.
| Version | Release | EOL | Support Level |
|---|---|---|---|
| PG 10 | 2017 | Nov 2022 | ✅ Full |
| PG 11 | 2018 | Nov 2023 | ✅ Full |
| PG 12 | 2019 | Nov 2024 | ✅ Full |
| PG 13 | 2020 | Nov 2025 | ✅ Full |
| PG 14 | 2021 | Nov 2026 | ✅ Full |
| PG 15 | 2022 | Nov 2027 | ✅ Full |
| PG 16 | 2023 | Nov 2028 | ✅ Full |
| PG 17 | 2024 | Nov 2029 | ✅ Full |
| PG 18 | 2025 | TBD | ✅ Full |
| Feature | PG10 | PG11 | PG12 | PG13 | PG14 | PG15 | PG16 | PG17 | PG18 |
|---|---|---|---|---|---|---|---|---|---|
| GENERATED ALWAYS | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| STORED generated | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| VIRTUAL generated | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ |
| IDENTITY columns | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Feature | PG10 | PG11 | PG12 | PG13 | PG14 | PG15 | PG16 | PG17 | PG18 |
|---|---|---|---|---|---|---|---|---|---|
| RANGE partitioning | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| LIST partitioning | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| HASH partitioning | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| DEFAULT partition | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Multi-column partition key | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| SPLIT PARTITION | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ | ✅ | ✅ |
| MERGE PARTITIONS | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ | ✅ | ✅ |
| Feature | PG10 | PG11 | PG12 | PG13 | PG14 | PG15 | PG16 | PG17 | PG18 |
|---|---|---|---|---|---|---|---|---|---|
| INCLUDE columns | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| CONCURRENTLY | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| NULLS NOT DISTINCT | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ |
| Feature | PG10 | PG11 | PG12 | PG13 | PG14 | PG15 | PG16 | PG17 | PG18 |
|---|---|---|---|---|---|---|---|---|---|
| Multirange types | ❌ | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| RANGES | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| ENUM ADD VALUE in txn | ❌ | ❌ | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Feature | PG10 | PG11 | PG12 | PG13 | PG14 | PG15 | PG16 | PG17 | PG18 |
|---|---|---|---|---|---|---|---|---|---|
| PROCEDURE | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| BEGIN ATOMIC | ❌ | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| SQL-body functions | ❌ | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Feature | PG10 | PG11 | PG12 | PG13 | PG14 | PG15 | PG16 | PG17 | PG18 |
|---|---|---|---|---|---|---|---|---|---|
| RLS | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Security invoker views | ❌ | ❌ | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Feature | PG10-17 | PG18 |
|---|---|---|
| PERIOD definition | ❌ | ✅ |
| SYSTEM VERSIONING | ❌ | ✅ |
| Temporal FK | ❌ | ✅ |
| AS OF queries | ❌ | ✅ |
The engine automatically detects PostgreSQL version:
const snapshot = await engine.introspect(pool);
console.log(snapshot.version); // 18
// Version-specific queries applied automatically
// No manual configuration needed// PG >= 14: Transaction-safe
// PG < 14: Pre-transaction execution// PG >= 15: Supported
// PG < 15: Ignored with warning// PG >= 11: Include clause generated
// PG < 11: Index without INCLUDE| Feature | Deprecated | Removed | Notes |
|---|---|---|---|
pg_constraint.consrc |
PG12 | PG14 | Use pg_get_constraintdef
|
pg_type.typtype='d' |
- | - | Still used for domains |
pg_class.reloff |
PG16 | - | Obsolete, tablespace drives location |
- Architecture — How version detection works
- Supported-Objects — Full object type coverage