Experts in Postgres and Open Source Infrastructure

24x7, 365 Enterprise services since 1997

16 15 14 13 12 11
64-bit large objects Yes Yes Yes Yes Yes Yes
Advisory locks Yes Yes Yes Yes Yes Yes
Custom background workers Yes Yes Yes Yes Yes Yes
Disk based FSM Yes Yes Yes Yes Yes Yes
Dynamic Background Workers Yes Yes Yes Yes Yes Yes
EXPLAIN (BUFFERS) support Yes Yes Yes Yes Yes Yes
EXPLAIN (WAL) support Yes Yes Yes Yes No No
"jsonlog" logging format Yes Yes No No No No
Loadable plugin infrastructure for monitoring the planner Yes Yes Yes Yes Yes Yes
Payload support for LISTEN/NOTIFY Yes Yes Yes Yes Yes Yes
pg_stat_io - I/O metrics view Yes No No No No No
Server statistics in shared memory Yes Yes No No No No
SQL-standard information schema Yes Yes Yes Yes Yes Yes
Support for anonymous shared memory Yes Yes Yes Yes Yes Yes
XML, JSON and YAML output for EXPLAIN Yes Yes Yes Yes Yes Yes
The Postgres Backend (Server)
16 15 14 13 12 11
Arrays of compound types Yes Yes Yes Yes Yes Yes
Array support Yes Yes Yes Yes Yes Yes
ENUM data type Yes Yes Yes Yes Yes Yes
GUID/UUID data type Yes Yes Yes Yes Yes Yes
macaddr8 data type Yes Yes Yes Yes Yes Yes
Multiranges Yes Yes Yes No No No
NULLs in Array Yes Yes Yes Yes Yes Yes
Phrase search Yes Yes Yes Yes Yes Yes
Range types Yes Yes Yes Yes Yes Yes
smallserial type Yes Yes Yes Yes Yes Yes
Type modifier support Yes Yes Yes Yes Yes Yes
XML data type Yes Yes Yes Yes Yes Yes
Data Types, Functions, & Operator capability
16 15 14 13 12 11
Block-range (BRIN) indexes Yes Yes Yes Yes Yes Yes
B-tree bottom-up index deletion Yes Yes Yes No No No
B-tree deduplication Yes Yes Yes Yes No No
Concurrent GiST indexes Yes Yes Yes Yes Yes Yes
Covering Indexes for B-trees (INCLUDE) Yes Yes Yes Yes Yes Yes
Covering indexes for GiST (INCLUDE) Yes Yes Yes Yes Yes No
Deferrable unique constraints Yes Yes Yes Yes Yes Yes
Exclusion constraints Yes Yes Yes Yes Yes Yes
GIN (Generalized Inverted Index) Indexes Yes Yes Yes Yes Yes Yes
GIN indexes partial match Yes Yes Yes Yes Yes Yes
GIN Index performance and size improvements Yes Yes Yes Yes Yes Yes
GiST (Generalized Search Tree) Indexes Yes Yes Yes Yes Yes Yes
Indexes on expressions Yes Yes Yes Yes Yes Yes
Index-only scans Yes Yes Yes Yes Yes Yes
Index-only scans on GiST Yes Yes Yes Yes Yes Yes
Index support for IS NULL Yes Yes Yes Yes Yes Yes
In-memory Bitmap Indexes Yes Yes Yes Yes Yes Yes
K-nearest neighbor GiST support Yes Yes Yes Yes Yes Yes
K-nearest neighbor SP-GiST Support Yes Yes Yes Yes Yes No
Non-blocking CREATE INDEX Yes Yes Yes Yes Yes Yes
Parallel B-tree index scans Yes Yes Yes Yes Yes Yes
Parallelized CREATE INDEX for B-tree indexes Yes Yes Yes Yes Yes Yes
Space-Partitioned GiST (SP-GiST) Indexes Yes Yes Yes Yes Yes Yes
SP-GiST indexes for range types Yes Yes Yes Yes Yes Yes
UNIQUE NULLS NOT DISTINCT Yes Yes No No No No
WAL support for hash indexes Yes Yes Yes Yes Yes Yes
Indexing and Constraint features
16 15 14 13 12 11
ANY_VALUE aggregate Yes No No No No No
FETCH FIRST .. WITH TIES Yes Yes Yes Yes No No
GROUPING SETS, CUBE and ROLLUP support Yes Yes Yes Yes Yes Yes
INSERT/UPDATE/DELETE RETURNING Yes Yes Yes Yes Yes Yes
LATERAL clause Yes Yes Yes Yes Yes Yes
MERGE Yes Yes No No No No
Multirow VALUES Yes Yes Yes Yes Yes Yes
Non-decimal integer literals Yes No No No No No
ORDER BY NULLS FIRST/LAST Yes Yes Yes Yes Yes Yes
range_agg range type aggregation function Yes Yes Yes No No No
Recursive Queries Yes Yes Yes Yes Yes Yes
regexp_count, regexp_instr, regexp_like Yes Yes No No No No
Row-wise comparison Yes Yes Yes Yes Yes Yes
SELECT FOR NO KEY UPDATE/SELECT FOR KEY SHARE lock modes Yes Yes Yes Yes Yes Yes
SQL standard interval handling Yes Yes Yes Yes Yes Yes
SYSTEM_USER Yes No No No No No
TABLE statement Yes Yes Yes Yes Yes Yes
Underscores (_) for thousands separators Yes No No No No No
unnest/array_agg Yes Yes Yes Yes Yes Yes
Upsert (INSERT ... ON CONFLICT DO ...) Yes Yes Yes Yes Yes Yes
Window functions Yes Yes Yes Yes Yes Yes
WITHIN GROUP clause Yes Yes Yes Yes Yes Yes
WITH ORDINALITY clause Yes Yes Yes Yes Yes Yes
WITH Queries (Common Table Expressions) Yes Yes Yes Yes Yes Yes
Writable WITH Queries (Common Table Expressions) Yes Yes Yes Yes Yes Yes
Structured Query Language (SQL) features
16 15 14 13 12 11
ALTER object IF EXISTS Yes Yes Yes Yes Yes Yes
ALTER TABLE ... ADD UNIQUE/PRIMARY KEY USING INDEX Yes Yes Yes Yes Yes Yes
ALTER TABLE ... SET ACCESS METHOD Yes Yes No No No No
ALTER TABLE ... SET LOGGED / UNLOGGED Yes Yes Yes Yes Yes Yes
Changing column types (ALTER TABLE .. ALTER COLUMN TYPE) Yes Yes Yes Yes Yes Yes
CREATE ACCESS METHOD Yes Yes Yes Yes Yes No
CREATE TABLE ... (LIKE) with foreign tables, views and composite types Yes Yes Yes Yes Yes Yes
DROP object IF EXISTS Yes Yes Yes Yes Yes Yes
ON COMMIT clause for CREATE TEMPORARY TABLE Yes Yes Yes Yes Yes Yes
REINDEX CONCURRENTLY Yes Yes Yes Yes Yes No
Stored Generated Columns Yes Yes Yes Yes Yes No
Typed tables Yes Yes Yes Yes Yes Yes
Data Definition Language (DDL)
16 15 14 13 12 11
Abbreviated Keys Yes Yes Yes Yes Yes Yes
Asynchronous Commit Yes Yes Yes Yes Yes Yes
Automatic plan invalidation Yes Yes Yes Yes Yes Yes
Background Checkpointer Yes Yes Yes Yes Yes Yes
Background Writer Yes Yes Yes Yes Yes Yes
Base backup throttling Yes Yes Yes Yes Yes Yes
CREATE STATISTICS - most-common values (MCV) statistics Yes Yes Yes Yes Yes No
CREATE STATISTICS - multicolumn Yes Yes Yes Yes Yes Yes
CREATE STATISTICS - "OR" and "IN/ANY" statistics Yes Yes Yes Yes No No
Cross datatype hashing support Yes Yes Yes Yes Yes Yes
Distributed checkpointing Yes Yes Yes Yes Yes Yes
Foreign keys marked as NOT VALID Yes Yes Yes Yes Yes Yes
Frozen page map Yes Yes Yes Yes Yes Yes
Full Text Search Yes Yes Yes Yes Yes Yes
Hash aggregation can use disk Yes Yes Yes Yes No No
Hashing support for DISTINCT/UNION/INTERSECT/EXCEPT Yes Yes Yes Yes Yes Yes
Hashing support for FULL OUTER JOIN, LEFT OUTER JOIN and RIGHT OUTER JOIN Yes Yes Yes Yes Yes Yes
Heap Only Tuples (HOT) Yes Yes Yes Yes Yes Yes
Improved performance for sorts exceeding working memory Yes Yes No No No No
Improved window function performance Yes Yes No No No No
Incremental sort Yes Yes Yes Yes No No
Incremental sort for SELECT DISTINCT Yes No No No No No
Incremental sort for window functions Yes Yes Yes No No No
Inlined WITH Queries (Common Table Expressions) Yes Yes Yes Yes Yes No
Inlining of SQL-functions Yes Yes Yes Yes Yes Yes
Just-in-Time (JIT) compilation for expression evaluation and tuple deforming Yes Yes Yes Yes Yes Yes
Load balancing for libpq / psql Yes No No No No No
LZ4 compression for TOAST tables Yes Yes Yes No No No
Multi-core scalability for read-only workloads Yes Yes Yes Yes Yes Yes
Multiple temporary tablespaces Yes Yes Yes Yes Yes Yes
Outer Join reordering Yes Yes Yes Yes Yes Yes
Parallel bitmap heap scans Yes Yes Yes Yes Yes Yes
Parallel FULL and RIGHT joins Yes No No No No No
Parallel full table scans (sequential scans) Yes Yes Yes Yes Yes Yes
Parallel hash joins Yes Yes Yes Yes Yes Yes
Parallel JOIN, aggregate Yes Yes Yes Yes Yes Yes
Parallel merge joins Yes Yes Yes Yes Yes Yes
Parallel query Yes Yes Yes Yes Yes Yes
Parallel "SELECT DISTINCT" Yes Yes No No No No
Partial sort capability (top-n sorting) Yes Yes Yes Yes Yes Yes
Query pipelining Yes Yes Yes No No No
Reduced lock levels for ALTER TABLE commands Yes Yes Yes Yes Yes Yes
SELECT ... FOR UPDATE/SHARE NOWAIT Yes Yes Yes Yes Yes Yes
Set costs specific to TABLESPACEs Yes Yes Yes Yes Yes Yes
Shared row level locking Yes Yes Yes Yes Yes Yes
SIMD support for ARM Yes No No No No No
SIMD support for x86 Yes No No No No No
SKIP LOCKED clause Yes Yes Yes Yes Yes Yes
Synchronized sequential scanning Yes Yes Yes Yes Yes Yes
TABLESAMPLE clause Yes Yes Yes Yes Yes Yes
Tablespaces Yes Yes Yes Yes Yes Yes
Unlogged tables Yes Yes Yes Yes Yes Yes
WAL Buffer auto-tuning Yes Yes Yes Yes Yes Yes
Performance
16 15 14 13 12 11
Improved set of JSON functions and operators Yes Yes Yes Yes Yes Yes
JSONB data type Yes Yes Yes Yes Yes Yes
JSONB-modifying operators and functions Yes Yes Yes Yes Yes Yes
JSONB Subscripting Yes Yes Yes No No No
JSON data type Yes Yes Yes Yes Yes Yes
SQL/JSON constructors Yes No No No No No
SQL/JSON: datetime() Yes Yes Yes Yes No No
SQL/JSON IS JSON Yes No No No No No
SQL/JSON path expressions Yes Yes Yes Yes Yes No
NoSQL/JSON
16 15 14 13 12 11
Accelerated partition pruning Yes Yes Yes Yes Yes No
Declarative table partitioning Yes Yes Yes Yes Yes Yes
Default Partition Yes Yes Yes Yes Yes Yes
Foreign Key references for partitioned tables Yes Yes Yes Yes Yes No
Foreign table inheritance Yes Yes Yes Yes Yes Yes
Partitioning by a hash key Yes Yes Yes Yes Yes Yes
Partition pruning during query execution Yes Yes Yes Yes Yes Yes
Support for PRIMARY KEY, FOREIGN KEY, indexes, and triggers on partitioned tables Yes Yes Yes Yes Yes Yes
Table Partitioning Yes Yes Yes Yes Yes Yes
UPDATE on a partition key Yes Yes Yes Yes Yes Yes
Partitioning and Inheritance
16 15 14 13 12 11
Materialized Views Yes Yes Yes Yes Yes Yes
Materialized views with concurrent refresh Yes Yes Yes Yes Yes Yes
SECURITY INVOKER views Yes Yes No No No No
Temporary VIEWs Yes Yes Yes Yes Yes Yes
Updatable views Yes Yes Yes Yes Yes Yes
WITH CHECK clause Yes Yes Yes Yes Yes Yes
Views
16 15 14 13 12 11
ALTER SUBSCRIPTION ... SKIP Yes Yes No No No No
Cascading streaming replication Yes Yes Yes Yes Yes Yes
Configure max WAL retention for replication slots Yes Yes Yes Yes No No
Logical replication Yes Yes Yes Yes Yes Yes
Logical replication avoids replication loops Yes No No No No No
Logical replication column lists Yes Yes No No No No
Logical replication for partitioned tables Yes Yes Yes Yes No No
Logical replication from standbys Yes No No No No No
Logical replication initial sync using binary protocol Yes No No No No No
Logical replication lookups with additional indexes Yes No No No No No
Logical replication parallel apply of transactions Yes No No No No No
Logical replication publish all tables in schema Yes Yes No No No No
Logical replication row filtering Yes Yes No No No No
Logical replication stream in-progress transactions Yes Yes Yes No No No
Logical replication subscriber can disable on error Yes Yes No No No No
Quorum commit for synchronous replication Yes Yes Yes Yes Yes Yes
Replication Slots Yes Yes Yes Yes Yes Yes
Streaming-only cascading replication Yes Yes Yes Yes Yes Yes
Streaming Replication Yes Yes Yes Yes Yes Yes
Synchronous replication Yes Yes Yes Yes Yes Yes
Replication capabilities including High Availability Core
16 15 14 13 12 11
Archive modules Yes Yes No No No No
Checksum on data pages Yes Yes Yes Yes Yes Yes
Enable/Disable page checksums in an offline cluster Yes Yes Yes Yes Yes No
Generic WAL facility Yes Yes Yes Yes Yes Yes
Hot Standby Yes Yes Yes Yes Yes Yes
lz4 and Zstandard (zstd) compression for WAL full page writes Yes Yes No No No No
min_wal_size / max_wal_size Yes Yes Yes Yes Yes Yes
Multiple synchronous standbys Yes Yes Yes Yes Yes Yes
Named restore points Yes Yes Yes Yes Yes Yes
Parallel pg_dump Yes Yes Yes Yes Yes Yes
Parallel restore Yes Yes Yes Yes Yes Yes
pg_basebackup client decompression Yes Yes No No No No
pg_basebackup server-side compression Yes Yes No No No No
pg_basebackup tool Yes Yes Yes Yes Yes Yes
pg_receivewal (formerly pg_receivexlog) Yes Yes Yes Yes Yes Yes
Point-in-Time Recovery Yes Yes Yes Yes Yes Yes
Pre-fetch WAL during recovery Yes Yes No No No No
remote_apply mode Yes Yes Yes Yes Yes Yes
Time-delayed Standbys Yes Yes Yes Yes Yes Yes
Verify backup integrity (pg_verifybackup) Yes Yes Yes Yes No No
Warm Standby Yes Yes Yes Yes Yes Yes
Backup, Restore and Data Integrity
COPY from/to STDIN/STDOUT Yes Yes Yes Yes Yes Yes
COPY FROM ... WHERE Yes Yes Yes Yes Yes No
COPY with arbitrary SELECT Yes Yes Yes Yes Yes Yes
CSV support for COPY Yes Yes Yes Yes Yes Yes
Data Import and Export (Core features only, does not include extensions)
16 15 14 13 12 11
ALTER SYSTEM Yes Yes Yes Yes Yes Yes
Fractional input for "integer" values Yes Yes Yes Yes Yes No
Include directives for pg_hba.conf and pg_ident.conf Yes No No No No No
Per user/database server configuration settings Yes Yes Yes Yes Yes Yes
pg_config system view Yes Yes Yes Yes Yes Yes
Regular expression matching in pg_hba.conf and pg_ident.conf Yes No No No No No
Configuration Management
16 15 14 13 12 11
Channel binding for SCRAM authentication Yes Yes Yes Yes Yes Yes
Client can require SCRAM channel binding Yes Yes Yes Yes No No
Client-specified requirements for authentication Yes No No No No No
Column level permissions Yes Yes Yes Yes Yes Yes
Default permissions Yes Yes Yes Yes Yes Yes
GRANT/REVOKE ON ALL TABLES/SEQUENCES/FUNCTIONS Yes Yes Yes Yes Yes Yes
GSSAPI client and server-side encryption Yes Yes Yes Yes Yes No
GSSAPI support Yes Yes Yes Yes Yes Yes
Kerberos credential delegation Yes No No No No No
Large object access controls Yes Yes Yes Yes Yes Yes
LDAP server discovery Yes Yes Yes Yes Yes No
Multifactor authentication via valid client SSL/TLS certificate Yes Yes Yes Yes Yes No
Native LDAP authentication Yes Yes Yes Yes Yes Yes
Native RADIUS authentication Yes Yes Yes Yes Yes Yes
Per user/database connection limits Yes Yes Yes Yes Yes Yes
Predefined roles Yes Yes Yes Yes Yes Yes
Privileges for setting configuration parameters Yes Yes No No No No
ROLES Yes Yes Yes Yes Yes Yes
Row-Level Security Yes Yes Yes Yes Yes Yes
SCRAM-SHA-256 Authentication Yes Yes Yes Yes Yes Yes
Search+bind mode operation for LDAP authentication Yes Yes Yes Yes Yes Yes
security_barrier option on views Yes Yes Yes Yes Yes Yes
Security Service Provider Interface (SSPI) Yes Yes Yes Yes Yes Yes
SSL certificate validation in libpq Yes Yes Yes Yes Yes Yes
SSL client certificate authentication Yes Yes Yes Yes Yes Yes
SSPI authentication via GSSAPI Yes Yes Yes Yes Yes Yes
Support using the client's OS trusted CA. Yes No No No No No
Security and Compliance
16 15 14 13 12 11
Cursors Yes Yes Yes Yes Yes Yes
Savepoints Yes Yes Yes Yes Yes Yes
Serializable Snapshot Isolation Yes Yes Yes Yes Yes Yes
Two Phase commit Yes Yes Yes Yes Yes Yes
Updatable cursors Yes Yes Yes Yes Yes Yes
Transactions and Visibility
16 15 14 13 12 11
Inserted data can trigger autovacuum Yes Yes Yes Yes No No
Integrated autovacuum daemon Yes Yes Yes Yes Yes Yes
Page freezing optimizations Yes No No No No No
Parallelized VACUUM for Indexes Yes Yes Yes Yes No No
Parallel vacuumdb jobs Yes Yes Yes Yes Yes Yes
Vacuum "emergency mode" Yes Yes Yes No No No
Visibility Map for Vacuuming Yes Yes Yes Yes Yes Yes
Vacuum and Maintenance
16 15 14 13 12 11
Certificate authentication with postgres_fdw Yes Yes Yes Yes No No
Foreign data wrapper query parallelism Yes Yes Yes No No No
Foreign data wrappers Yes Yes Yes Yes Yes Yes
Foreign Tables Yes Yes Yes Yes Yes Yes
IMPORT FOREIGN SCHEMA Yes Yes Yes Yes Yes Yes
Import foreign table partitions Yes Yes Yes No No No
Parallel query execution on remote databases Yes Yes Yes No No No
postgres_fdw parallel commit Yes Yes No No No No
postgres_fdw pushdown Yes Yes Yes Yes Yes Yes
PostgreSQL Foreign Data Wrapper Yes Yes Yes Yes Yes Yes
Writable Foreign Data Wrappers Yes Yes Yes Yes Yes Yes
Foreign Data Wrappers (SQL/MED)
16 15 14 13 12 11
ALTER TABLE ENABLE/DISABLE TRIGGER Yes Yes Yes Yes Yes Yes
ALTER TABLE / ENABLE REPLICA TRIGGER/RULE Yes Yes Yes Yes Yes Yes
BEGIN ATOMIC function bodies Yes Yes Yes No No No
CALL syntax for executing procedures Yes Yes Yes Yes Yes Yes
Column level triggers Yes Yes Yes Yes Yes Yes
CREATE PROCEDURE syntax for SQL stored procedures Yes Yes Yes Yes Yes Yes
Event triggers Yes Yes Yes Yes Yes Yes
FILTER clause for aggregate functions Yes Yes Yes Yes Yes Yes
ORDER BY support within aggregates Yes Yes Yes Yes Yes Yes
Per function GUC settings Yes Yes Yes Yes Yes Yes
Per function statistics Yes Yes Yes Yes Yes Yes
RETURN QUERY EXECUTE Yes Yes Yes Yes Yes Yes
RETURNS TABLE Yes Yes Yes Yes Yes Yes
Statement level triggers Yes Yes Yes Yes Yes Yes
Statement level TRUNCATE triggers Yes Yes Yes Yes Yes Yes
Triggers on views Yes Yes Yes Yes Yes Yes
Variadic functions Yes Yes Yes Yes Yes Yes
WHEN clause for CREATE TRIGGER Yes Yes Yes Yes Yes Yes
UDFs, Stored Procedures and Triggers
16 15 14 13 12 11
CASE in pl/pgsql Yes Yes Yes Yes Yes Yes
CONTINUE statement for PL/pgSQL Yes Yes Yes Yes Yes Yes
CREATE TRANSFORM Yes Yes Yes Yes Yes Yes
DO statement for pl/perl Yes Yes Yes Yes Yes Yes
DO statement for pl/pgsql Yes Yes Yes Yes Yes Yes
EXCEPTION support in PL/pgSQL Yes Yes Yes Yes Yes Yes
EXECUTE USING in PL/pgSQL Yes Yes Yes Yes Yes Yes