Docs
SQL & Compatibility

PostgreSQL compatibility

Silos runs a real PostgreSQL engine, so standard SQL — DDL, DML, transactions, and MVCC — behaves like Postgres.

The Silos engine is genuine PostgreSQL compiled to WebAssembly — not a reimplementation and not a wire-compatible clone. SQL semantics are Postgres-native, which means the language, the type system, and the transactional behavior are the ones you already know.

What you get

DDL & DML

CREATE / ALTER / DROP, INSERT / UPDATE / DELETE, SELECT — the full SQL surface.

Transactions & MVCC

ACID transactions with multi-version concurrency control, just like Postgres.

Procedural SQL

PL/pgSQL functions, stored procedures, and triggers.

Views & queries

Views, CTEs (WITH), window functions, and the rest of the query surface.

Rich types

JSON / JSONB, arrays, and the standard Postgres type system.

Full-text search

tsvector / tsquery full-text search, built in.

Standard SQL works as expected

Because the engine is real Postgres, ordinary SQL behaves the way the PostgreSQL documentation describes:

schema.sql
CREATE TABLE users (
  id         bigint GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
  email      text NOT NULL UNIQUE,
  created_at timestamptz NOT NULL DEFAULT now()
);

INSERT INTO users (email) VALUES ('alice@example.com');

SELECT id, email, created_at FROM users ORDER BY created_at DESC;

Transactions and concurrency

Transactions are ACID, and concurrency uses MVCC — readers don't block writers and writers don't block readers, exactly as in upstream Postgres.

transaction.sql
BEGIN;

UPDATE accounts SET balance = balance - 100 WHERE id = 1;
UPDATE accounts SET balance = balance + 100 WHERE id = 2;

COMMIT;

The wire protocol

Silos implements the PostgreSQL frontend/backend protocol — the startup handshake, SCRAM-SHA-256 authentication, TLS 1.3, and both the simple and extended query flows (Parse / Bind / Execute). That's why standard drivers, ORMs, and tools connect the same way they would to any Postgres. See Connecting.

Silos is in active development. The SQL engine is real PostgreSQL and the wire protocol is implemented; we haven't published end-to-end compatibility benchmarks per client. The honest framing: standard SQL and standard clients work because the engine is Postgres — see Limitations for the genuine caveats.

Dig deeper

On this page