Turso Postgres Compatibility Reference

July 30, 2026 ยท View on GitHub

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:

StatusMeaning
โœ… SupportedFeature works and is covered by tests
๐ŸŸก PartialFeature works with limitations (see notes)
โŒ Not supportedFeature is not implemented

Architecture

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.

Core SQL baseline

Basics not enumerated by the official feature matrix.

FeatureStatusNotes
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โœ… SupportedIncluding 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)โœ… SupportedMulti-column SET (a,b) = (...) not supported
DELETE๐ŸŸก PartialUSING clause silently dropped
CREATE TABLEโœ… SupportedPK, NOT NULL, UNIQUE, DEFAULT, CHECK, FK (with ON DELETE/UPDATE actions); IF NOT EXISTS; tables are created STRICT
CREATE TABLE AS / SELECT INTOโœ… SupportedSchema 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๐ŸŸก PartialADD/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โœ… SupportedUNIQUE, multi-column, partial (WHERE), expression indexes, IF NOT EXISTS
CREATE VIEWโœ… SupportedColumn aliases supported; TEMP silently ignored
COMMENT ON๐ŸŸก PartialAccepted but discarded; comments are not persisted in pg_description
CREATE SCHEMA / DROP SCHEMAโœ… SupportedSchemas are ATTACHed databases; DROP ... CASCADE; public is special-cased
CREATE SEQUENCE / nextval / currval / setvalโœ… SupportedSTART, INCREMENT, MIN/MAXVALUE, CYCLE; CACHE accepted (no-op); pg_sequences view
CREATE DOMAINโœ… SupportedBase type + DEFAULT, NOT NULL, CHECK constraints enforced
CREATE TYPE ... AS ENUMโœ… SupportedValues validated on write; other CREATE TYPE forms unsupported
TRUNCATE๐ŸŸก PartialLowered to DELETE of the first table only; CASCADE / RESTART IDENTITY dropped
BEGIN / COMMIT / ROLLBACKโœ… SupportedIsolation-level and READ ONLY/WRITE options accepted but ignored
Casts (expr::type, CAST)โœ… SupportedAlso int4(x)-style cast functions
Parameters ($1, $2, ...)๐ŸŸก PartialWork through the extended wire protocol; text-format values only
Operators: ||, %, bitwise, ILIKE, SIMILAR TO, ~/~*/!~/!~*, IS [NOT] DISTINCT FROM, BETWEENโœ… SupportedRegex operators lower to REGEXP; case-insensitive variants treated as sensitive
Dollar-quoted strings, escape strings (E'...'), bit/hex string literalsโœ… Supported
generate_seriesโœ… SupportedIn FROM and with joins; column aliases on the function (AS g(x)) do not resolve
pg_catalog emulation๐ŸŸก PartialSee Backend section
SET / SHOW๐ŸŸก PartialPassed through as PRAGMAs; no PostgreSQL GUCs (e.g. SHOW search_path returns nothing)

Backend

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.

FeatureStatusNotes
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 supportedEXPLAIN 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 supportedLISTEN/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 supportedOnly 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

Data Types, Functions, & Operators

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.

FeatureStatusNotes
Arrays of compound typesโŒ Not supported
Array supportโœ… Supportedtype[] columns, ARRAY[...] literals, subscripts a[i], slices a[i:j], @>, <@, &&, array_length, array_append, array_agg; backed by native Turso arrays
ENUM data typeโœ… SupportedCREATE TYPE ... AS ENUM; values validated on write; DROP TYPE [IF EXISTS]
GUID/UUID data typeโœ… Supporteduuid columns, gen_random_uuid(), input validation, text casts
macaddr8 data typeโœ… SupportedAlong with inet, cidr, macaddr (round-trip tested)
MultirangesโŒ Not supported
NULLs in Arrayโœ… SupportedARRAY[1, NULL, 3] round-trips
Phrase searchโŒ Not supportedtsvector/tsquery degrade to TEXT; no full-text search
Range typesโŒ Not supported
smallserial typeโœ… Supportedserial2/serial4/serial8 aliases too; serial implies NOT NULL + implicit sequence, not PRIMARY KEY
Type modifier supportโœ… Supportedvarchar(n) length enforced ("value too long for varchar"); numeric(p,s) scale applied
UUIDv7โŒ Not supported
XML data typeโŒ Not supportedxml columns degrade to TEXT; no XML functions

Indexing & Constraints

FeatureStatusNotes
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 supportedINCLUDE 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 supportedUSING <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โœ… SupportedPartial (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 supportedCONCURRENTLY 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 supportedSilently ignored
WAL support for hash indexesโŒ Not supported

SQL

FeatureStatusNotes
ANY_VALUE aggregateโŒ Not supported
DISTINCT ONโŒ Not supportedAccepted but silently degrades to plain DISTINCT (wrong results)
FETCH FIRST .. WITH TIESโŒ Not supportedFETCH FIRST n ROWS ONLY works (lowered to LIMIT); WITH TIES silently ignored
GROUPING SETS, CUBE and ROLLUP supportโŒ Not supportedTranslation error
INSERT/UPDATE/DELETE RETURNINGโœ… SupportedIncluding RETURNING * and UPDATE ... FROM ... RETURNING
LATERAL clauseโŒ Not supportedKeyword accepted but silently ignored
MERGEโŒ Not supported
MERGE ... RETURNINGโŒ Not supported
Multirow VALUESโœ… SupportedIn INSERT and as standalone VALUES lists
ORDER BY / LIMIT on a standalone VALUES listโŒ Not supportedRejected: "ORDER BY clause is not allowed with VALUES clause"
Non-decimal integer literalsโœ… Supported0x, 0o, 0b
ORDER BY NULLS FIRST/LASTโœ… SupportedHonored in SELECT, window, and compound SELECT ORDER BY; rejected (matching SQLite) in CREATE INDEX
range_agg range type aggregation functionโŒ Not supported
Recursive queries๐ŸŸก PartialWITH 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 supportedRegex operators (~, ~*, SIMILAR TO) work
Return OLD and NEW values from modified rowsโŒ Not supported
Row-wise comparisonโŒ Not supportedRow constructors (a,b) < (c,d) fail to translate
SELECT ... FOR UPDATE/SHAREโŒ Not supportedAccepted but silently ignored โ€” no locking happens
SELECT FOR NO KEY UPDATE/SELECT FOR KEY SHARE lock modesโŒ Not supportedAccepted but silently ignored โ€” no locking happens
SQL standard interval handlingโŒ Not supportedinterval degrades to TEXT; no interval arithmetic
SYSTEM_USERโŒ Not supportedcurrent_user/current_role return stub values
TABLE statementโœ… Supported
Underscores (_) for thousands separatorsโœ… Supported
unnest/array_agg๐ŸŸก Partialarray_agg works; unnest is not implemented
Upsert (INSERT ... ON CONFLICT DO ...)โœ… SupportedDO NOTHING and DO UPDATE SET ... (with EXCLUDED and conflict targets)
Window functions๐ŸŸก PartialAggregate 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 supportedSilently dropped; ordered-set aggregates (percentile_cont) missing
WITH ORDINALITY clauseโŒ Not supported
WITH queries (Common Table Expressions)โœ… SupportedIncluding WITH RECURSIVE; MATERIALIZED hints accepted
Writable WITH queries (Common Table Expressions)โŒ Not supported"CTE query is not a SELECT statement"

Data Definition Language (DDL)

FeatureStatusNotes
ALTER object IF EXISTS๐ŸŸก PartialALTER 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 supportedADD 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 supportedTranslates 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 supportedLIKE is silently ignored
DROP object IF EXISTSโœ… SupportedTABLE, INDEX, VIEW, MATERIALIZED VIEW, TYPE, DOMAIN, SEQUENCE, SCHEMA
ON COMMIT clause for CREATE TEMPORARY TABLEโŒ Not supportedTEMP itself is silently ignored
REINDEX CONCURRENTLYโŒ Not supportedREINDEX not supported at all
Stored generated columnsโŒ Not supportedGENERATED ... AS silently ignored
Temporal constraintsโŒ Not supported
Temporary tables (CREATE TEMP TABLE)โŒ Not supportedTEMP silently ignored โ€” the table is persistent
Typed tablesโŒ Not supported
Virtual generated columnsโŒ Not supportedGENERATED ... AS silently ignored

Performance

FeatureStatusNotes
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 supportedtsvector/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 supportedSilently 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 supportedSilently ignored
Synchronized sequential scanningโŒ Not supported
TABLESAMPLE clauseโŒ Not supportedTranslation error
TablespacesโŒ Not supported
Unlogged tablesโŒ Not supported
WAL buffer auto-tuningโŒ Not supported

JSON

FeatureStatusNotes
Improved set of JSON functions and operatorsโŒ Not supported
JSONB data type๐ŸŸก Partialjsonb 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๐ŸŸก PartialSame 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

Partitioning & Inheritance

FeatureStatusNotes
Accelerated partition pruningโŒ Not supported
Declarative table partitioningโŒ Not supportedPARTITION 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 supportedINHERITS silently dropped
Table partitioningโŒ Not supportedPARTITION BY / PARTITION OF silently dropped
UPDATE on a partition keyโŒ Not supported

Views & Materialized Views

FeatureStatusNotes
Materialized viewsโœ… SupportedIncrementally maintained (live, DBSP-based) โ€” always fresh, unlike PostgreSQL snapshots; REFRESH MATERIALIZED VIEW is accepted as a no-op
Materialized views with concurrent refresh๐ŸŸก PartialMoot: views are always fresh; REFRESH (CONCURRENTLY) is a no-op
SECURITY INVOKER viewsโŒ Not supported
Temporary VIEWsโŒ Not supportedTEMP silently ignored; the view is persistent
Updatable viewsโŒ Not supported
WITH CHECK clauseโŒ Not supported

Replication

Replication is not supported.

Backup, Restore, & Data Integrity

Backup and restore is not supported.

Upgrade

Upgrade is not supported.

Data Import & Export

FeatureStatusNotes
COPY table FROM 'file' (text format)โœ… SupportedDELIMITER, NULL string, HEADER, column lists, backslash escapes, \. end-of-data marker; atomic (rolls back on malformed rows)
COPY from/to STDIN/STDOUTโŒ Not supportedRejected with an error; no wire-level COPY sub-protocol
COPY FROM ... WHEREโŒ Not supported
COPY ... ON_ERRORโŒ Not supported
COPY with arbitrary SELECTโŒ Not supportedCOPY TO is not supported at all
CSV support for COPYโŒ Not supportedFORMAT csv and FORMAT binary rejected with an error

Configuration Management

FeatureStatusNotes
SET / SHOW configuration parameters๐ŸŸก PartialPassed 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

Security

FeatureStatusNotes
Authentication (any method)โŒ Not supportedThe 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 supportedGRANT/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 supportedpg_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

Transactions and Visibility

FeatureStatusNotes
CursorsโŒ Not supportedDECLARE/FETCH/MOVE not translated
Savepointsโœ… SupportedSAVEPOINT, RELEASE, ROLLBACK TO
Serializable Snapshot IsolationโŒ Not supportedBEGIN ISOLATION LEVEL ... accepted but the level is ignored
Two-phase commitโŒ Not supportedPREPARE TRANSACTION rejected
Updatable cursorsโŒ Not supported

VACUUM and Maintenance

FeatureStatusNotes
VACUUM / ANALYZE statementsโŒ Not supportedRejected 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

Foreign Data Wrappers

FeatureStatusNotes
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

Custom Functions, Stored Procedures, & Triggers

FeatureStatusNotes
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 supportedRejected 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 supportedSilently 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 supportedCREATE 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

Procedural Languages

FeatureStatusNotes
Procedural languages (PL/pgSQL, PL/Python, ...)โŒ Not supportedCREATE 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

Extensions

FeatureStatusNotes
CREATE EXTENSION .. CASCADEโŒ Not supported
Extension installationโŒ Not supportedCREATE EXTENSION not translated
Trusted extensionsโŒ Not supported

Internationalisation

FeatureStatusNotes
Built-in, platform independent immutable collationโŒ Not supported
casefoldโŒ Not supported
Column-level collation supportโŒ Not supportedCOLLATE 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๐ŸŸก PartialUTF-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

Client Applications

FeatureStatusNotes
psql-style REPL๐ŸŸก Partialtursopg (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 supportedSQL-level PREPARE/EXECUTE/DEALLOCATE are not translated
Version aware psqlโŒ Not supported

Additional Modules (contrib)

FeatureStatusNotes
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 supportedgen_random_uuid() (core) is available
xml2โŒ Not supported

Network

FeatureStatusNotes
Full SSL supportโŒ Not supportedSSLRequest answered with "SSL not available"; plaintext only
IPv6 support๐ŸŸก PartialServer binds whatever address it is given, including IPv6 literals; no dual-stack handling
V2 client protocolโŒ Not supported
V3 client protocol๐ŸŸก PartialVia 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

Platforms

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.