This document tracks PostgreSQL feature compatibility for the Turso Postgres
frontend. The feature list is based on the official
PostgreSQL feature matrix,
with additional rows for baseline features the matrix does not enumerate.
Status legend:
| Status | Meaning |
|---|
| โ
Supported | Feature works and is covered by tests |
| ๐ก Partial | Feature works with limitations (see notes) |
| โ Not supported | Feature is not implemented |
The frontend parses SQL with pg_query (libpg_query, the real PostgreSQL
grammar), so virtually all PostgreSQL syntax is accepted at parse time.
Support is decided by the translator (postgres/parser/translator.rs), which
converts the PostgreSQL AST into Turso's native AST, and by what the Turso
engine can execute. Components:
postgres/parser โ parse + translate PostgreSQL SQL to Turso AST
postgres/frontend โ pg_catalog emulation, COPY, schemas, session handling
postgres/server โ PostgreSQL wire protocol (v3) server, built on pgwire
postgres/cli โ tursopg, a psql-like REPL that can also host the server
Because the parser accepts the full PostgreSQL grammar, some clauses parse
and run but their semantics are silently dropped, producing wrong results or
lost information without any error. These are called out as "silently
ignored" in the notes of the tables below.
Basics not enumerated by the official feature matrix.
| Feature | Status | Notes |
|---|
| SELECT (projections, WHERE, GROUP BY, HAVING, ORDER BY, LIMIT/OFFSET) | โ
Supported | |
| JOINs (INNER, LEFT, RIGHT, FULL, CROSS, NATURAL, USING) | โ
Supported | |
| UNION / UNION ALL / INTERSECT / EXCEPT | โ
Supported | Including ORDER BY/LIMIT on compounds |
| Subqueries (FROM, IN, EXISTS, scalar) | โ
Supported | = ANY(array) and <> ALL(array) work, including bound text-array parameters; other ANY/ALL array operators are rejected; ALL/row comparison subqueries error |
| INSERT (column lists, multi-row VALUES, DEFAULT, INSERT ... SELECT) | โ
Supported | |
| UPDATE (incl. FROM clause) | โ
Supported | Multi-column SET (a,b) = (...) not supported |
| DELETE | ๐ก Partial | USING clause silently dropped |
| CREATE TABLE | โ
Supported | PK, NOT NULL, UNIQUE, DEFAULT, CHECK, FK (with ON DELETE/UPDATE actions); IF NOT EXISTS; tables are created STRICT |
| CREATE TABLE AS / SELECT INTO | โ
Supported | Schema derived from the SELECT; WITH NO DATA supported (lowered to LIMIT 0, so errors in an overridden LIMIT go unreported); explicit column list rejected; INTO on the first leaf of a compound SELECT (legal in PG) rejected; TEMP silently ignored; completes with SELECT n like PostgreSQL, though an IF NOT EXISTS skip tags SELECT 0 instead of CREATE TABLE AS |
| ALTER TABLE | ๐ก Partial | ADD/DROP COLUMN, RENAME TABLE/COLUMN work; ALTER COLUMN TYPE translates but fails at execution; SET/DROP DEFAULT, SET/DROP NOT NULL, ADD CONSTRAINT rejected |
| CREATE INDEX | โ
Supported | UNIQUE, multi-column, partial (WHERE), expression indexes, IF NOT EXISTS |
| CREATE VIEW | โ
Supported | Column aliases supported; TEMP silently ignored |
| COMMENT ON | ๐ก Partial | Accepted but discarded; comments are not persisted in pg_description |
| CREATE SCHEMA / DROP SCHEMA | โ
Supported | Schemas are ATTACHed databases; DROP ... CASCADE; public is special-cased |
| CREATE SEQUENCE / nextval / currval / setval | โ
Supported | START, INCREMENT, MIN/MAXVALUE, CYCLE; CACHE accepted (no-op); pg_sequences view |
| CREATE DOMAIN | โ
Supported | Base type + DEFAULT, NOT NULL, CHECK constraints enforced |
| CREATE TYPE ... AS ENUM | โ
Supported | Values validated on write; other CREATE TYPE forms unsupported |
| TRUNCATE | ๐ก Partial | Lowered to DELETE of the first table only; CASCADE / RESTART IDENTITY dropped |
| BEGIN / COMMIT / ROLLBACK | โ
Supported | Isolation-level and READ ONLY/WRITE options accepted but ignored |
Casts (expr::type, CAST) | โ
Supported | Also int4(x)-style cast functions |
Parameters ($1, $2, ...) | ๐ก Partial | Work through the extended wire protocol; text-format values only |
Operators: ||, %, bitwise, ILIKE, SIMILAR TO, ~/~*/!~/!~*, IS [NOT] DISTINCT FROM, BETWEEN | โ
Supported | Regex operators lower to REGEXP; case-insensitive variants treated as sensitive |
Dollar-quoted strings, escape strings (E'...'), bit/hex string literals | โ
Supported | |
| generate_series | โ
Supported | In FROM and with joins; column aliases on the function (AS g(x)) do not resolve |
| pg_catalog emulation | ๐ก Partial | See Backend section |
| SET / SHOW | ๐ก Partial | Passed through as PRAGMAs; no PostgreSQL GUCs (e.g. SHOW search_path returns nothing) |
The pg_catalog tables emulated (live, reflecting real schema): pg_class,
pg_namespace, pg_attribute, pg_type (builtin + array + enum types),
pg_index, pg_constraint, pg_attrdef, pg_tables, pg_sequences,
pg_database, pg_roles (single hardcoded turso role), pg_proc, pg_am,
plus pg_input_error_info. Present but always empty: pg_policy,
pg_trigger, pg_statistic_ext, pg_inherits, pg_rewrite,
pg_foreign_table, pg_partitioned_table, pg_collation, pg_description,
pg_publication*. Catalog introspection functions: format_type,
pg_get_constraintdef, pg_get_indexdef, pg_get_userbyid,
pg_*_is_visible, pg_encoding_to_char, pg_input_is_valid, to_char
(numeric), now/clock_timestamp/transaction_timestamp/statement_timestamp.
Session information functions: version(), current_database() /
current_catalog, current_schema (call, bare-keyword, and FROM-position
forms), pg_backend_pid(), quote_ident(), quote_literal();
obj_description()/col_description() always return NULL because COMMENT ON
is not persisted. DML against pg_catalog is rejected. pg_typeof is not
implemented.
| Feature | Status | Notes |
|---|
| 64-bit large objects | โ Not supported | |
| Advisory locks | โ Not supported | |
| Custom background workers | โ Not supported | |
| Disk based FSM | โ Not supported | |
| Dynamic Background Workers | โ Not supported | |
| EXPLAIN (BUFFERS) support | โ Not supported | EXPLAIN is not supported at all |
| EXPLAIN (MEMORY) | โ Not supported | |
| EXPLAIN (SERIALIZE) support | โ Not supported | |
| EXPLAIN (WAL) support | โ Not supported | |
| "jsonlog" logging format | โ Not supported | |
| Loadable plugin infrastructure for monitoring the planner | โ Not supported | |
| Payload support for LISTEN/NOTIFY | โ Not supported | LISTEN/NOTIFY not supported |
| pg_stat_checkpointer system view | โ Not supported | |
| pg_stat_io - I/O metrics view | โ Not supported | |
| pg_wait_events system view | โ Not supported | |
| Server statistics in shared memory | โ Not supported | |
| SQL-standard information schema | โ Not supported | Only an information_schema row in pg_namespace; no views |
| Support for anonymous shared memory | โ Not supported | |
| XML, JSON and YAML output for EXPLAIN | โ Not supported | |
Type mapping: serial/smallserial/bigserial (and serial2/4/8) become
INTEGER NOT NULL DEFAULT nextval(...) with an implicit sequence. boolean,
smallint, bigint, uuid, date, time, timestamp[tz], bytea, json, jsonb, inet,
cidr, macaddr, macaddr8 map to Turso custom types. varchar(n)/char(n) and
numeric(p,s) keep their type modifiers. interval, xml, tsvector/tsquery,
bit/varbit, geometric types degrade to TEXT; money to REAL; OID/reg* types to
INTEGER. Unknown type names pass through as custom types.
| Feature | Status | Notes |
|---|
| Arrays of compound types | โ Not supported | |
| Array support | โ
Supported | type[] columns, ARRAY[...] literals, subscripts a[i], slices a[i:j], @>, <@, &&, array_length, array_append, array_agg; backed by native Turso arrays |
| ENUM data type | โ
Supported | CREATE TYPE ... AS ENUM; values validated on write; DROP TYPE [IF EXISTS] |
| GUID/UUID data type | โ
Supported | uuid columns, gen_random_uuid(), input validation, text casts |
| macaddr8 data type | โ
Supported | Along with inet, cidr, macaddr (round-trip tested) |
| Multiranges | โ Not supported | |
| NULLs in Array | โ
Supported | ARRAY[1, NULL, 3] round-trips |
| Phrase search | โ Not supported | tsvector/tsquery degrade to TEXT; no full-text search |
| Range types | โ Not supported | |
| smallserial type | โ
Supported | serial2/serial4/serial8 aliases too; serial implies NOT NULL + implicit sequence, not PRIMARY KEY |
| Type modifier support | โ
Supported | varchar(n) length enforced ("value too long for varchar"); numeric(p,s) scale applied |
| UUIDv7 | โ Not supported | |
| XML data type | โ Not supported | xml columns degrade to TEXT; no XML functions |
| Feature | Status | Notes |
|---|
| Block-range (BRIN) indexes | โ Not supported | |
| B-tree bottom-up index deletion | โ Not supported | |
| B-tree deduplication | โ Not supported | |
| Concurrent GiST indexes | โ Not supported | |
| Covering Indexes for B-trees (INCLUDE) | โ Not supported | INCLUDE clause silently ignored |
| Covering indexes for GiST (INCLUDE) | โ Not supported | |
| Deferrable unique constraints | โ Not supported | |
| Exclusion constraints | โ Not supported | |
| GIN (Generalized Inverted Index) indexes | โ Not supported | USING <method> silently ignored; every index is a B-tree |
| GIN indexes partial match | โ Not supported | |
| GIN index performance and size improvements | โ Not supported | |
| GiST (Generalized Search Tree) indexes | โ Not supported | |
| Indexes on expressions | โ
Supported | Partial (WHERE) indexes also supported |
| Index-only scans | โ Not supported | |
| Index-only scans on GiST | โ Not supported | |
| Index support for IS NULL | โ Not supported | |
| In-memory Bitmap Indexes | โ Not supported | |
| K-nearest neighbor GiST support | โ Not supported | |
| K-nearest neighbor SP-GiST support | โ Not supported | |
| Non-blocking CREATE INDEX | โ Not supported | CONCURRENTLY silently ignored |
| Parallel B-tree index scans | โ Not supported | |
| Parallelized CREATE INDEX for BRIN indexes | โ Not supported | |
| Parallelized CREATE INDEX for B-tree indexes | โ Not supported | |
| Parallelized CREATE INDEX for GIN indexes | โ Not supported | |
| Skip scan on multicolumn B-tree indexes | โ Not supported | |
| Space-Partitioned GiST (SP-GiST) indexes | โ Not supported | |
| SP-GiST indexes for range types | โ Not supported | |
| UNIQUE NULLS NOT DISTINCT | โ Not supported | Silently ignored |
| WAL support for hash indexes | โ Not supported | |
| Feature | Status | Notes |
|---|
| ANY_VALUE aggregate | โ Not supported | |
| DISTINCT ON | โ Not supported | Accepted but silently degrades to plain DISTINCT (wrong results) |
| FETCH FIRST .. WITH TIES | โ Not supported | FETCH FIRST n ROWS ONLY works (lowered to LIMIT); WITH TIES silently ignored |
| GROUPING SETS, CUBE and ROLLUP support | โ Not supported | Translation error |
| INSERT/UPDATE/DELETE RETURNING | โ
Supported | Including RETURNING * and UPDATE ... FROM ... RETURNING |
| LATERAL clause | โ Not supported | Keyword accepted but silently ignored |
| MERGE | โ Not supported | |
| MERGE ... RETURNING | โ Not supported | |
| Multirow VALUES | โ
Supported | In INSERT and as standalone VALUES lists |
| ORDER BY / LIMIT on a standalone VALUES list | โ Not supported | Rejected: "ORDER BY clause is not allowed with VALUES clause" |
| Non-decimal integer literals | โ
Supported | 0x, 0o, 0b |
| ORDER BY NULLS FIRST/LAST | โ
Supported | Honored in SELECT, window, and compound SELECT ORDER BY; rejected (matching SQLite) in CREATE INDEX |
| range_agg range type aggregation function | โ Not supported | |
| Recursive queries | ๐ก Partial | WITH RECURSIVE works with SQLite semantics (row-at-a-time recursive term, so e.g. DISTINCT in the recursive term over a multi-row anchor can differ from PG); SEARCH/CYCLE clauses are rejected |
| regexp_count, regexp_instr, regexp_like | โ Not supported | Regex operators (~, ~*, SIMILAR TO) work |
| Return OLD and NEW values from modified rows | โ Not supported | |
| Row-wise comparison | โ Not supported | Row constructors (a,b) < (c,d) fail to translate |
| SELECT ... FOR UPDATE/SHARE | โ Not supported | Accepted but silently ignored โ no locking happens |
| SELECT FOR NO KEY UPDATE/SELECT FOR KEY SHARE lock modes | โ Not supported | Accepted but silently ignored โ no locking happens |
| SQL standard interval handling | โ Not supported | interval degrades to TEXT; no interval arithmetic |
| SYSTEM_USER | โ Not supported | current_user/current_role return stub values |
| TABLE statement | โ
Supported | |
| Underscores (_) for thousands separators | โ
Supported | |
| unnest/array_agg | ๐ก Partial | array_agg works; unnest is not implemented |
| Upsert (INSERT ... ON CONFLICT DO ...) | โ
Supported | DO NOTHING and DO UPDATE SET ... (with EXCLUDED and conflict targets) |
| Window functions | ๐ก Partial | Aggregate window functions (COUNT/SUM/AVG/MIN/MAX OVER), row_number, PARTITION BY/ORDER BY, frame clauses, and named WINDOW clauses work; rank, dense_rank, lag, lead, etc. are not implemented |
| WITHIN GROUP clause | โ Not supported | Silently dropped; ordered-set aggregates (percentile_cont) missing |
| WITH ORDINALITY clause | โ Not supported | |
| WITH queries (Common Table Expressions) | โ
Supported | Including WITH RECURSIVE; MATERIALIZED hints accepted |
| Writable WITH queries (Common Table Expressions) | โ Not supported | "CTE query is not a SELECT statement" |
| Feature | Status | Notes |
|---|
| ALTER object IF EXISTS | ๐ก Partial | ALTER TABLE IF EXISTS works when the table exists, but a missing table still errors instead of being skipped |
| ALTER TABLE ... ADD UNIQUE/PRIMARY KEY USING INDEX | โ Not supported | ADD CONSTRAINT is rejected |
| ALTER TABLE ... SET ACCESS METHOD | โ Not supported | |
| ALTER TABLE ... SET LOGGED / UNLOGGED | โ Not supported | |
| Changing column types (ALTER TABLE .. ALTER COLUMN TYPE) | โ Not supported | Translates but breaks at execution ("no such column" on subsequent use) |
| CREATE ACCESS METHOD | โ Not supported | |
| CREATE TABLE ... (LIKE) with foreign tables, views and composite types | โ Not supported | LIKE is silently ignored |
| DROP object IF EXISTS | โ
Supported | TABLE, INDEX, VIEW, MATERIALIZED VIEW, TYPE, DOMAIN, SEQUENCE, SCHEMA |
| ON COMMIT clause for CREATE TEMPORARY TABLE | โ Not supported | TEMP itself is silently ignored |
| REINDEX CONCURRENTLY | โ Not supported | REINDEX not supported at all |
| Stored generated columns | โ Not supported | GENERATED ... AS silently ignored |
| Temporal constraints | โ Not supported | |
| Temporary tables (CREATE TEMP TABLE) | โ Not supported | TEMP silently ignored โ the table is persistent |
| Typed tables | โ Not supported | |
| Virtual generated columns | โ Not supported | GENERATED ... AS silently ignored |
| Feature | Status | Notes |
|---|
| Abbreviated keys | โ Not supported | |
| Asynchronous commit | โ Not supported | |
| Asynchronous I/O (AIO) | โ Not supported | |
| Automatic plan invalidation | โ Not supported | |
| Background checkpointer | โ Not supported | |
| Background writer | โ Not supported | |
| Base backup throttling | โ Not supported | |
| CREATE STATISTICS - most-common values (MCV) statistics | โ Not supported | |
| CREATE STATISTICS - multicolumn | โ Not supported | |
| CREATE STATISTICS - "OR" and "IN/ANY" statistics | โ Not supported | |
| Cross datatype hashing support | โ Not supported | |
| Distributed checkpointing | โ Not supported | |
| Foreign keys marked as NOT VALID | โ Not supported | |
| Frozen page map | โ Not supported | |
| Full text search | โ Not supported | tsvector/tsquery degrade to TEXT |
| Hash aggregation can use disk | โ Not supported | |
| Hashing support for DISTINCT/UNION/INTERSECT/EXCEPT | โ Not supported | |
| Hashing support for FULL OUTER JOIN, LEFT OUTER JOIN and RIGHT OUTER JOIN | โ Not supported | |
| Heap Only Tuples (HOT) | โ Not supported | |
| Improved performance for sorts exceeding working memory | โ Not supported | |
| Improved window function performance | โ Not supported | |
| Incremental sort | โ Not supported | |
| Incremental sort for SELECT DISTINCT | โ Not supported | |
| Incremental sort for window functions | โ Not supported | |
| Inlined WITH queries (Common Table Expressions) | โ Not supported | |
| Inlining of SQL functions | โ Not supported | |
| Just-in-Time (JIT) compilation for expression evaluation and tuple deforming | โ Not supported | |
| Load balancing for libpq / psql | โ Not supported | |
| LZ4 compression for TOAST tables | โ Not supported | |
| Multi-core scalability for read-only workloads | โ Not supported | |
| Multiple temporary tablespaces | โ Not supported | |
| Outer join reordering | โ Not supported | |
| Parallel bitmap heap scans | โ Not supported | |
| Parallel FULL and RIGHT joins | โ Not supported | |
| Parallel full table scans (sequential scans) | โ Not supported | |
| Parallel hash joins | โ Not supported | |
| Parallel JOIN, aggregate | โ Not supported | |
| Parallel merge joins | โ Not supported | |
| Parallel query | โ Not supported | |
| Parallel "SELECT DISTINCT" | โ Not supported | |
| Partial sort capability (top-n sorting) | โ Not supported | |
| Query pipelining | โ Not supported | |
| Reduced lock levels for ALTER TABLE commands | โ Not supported | |
| SELECT ... FOR UPDATE/SHARE NOWAIT | โ Not supported | Silently ignored |
| Set costs specific to TABLESPACEs | โ Not supported | |
| Shared row level locking | โ Not supported | |
| SIMD support for ARM | โ Not supported | |
| SIMD support for x86 | โ Not supported | |
| SKIP LOCKED clause | โ Not supported | Silently ignored |
| Synchronized sequential scanning | โ Not supported | |
| TABLESAMPLE clause | โ Not supported | Translation error |
| Tablespaces | โ Not supported | |
| Unlogged tables | โ Not supported | |
| WAL buffer auto-tuning | โ Not supported | |
| Feature | Status | Notes |
|---|
| Improved set of JSON functions and operators | โ Not supported | |
| JSONB data type | ๐ก Partial | jsonb columns supported (Turso custom type); -> and ->> operators work; #>, #>>, ?, ?&, ?|, @@ fail to translate |
| JSONB-modifying operators and functions | โ Not supported | |
| JSONB subscripting | โ Not supported | |
| JSON data type | ๐ก Partial | Same as jsonb (see above) |
| SQL/JSON constructors | โ Not supported | |
| SQL/JSON: datetime() | โ Not supported | |
| SQL/JSON IS JSON | โ Not supported | |
| SQL/JSON JSON_TABLE | โ Not supported | |
| SQL/JSON path expressions | โ Not supported | |
| SQL/JSON query functions | โ Not supported | |
| Feature | Status | Notes |
|---|
| Accelerated partition pruning | โ Not supported | |
| Declarative table partitioning | โ Not supported | PARTITION BY / PARTITION OF silently dropped โ the table is created unpartitioned |
| Default partition | โ Not supported | |
| Foreign key references for partitioned tables | โ Not supported | |
| Foreign table inheritance | โ Not supported | |
| Partitioning by a hash key | โ Not supported | |
| Partition pruning during query execution | โ Not supported | |
| Support for PRIMARY KEY, FOREIGN KEY, indexes, and triggers on partitioned tables | โ Not supported | |
| Table inheritance (INHERITS) | โ Not supported | INHERITS silently dropped |
| Table partitioning | โ Not supported | PARTITION BY / PARTITION OF silently dropped |
| UPDATE on a partition key | โ Not supported | |
| Feature | Status | Notes |
|---|
| Materialized views | โ
Supported | Incrementally maintained (live, DBSP-based) โ always fresh, unlike PostgreSQL snapshots; REFRESH MATERIALIZED VIEW is accepted as a no-op |
| Materialized views with concurrent refresh | ๐ก Partial | Moot: views are always fresh; REFRESH (CONCURRENTLY) is a no-op |
| SECURITY INVOKER views | โ Not supported | |
| Temporary VIEWs | โ Not supported | TEMP silently ignored; the view is persistent |
| Updatable views | โ Not supported | |
| WITH CHECK clause | โ Not supported | |
Replication is not supported.
Backup and restore is not supported.
Upgrade is not supported.
| Feature | Status | Notes |
|---|
| COPY table FROM 'file' (text format) | โ
Supported | DELIMITER, NULL string, HEADER, column lists, backslash escapes, \. end-of-data marker; atomic (rolls back on malformed rows) |
| COPY from/to STDIN/STDOUT | โ Not supported | Rejected with an error; no wire-level COPY sub-protocol |
| COPY FROM ... WHERE | โ Not supported | |
| COPY ... ON_ERROR | โ Not supported | |
| COPY with arbitrary SELECT | โ Not supported | COPY TO is not supported at all |
| CSV support for COPY | โ Not supported | FORMAT csv and FORMAT binary rejected with an error |
| Feature | Status | Notes |
|---|
| SET / SHOW configuration parameters | ๐ก Partial | Passed through as PRAGMAs; PostgreSQL GUCs (search_path, work_mem, ...) are not recognized |
| ALTER SYSTEM | โ Not supported | |
| Fractional input for "integer" values | โ Not supported | |
| Include directives for pg_hba.conf and pg_ident.conf | โ Not supported | |
| Per user/database server configuration settings | โ Not supported | |
| pg_config system view | โ Not supported | |
| Regular expression matching in pg_hba.conf and pg_ident.conf | โ Not supported | |
| Feature | Status | Notes |
|---|
| Authentication (any method) | โ Not supported | The wire server trusts every connection; no password, MD5, SCRAM, or certificate checks |
| Channel binding for SCRAM authentication | โ Not supported | |
| Client can require SCRAM channel binding | โ Not supported | |
| Client-specified requirements for authentication | โ Not supported | |
| Column level permissions | โ Not supported | |
| Default permissions | โ Not supported | |
| Direct TLS negotiation ("sslnegotiation") | โ Not supported | |
| FIPS mode validation | โ Not supported | |
| GRANT/REVOKE ON ALL TABLES/SEQUENCES/FUNCTIONS | โ Not supported | GRANT/REVOKE not supported at all |
| GSSAPI client and server-side encryption | โ Not supported | |
| GSSAPI support | โ Not supported | |
| Kerberos credential delegation | โ Not supported | |
| krb5 authentication (without gssapi) | โ Not supported | |
| Large object access controls | โ Not supported | |
| LDAP server discovery | โ Not supported | |
| Multifactor authentication via valid client SSL/TLS certificate | โ Not supported | |
| Native LDAP authentication | โ Not supported | |
| Native RADIUS authentication | โ Not supported | |
| OAuth authentication / authorization | โ Not supported | |
| Per user/database connection limits | โ Not supported | |
| Predefined roles | โ Not supported | |
| Privileges for setting configuration parameters | โ Not supported | |
| ROLES | โ Not supported | pg_roles exposes a single hardcoded turso role |
| Row-level security | โ Not supported | |
| SCRAM-SHA-256 authentication | โ Not supported | |
| Search+bind mode operation for LDAP authentication | โ Not supported | |
| security_barrier option on views | โ Not supported | |
| Security Service Provider Interface (SSPI) | โ Not supported | |
| SHA-2 encryption for password hashing | โ Not supported | |
| SSL certificate validation in libpq | โ Not supported | |
| SSL client certificate authentication | โ Not supported | |
| SSPI authentication via GSSAPI | โ Not supported | |
| Support using the client's OS trusted CA | โ Not supported | |
| TLS v1.3 cipher suite allowlisting | โ Not supported | |
| Feature | Status | Notes |
|---|
| Cursors | โ Not supported | DECLARE/FETCH/MOVE not translated |
| Savepoints | โ
Supported | SAVEPOINT, RELEASE, ROLLBACK TO |
| Serializable Snapshot Isolation | โ Not supported | BEGIN ISOLATION LEVEL ... accepted but the level is ignored |
| Two-phase commit | โ Not supported | PREPARE TRANSACTION rejected |
| Updatable cursors | โ Not supported | |
| Feature | Status | Notes |
|---|
| VACUUM / ANALYZE statements | โ Not supported | Rejected with an error |
| Inserted data can trigger autovacuum | โ Not supported | |
| Integrated autovacuum daemon | โ Not supported | |
| Page freezing optimizations | โ Not supported | |
| Parallelized VACUUM for indexes | โ Not supported | |
| Parallel vacuumdb jobs | โ Not supported | |
| Radix tree memory structure for vacuum | โ Not supported | |
| Vacuum "emergency mode" | โ Not supported | |
| Visibility map for vacuuming | โ Not supported | |
| Feature | Status | Notes |
|---|
| Certificate authentication with postgres_fdw | โ Not supported | |
| CREATE FOREIGN TABLE ... LIKE | โ Not supported | |
| Foreign data wrapper query parallelism | โ Not supported | |
| Foreign data wrappers | โ Not supported | |
| Foreign tables | โ Not supported | |
| IMPORT FOREIGN SCHEMA | โ Not supported | |
| Import foreign table partitions | โ Not supported | |
| Parallel query execution on remote databases | โ Not supported | |
| postgres_fdw parallel commit | โ Not supported | |
| postgres_fdw pushdown | โ Not supported | |
| postgres_fdw SCRAM authentication passthrough | โ Not supported | |
| PostgreSQL Foreign Data Wrapper | โ Not supported | |
| Writable Foreign Data Wrappers | โ Not supported | |
| Feature | Status | Notes |
|---|
| ALTER TABLE ENABLE/DISABLE TRIGGER | โ Not supported | |
| ALTER TABLE / ENABLE REPLICA TRIGGER/RULE | โ Not supported | |
| BEGIN ATOMIC function bodies | โ Not supported | |
| CALL syntax for executing procedures | โ Not supported | |
| CREATE FUNCTION | โ Not supported | Rejected with an error |
| Column level triggers | โ Not supported | |
| CREATE PROCEDURE syntax for SQL stored procedures | โ Not supported | |
| Event triggers | โ Not supported | |
| FILTER clause for aggregate functions | โ
Supported | |
| ORDER BY support within aggregates | โ Not supported | Silently dropped |
| Per function GUC settings | โ Not supported | |
| Per function statistics | โ Not supported | |
| RETURN QUERY EXECUTE | โ Not supported | |
| RETURNS TABLE | โ Not supported | |
| Statement level triggers | โ Not supported | CREATE TRIGGER not translated |
| Statement level TRUNCATE triggers | โ Not supported | |
| Triggers on views | โ Not supported | |
| Variadic functions | โ Not supported | |
| WHEN clause for CREATE TRIGGER | โ Not supported | |
| Feature | Status | Notes |
|---|
| Procedural languages (PL/pgSQL, PL/Python, ...) | โ Not supported | CREATE FUNCTION and DO are rejected with an error |
| CASE in pl/pgsql | โ Not supported | |
| CONTINUE statement for PL/pgSQL | โ Not supported | |
| CREATE TRANSFORM | โ Not supported | |
| DO statement for pl/perl | โ Not supported | |
| DO statement for pl/pgsql | โ Not supported | |
| EXCEPTION support in PL/pgSQL | โ Not supported | |
| EXECUTE USING in PL/pgSQL | โ Not supported | |
| FOREACH IN ARRAY in pl/pgsql | โ Not supported | |
| IN/OUT/INOUT parameters for pl/pgsql and PL/SQL | โ Not supported | |
| Named parameters | โ Not supported | |
| Non-superuser language creation | โ Not supported | |
| pl/pgsql installed by default | โ Not supported | |
| Polymorphic functions | โ Not supported | |
| Python 3 support for pl/python | โ Not supported | |
| Qualified function parameters | โ Not supported | |
| Query parallelism for RETURN QUERY | โ Not supported | |
| RETURN QUERY in pl/pgsql | โ Not supported | |
| ROWS and COST specification for functions | โ Not supported | |
| Scrollable and updatable cursor support for pl/pgsql | โ Not supported | |
| SQLERRM/SQLSTATE for pl/pgsql | โ Not supported | |
| Unicode object support in PL/python | โ Not supported | |
| User defined exceptions | โ Not supported | |
| Validator function for pl/perl | โ Not supported | |
| Feature | Status | Notes |
|---|
| CREATE EXTENSION .. CASCADE | โ Not supported | |
| Extension installation | โ Not supported | CREATE EXTENSION not translated |
| Trusted extensions | โ Not supported | |
| Feature | Status | Notes |
|---|
| Built-in, platform independent immutable collation | โ Not supported | |
| casefold | โ Not supported | |
| Column-level collation support | โ Not supported | COLLATE clauses silently stripped |
| Database level collation | โ Not supported | |
| Default ICU collations for clusters/databases | โ Not supported | |
| EUC_JIS_2004 / SHIFT_JIS_2004 support | โ Not supported | |
| ICU collations | โ Not supported | |
| LIKE comparisons for nondeterministic collations | โ Not supported | |
| Multibyte encoding support, incl. UTF8 | ๐ก Partial | UTF-8 only (Turso native encoding); no other server encodings |
| Multiple language support | โ Not supported | |
| Nondeterministic collations | โ Not supported | |
| pg_unicode_fast collation | โ Not supported | |
| Unicode string literals and identifiers | โ Not supported | |
| UTF8 support on Windows | โ Not supported | |
| Feature | Status | Notes |
|---|
| psql-style REPL | ๐ก Partial | tursopg (not psql itself); supports \d[+], \dt[+], \di, \dv, \dn, \dT, \du/\dg, \df, \l, \x, \timing, \echo, \conninfo, \?, \q; no \copy, \i, \e, \set, \pset, \g, \watch |
| pgbench | โ Not supported | |
| pg_combinebackup | โ Not supported | |
| pg_createsubscriber | โ Not supported | |
| pg_prewarm | โ Not supported | |
| pg_rewind | โ Not supported | |
| pg_standby | โ Not supported | |
| pg_upgrade | โ Not supported | |
| pg_waldump | โ Not supported | |
| pg_walsummary | โ Not supported | |
| pg_xlogdump | โ Not supported | |
| psql \bind | โ Not supported | |
| psql \dconfig | โ Not supported | |
| psql pipeline queries | โ Not supported | |
| psql named prepared statements | โ Not supported | SQL-level PREPARE/EXECUTE/DEALLOCATE are not translated |
| Version aware psql | โ Not supported | |
| Feature | Status | Notes |
|---|
| adminpack | โ Not supported | |
| auth_delay | โ Not supported | |
| auto_explain | โ Not supported | |
| btree_gin | โ Not supported | |
| btree_gist | โ Not supported | |
| citext | โ Not supported | |
| dblink | โ Not supported | |
| dblink asynchronous notification support | โ Not supported | |
| file_fdw | โ Not supported | |
| fuzzystrmatch | โ Not supported | |
| hstore | โ Not supported | |
| intarray | โ Not supported | |
| isn (ISBN) | โ Not supported | |
| KNN support for CUBE | โ Not supported | |
| ltree | โ Not supported | |
| pageinspect | โ Not supported | |
| passwordcheck | โ Not supported | |
| pg_buffercache | โ Not supported | |
| pg_freespacemap | โ Not supported | |
| pg_logicalinspect | โ Not supported | |
| pg_overexplain | โ Not supported | |
| pg_stat_statements | โ Not supported | |
| pgstattuple | โ Not supported | |
| pg_trgm | โ Not supported | |
| pg_trgm regular expressions indexing | โ Not supported | |
| pg_walinspect | โ Not supported | |
| seg | โ Not supported | |
| sepgsql | โ Not supported | |
| sslinfo | โ Not supported | |
| tablefunc | โ Not supported | |
| tcn | โ Not supported | |
| tsearch2 compatibility wrapper | โ Not supported | |
| unaccent | โ Not supported | |
| uuid-ossp | โ Not supported | gen_random_uuid() (core) is available |
| xml2 | โ Not supported | |
| Feature | Status | Notes |
|---|
| Full SSL support | โ Not supported | SSLRequest answered with "SSL not available"; plaintext only |
| IPv6 support | ๐ก Partial | Server binds whatever address it is given, including IPv6 literals; no dual-stack handling |
| V2 client protocol | โ Not supported | |
| V3 client protocol | ๐ก Partial | Via pgwire: simple query and extended query (Parse/Bind/Execute/Describe/Sync) protocols; trust auth only; parameter values must be text-format; Execute row limits ignored (no portal suspension); no COPY sub-protocol, CancelRequest, or NotificationResponse |
Not applicable: the Turso Postgres frontend is Rust and builds on every
platform Turso supports; PostgreSQL's platform/compiler feature entries do
not carry over.