PostgreSQL compatibility

YugabyteDB is a PostgreSQL-compatible distributed database that supports the majority of PostgreSQL syntax. This means that existing applications built on PostgreSQL can often be migrated to YugabyteDB without changing application code.

Because YugabyteDB is PostgreSQL compatible, it works with the majority of PostgreSQL database tools such as various language drivers, ORM tools, schema migration tools, and many more third-party database tools.

Because YugabyteDB is a distributed database, supporting all PostgreSQL features easily in a distributed system is not always feasible. This page documents the known list of differences between PostgreSQL and YugabyteDB. You need to consider these differences while porting an existing application to YugabyteDB.

Unsupported PostgreSQL features

The following PostgreSQL features are not supported in YugabyteDB:

Unsupported PostgreSQL feature Track feature request GitHub issue
LOCK TABLE to obtain a table-level lock 5384
Table inheritance 5956
Exclusion constraints 3944
Deferrable constraints 1709
GiST indexes 1337
Events (Listen/Notify) 1872
XML Functions 1043
XA syntax 11084
ALTER TYPE 1893
CREATE CONVERSION 10866
Primary/Foreign key constraints on foreign tables 10698, 10699
GENERATED ALWAYS AS STORED columns 10695
Multicolumn GIN indexes 10652
CREATE ACCESS METHOD 10693
DESC/HASH on GIN indexes (ASC supported) 10653
CREATE SCHEMA with elements 10865
Index on citext column 9698
ABSTIME type 15637
transaction ids (xid)
YugabyteDB uses Hybrid logical clocks instead of transaction ids.
15638
DDL operations within transaction 1404
Some ALTER TABLE variants 1124