On this page
Source of truth: the implementation — parser, AST, and executor. Only behavior verified there is documented below.
Statements#
| Statement | Status | Page |
|---|---|---|
SELECT, bare VALUES |
Supported | SELECT |
INSERT (values / default / select / conflict / returning) |
Supported | INSERT |
UPDATE (+FROM, JSON targets, RETURNING) |
Supported (Partial: UPDATE…FROM not in explicit txn) |
UPDATE |
DELETE (+USING, RETURNING), TRUNCATE |
Supported | DELETE |
| `CREATE TABLE | DATABASE | SCHEMA |
ALTER TABLE (rename/add/drop), DROP …, COMMENT ON |
Supported subset | DDL |
| `BEGIN | START TRANSACTION | COMMIT |
SET, SHOW, DESCRIBE, USE, GRANT role TO member (only form) |
Supported | DDL |
WITH [RECURSIVE], EXPLAIN [ANALYZE] |
Supported | Subqueries + CTEs, EXPLAIN |
| `COPY … FROM STDIN | TO STDOUT` (wire only) | Supported; file COPY rejected |
| `VACUUM | ANALYZE | REINDEX |
CREATE MATERIALIZED VIEW, CREATE INDEX-as-Create::Index legacy stub, CREATE TRIGGER/PROCEDURE/EXTENSION parse to stubs without execution. REFRESH MATERIALIZED VIEW parses to an empty-name stub.
Clauses and features#
Expressions, operators, functions, aggregates, joins, subqueries, ordering/grouping, pagination, aliases, casts, NULL, JSON, temporal: each has a dedicated page linked from SELECT.
Compatibility philosophy#
Similar syntax ≠ compatibility. PLOMID speaks the PG wire protocol and mirrors PG type OIDs, but the executor is its own. Compatibility lists implemented / partial / unsupported / different-behavior explicitly. No PostgreSQL-compatible claim is made beyond the wire + catalog surface that is actually implemented.