Deterministic rule engine Rule engine

Real parse-tree analysis

available
Engine · every plan

libpg_query, the exact parser Postgres uses. Keywords inside strings or comments can never trigger a false alarm.

Bolvrk parses SQL with libpg_query, the Postgres parser lifted out of the server. Every rule walks the same syntax tree Postgres would execute, not a text buffer. A DROP TABLE inside a string literal, a comment, a dollar-quoted function body or a column named truncate_at is not a statement, and no rule will ever mistake it for one.

The same parser is why file-level context works: when several files are checked together, each one sees the tables, columns, indexes and foreign keys the earlier files declared, because the engine built them from the trees, not from guesses.

Never executed

Customer SQL is parsed and never run. The hosted service holds no execution path for a migration: what arrives is turned into a tree, judged, and reported. The only place a statement of yours touches a database is bolvrk explain on your own machine, in a read-only transaction, and only through EXPLAIN.

Try it on your next migration

The CLI is open source and needs no account: npx bolvrk check migration.sql

Also in Deterministic rule engine