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 |
Drop primary key constraints | 8735 |
XML Functions | 1043 |
XA syntax | 11084 |
ALTER TYPE | 1893 |
CREATE CONVERSION | 10866 |
Primary/Foreign key constraints on foreign tables | 10698, 10699 |
LIKE ALL | 10697 |
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 |