Skip to content

pg_grammar_guard

Catalog-derived grammars and approved grammar drift checks

pg_grammar_guard : Catalog-derived grammars and approved grammar drift checks

Overview

ID Extension Package Version Category License Language
1890 pg_grammar_guard pg_grammar_guard 0.4.1 RAG PostgreSQL SQL
Attribute Has Binary Has Library Need Load Has DDL Relocatable Trusted
----d-- No No No Yes no no
Relationships
Schemas grammar_guard
Requires pg_living_assertions
Requires pg_living_assertions, despite older README text claiming no dependencies.

Packages

Type Repo Version PG Major Compatibility Package Pattern Dependencies
EXT PIGSTY 0.4.1 18 17 16 15 14 pg_grammar_guard pg_living_assertions
RPM PIGSTY 0.4.1 18 17 16 15 14 pg_grammar_guard_$v pg_living_assertions_$v
DEB PIGSTY 0.4.1 18 17 16 15 14 postgresql-$v-pg-grammar-guard postgresql-$v-pg-living-assertions
Linux / PG PG18 PG17 PG16 PG15 PG14
el8.x86_64 PIGSTY 0.4.1 PIGSTY 0.4.1 PIGSTY 0.4.1 PIGSTY 0.4.1 PIGSTY 0.4.1
el8.aarch64 PIGSTY 0.4.1 PIGSTY 0.4.1 PIGSTY 0.4.1 PIGSTY 0.4.1 PIGSTY 0.4.1
el9.x86_64 PIGSTY 0.4.1 PIGSTY 0.4.1 PIGSTY 0.4.1 PIGSTY 0.4.1 PIGSTY 0.4.1
el9.aarch64 PIGSTY 0.4.1 PIGSTY 0.4.1 PIGSTY 0.4.1 PIGSTY 0.4.1 PIGSTY 0.4.1
el10.x86_64 PIGSTY 0.4.1 PIGSTY 0.4.1 PIGSTY 0.4.1 PIGSTY 0.4.1 PIGSTY 0.4.1
el10.aarch64 PIGSTY 0.4.1 PIGSTY 0.4.1 PIGSTY 0.4.1 PIGSTY 0.4.1 PIGSTY 0.4.1
d12.x86_64 PIGSTY 0.4.1 PIGSTY 0.4.1 PIGSTY 0.4.1 PIGSTY 0.4.1 PIGSTY 0.4.1
d12.aarch64 PIGSTY 0.4.1 PIGSTY 0.4.1 PIGSTY 0.4.1 PIGSTY 0.4.1 PIGSTY 0.4.1
d13.x86_64 PIGSTY 0.4.1 PIGSTY 0.4.1 PIGSTY 0.4.1 PIGSTY 0.4.1 PIGSTY 0.4.1
d13.aarch64 PIGSTY 0.4.1 PIGSTY 0.4.1 PIGSTY 0.4.1 PIGSTY 0.4.1 PIGSTY 0.4.1
u22.x86_64 PIGSTY 0.4.1 PIGSTY 0.4.1 PIGSTY 0.4.1 PIGSTY 0.4.1 PIGSTY 0.4.1
u22.aarch64 PIGSTY 0.4.1 PIGSTY 0.4.1 PIGSTY 0.4.1 PIGSTY 0.4.1 PIGSTY 0.4.1
u24.x86_64 PIGSTY 0.4.1 PIGSTY 0.4.1 PIGSTY 0.4.1 PIGSTY 0.4.1 PIGSTY 0.4.1
u24.aarch64 PIGSTY 0.4.1 PIGSTY 0.4.1 PIGSTY 0.4.1 PIGSTY 0.4.1 PIGSTY 0.4.1
u26.x86_64 PIGSTY 0.4.1 PIGSTY 0.4.1 PIGSTY 0.4.1 PIGSTY 0.4.1 PIGSTY 0.4.1
u26.aarch64 PIGSTY 0.4.1 PIGSTY 0.4.1 PIGSTY 0.4.1 PIGSTY 0.4.1 PIGSTY 0.4.1
Package Version OS ORG SIZE File URL
pg_grammar_guard_18 0.4.1 el8.x86_64 pigsty 27.6 KiB pg_grammar_guard_18-0.4.1-1PGSTY.el8.noarch.rpm
pg_grammar_guard_18 0.4.1 el8.aarch64 pigsty 27.6 KiB pg_grammar_guard_18-0.4.1-1PGSTY.el8.noarch.rpm
pg_grammar_guard_18 0.4.1 el9.x86_64 pigsty 27.3 KiB pg_grammar_guard_18-0.4.1-1PGSTY.el9.noarch.rpm
pg_grammar_guard_18 0.4.1 el9.aarch64 pigsty 27.2 KiB pg_grammar_guard_18-0.4.1-1PGSTY.el9.noarch.rpm
pg_grammar_guard_18 0.4.1 el10.x86_64 pigsty 27.4 KiB pg_grammar_guard_18-0.4.1-1PGSTY.el10.noarch.rpm
pg_grammar_guard_18 0.4.1 el10.aarch64 pigsty 27.3 KiB pg_grammar_guard_18-0.4.1-1PGSTY.el10.noarch.rpm
postgresql-18-pg-grammar-guard 0.4.1 d12.x86_64 pigsty 21.4 KiB postgresql-18-pg-grammar-guard_0.4.1-1PGSTY~bookworm_all.deb
postgresql-18-pg-grammar-guard 0.4.1 d12.aarch64 pigsty 21.4 KiB postgresql-18-pg-grammar-guard_0.4.1-1PGSTY~bookworm_all.deb
postgresql-18-pg-grammar-guard 0.4.1 d13.x86_64 pigsty 21.4 KiB postgresql-18-pg-grammar-guard_0.4.1-1PGSTY~trixie_all.deb
postgresql-18-pg-grammar-guard 0.4.1 d13.aarch64 pigsty 21.4 KiB postgresql-18-pg-grammar-guard_0.4.1-1PGSTY~trixie_all.deb
postgresql-18-pg-grammar-guard 0.4.1 u22.x86_64 pigsty 22.1 KiB postgresql-18-pg-grammar-guard_0.4.1-1PGSTY~jammy_all.deb
postgresql-18-pg-grammar-guard 0.4.1 u22.aarch64 pigsty 22.1 KiB postgresql-18-pg-grammar-guard_0.4.1-1PGSTY~jammy_all.deb
postgresql-18-pg-grammar-guard 0.4.1 u24.x86_64 pigsty 22.0 KiB postgresql-18-pg-grammar-guard_0.4.1-1PGSTY~noble_all.deb
postgresql-18-pg-grammar-guard 0.4.1 u24.aarch64 pigsty 22.0 KiB postgresql-18-pg-grammar-guard_0.4.1-1PGSTY~noble_all.deb
postgresql-18-pg-grammar-guard 0.4.1 u26.x86_64 pigsty 22.0 KiB postgresql-18-pg-grammar-guard_0.4.1-1PGSTY~resolute_all.deb
postgresql-18-pg-grammar-guard 0.4.1 u26.aarch64 pigsty 22.0 KiB postgresql-18-pg-grammar-guard_0.4.1-1PGSTY~resolute_all.deb
Package Version OS ORG SIZE File URL
pg_grammar_guard_17 0.4.1 el8.x86_64 pigsty 27.6 KiB pg_grammar_guard_17-0.4.1-1PGSTY.el8.noarch.rpm
pg_grammar_guard_17 0.4.1 el8.aarch64 pigsty 27.6 KiB pg_grammar_guard_17-0.4.1-1PGSTY.el8.noarch.rpm
pg_grammar_guard_17 0.4.1 el9.x86_64 pigsty 27.3 KiB pg_grammar_guard_17-0.4.1-1PGSTY.el9.noarch.rpm
pg_grammar_guard_17 0.4.1 el9.aarch64 pigsty 27.2 KiB pg_grammar_guard_17-0.4.1-1PGSTY.el9.noarch.rpm
pg_grammar_guard_17 0.4.1 el10.x86_64 pigsty 27.4 KiB pg_grammar_guard_17-0.4.1-1PGSTY.el10.noarch.rpm
pg_grammar_guard_17 0.4.1 el10.aarch64 pigsty 27.3 KiB pg_grammar_guard_17-0.4.1-1PGSTY.el10.noarch.rpm
postgresql-17-pg-grammar-guard 0.4.1 d12.x86_64 pigsty 21.4 KiB postgresql-17-pg-grammar-guard_0.4.1-1PGSTY~bookworm_all.deb
postgresql-17-pg-grammar-guard 0.4.1 d12.aarch64 pigsty 21.4 KiB postgresql-17-pg-grammar-guard_0.4.1-1PGSTY~bookworm_all.deb
postgresql-17-pg-grammar-guard 0.4.1 d13.x86_64 pigsty 21.4 KiB postgresql-17-pg-grammar-guard_0.4.1-1PGSTY~trixie_all.deb
postgresql-17-pg-grammar-guard 0.4.1 d13.aarch64 pigsty 21.4 KiB postgresql-17-pg-grammar-guard_0.4.1-1PGSTY~trixie_all.deb
postgresql-17-pg-grammar-guard 0.4.1 u22.x86_64 pigsty 22.1 KiB postgresql-17-pg-grammar-guard_0.4.1-1PGSTY~jammy_all.deb
postgresql-17-pg-grammar-guard 0.4.1 u22.aarch64 pigsty 22.1 KiB postgresql-17-pg-grammar-guard_0.4.1-1PGSTY~jammy_all.deb
postgresql-17-pg-grammar-guard 0.4.1 u24.x86_64 pigsty 22.0 KiB postgresql-17-pg-grammar-guard_0.4.1-1PGSTY~noble_all.deb
postgresql-17-pg-grammar-guard 0.4.1 u24.aarch64 pigsty 22.0 KiB postgresql-17-pg-grammar-guard_0.4.1-1PGSTY~noble_all.deb
postgresql-17-pg-grammar-guard 0.4.1 u26.x86_64 pigsty 22.0 KiB postgresql-17-pg-grammar-guard_0.4.1-1PGSTY~resolute_all.deb
postgresql-17-pg-grammar-guard 0.4.1 u26.aarch64 pigsty 22.0 KiB postgresql-17-pg-grammar-guard_0.4.1-1PGSTY~resolute_all.deb
Package Version OS ORG SIZE File URL
pg_grammar_guard_16 0.4.1 el8.x86_64 pigsty 27.6 KiB pg_grammar_guard_16-0.4.1-1PGSTY.el8.noarch.rpm
pg_grammar_guard_16 0.4.1 el8.aarch64 pigsty 27.6 KiB pg_grammar_guard_16-0.4.1-1PGSTY.el8.noarch.rpm
pg_grammar_guard_16 0.4.1 el9.x86_64 pigsty 27.3 KiB pg_grammar_guard_16-0.4.1-1PGSTY.el9.noarch.rpm
pg_grammar_guard_16 0.4.1 el9.aarch64 pigsty 27.2 KiB pg_grammar_guard_16-0.4.1-1PGSTY.el9.noarch.rpm
pg_grammar_guard_16 0.4.1 el10.x86_64 pigsty 27.4 KiB pg_grammar_guard_16-0.4.1-1PGSTY.el10.noarch.rpm
pg_grammar_guard_16 0.4.1 el10.aarch64 pigsty 27.3 KiB pg_grammar_guard_16-0.4.1-1PGSTY.el10.noarch.rpm
postgresql-16-pg-grammar-guard 0.4.1 d12.x86_64 pigsty 21.4 KiB postgresql-16-pg-grammar-guard_0.4.1-1PGSTY~bookworm_all.deb
postgresql-16-pg-grammar-guard 0.4.1 d12.aarch64 pigsty 21.4 KiB postgresql-16-pg-grammar-guard_0.4.1-1PGSTY~bookworm_all.deb
postgresql-16-pg-grammar-guard 0.4.1 d13.x86_64 pigsty 21.4 KiB postgresql-16-pg-grammar-guard_0.4.1-1PGSTY~trixie_all.deb
postgresql-16-pg-grammar-guard 0.4.1 d13.aarch64 pigsty 21.4 KiB postgresql-16-pg-grammar-guard_0.4.1-1PGSTY~trixie_all.deb
postgresql-16-pg-grammar-guard 0.4.1 u22.x86_64 pigsty 22.1 KiB postgresql-16-pg-grammar-guard_0.4.1-1PGSTY~jammy_all.deb
postgresql-16-pg-grammar-guard 0.4.1 u22.aarch64 pigsty 22.1 KiB postgresql-16-pg-grammar-guard_0.4.1-1PGSTY~jammy_all.deb
postgresql-16-pg-grammar-guard 0.4.1 u24.x86_64 pigsty 22.0 KiB postgresql-16-pg-grammar-guard_0.4.1-1PGSTY~noble_all.deb
postgresql-16-pg-grammar-guard 0.4.1 u24.aarch64 pigsty 22.0 KiB postgresql-16-pg-grammar-guard_0.4.1-1PGSTY~noble_all.deb
postgresql-16-pg-grammar-guard 0.4.1 u26.x86_64 pigsty 22.0 KiB postgresql-16-pg-grammar-guard_0.4.1-1PGSTY~resolute_all.deb
postgresql-16-pg-grammar-guard 0.4.1 u26.aarch64 pigsty 22.0 KiB postgresql-16-pg-grammar-guard_0.4.1-1PGSTY~resolute_all.deb
Package Version OS ORG SIZE File URL
pg_grammar_guard_15 0.4.1 el8.x86_64 pigsty 27.6 KiB pg_grammar_guard_15-0.4.1-1PGSTY.el8.noarch.rpm
pg_grammar_guard_15 0.4.1 el8.aarch64 pigsty 27.6 KiB pg_grammar_guard_15-0.4.1-1PGSTY.el8.noarch.rpm
pg_grammar_guard_15 0.4.1 el9.x86_64 pigsty 27.2 KiB pg_grammar_guard_15-0.4.1-1PGSTY.el9.noarch.rpm
pg_grammar_guard_15 0.4.1 el9.aarch64 pigsty 27.2 KiB pg_grammar_guard_15-0.4.1-1PGSTY.el9.noarch.rpm
pg_grammar_guard_15 0.4.1 el10.x86_64 pigsty 27.4 KiB pg_grammar_guard_15-0.4.1-1PGSTY.el10.noarch.rpm
pg_grammar_guard_15 0.4.1 el10.aarch64 pigsty 27.3 KiB pg_grammar_guard_15-0.4.1-1PGSTY.el10.noarch.rpm
postgresql-15-pg-grammar-guard 0.4.1 d12.x86_64 pigsty 21.4 KiB postgresql-15-pg-grammar-guard_0.4.1-1PGSTY~bookworm_all.deb
postgresql-15-pg-grammar-guard 0.4.1 d12.aarch64 pigsty 21.4 KiB postgresql-15-pg-grammar-guard_0.4.1-1PGSTY~bookworm_all.deb
postgresql-15-pg-grammar-guard 0.4.1 d13.x86_64 pigsty 21.4 KiB postgresql-15-pg-grammar-guard_0.4.1-1PGSTY~trixie_all.deb
postgresql-15-pg-grammar-guard 0.4.1 d13.aarch64 pigsty 21.4 KiB postgresql-15-pg-grammar-guard_0.4.1-1PGSTY~trixie_all.deb
postgresql-15-pg-grammar-guard 0.4.1 u22.x86_64 pigsty 22.1 KiB postgresql-15-pg-grammar-guard_0.4.1-1PGSTY~jammy_all.deb
postgresql-15-pg-grammar-guard 0.4.1 u22.aarch64 pigsty 22.1 KiB postgresql-15-pg-grammar-guard_0.4.1-1PGSTY~jammy_all.deb
postgresql-15-pg-grammar-guard 0.4.1 u24.x86_64 pigsty 22.0 KiB postgresql-15-pg-grammar-guard_0.4.1-1PGSTY~noble_all.deb
postgresql-15-pg-grammar-guard 0.4.1 u24.aarch64 pigsty 22.0 KiB postgresql-15-pg-grammar-guard_0.4.1-1PGSTY~noble_all.deb
postgresql-15-pg-grammar-guard 0.4.1 u26.x86_64 pigsty 22.0 KiB postgresql-15-pg-grammar-guard_0.4.1-1PGSTY~resolute_all.deb
postgresql-15-pg-grammar-guard 0.4.1 u26.aarch64 pigsty 22.0 KiB postgresql-15-pg-grammar-guard_0.4.1-1PGSTY~resolute_all.deb
Package Version OS ORG SIZE File URL
pg_grammar_guard_14 0.4.1 el8.x86_64 pigsty 27.6 KiB pg_grammar_guard_14-0.4.1-1PGSTY.el8.noarch.rpm
pg_grammar_guard_14 0.4.1 el8.aarch64 pigsty 27.6 KiB pg_grammar_guard_14-0.4.1-1PGSTY.el8.noarch.rpm
pg_grammar_guard_14 0.4.1 el9.x86_64 pigsty 27.2 KiB pg_grammar_guard_14-0.4.1-1PGSTY.el9.noarch.rpm
pg_grammar_guard_14 0.4.1 el9.aarch64 pigsty 27.2 KiB pg_grammar_guard_14-0.4.1-1PGSTY.el9.noarch.rpm
pg_grammar_guard_14 0.4.1 el10.x86_64 pigsty 27.4 KiB pg_grammar_guard_14-0.4.1-1PGSTY.el10.noarch.rpm
pg_grammar_guard_14 0.4.1 el10.aarch64 pigsty 27.3 KiB pg_grammar_guard_14-0.4.1-1PGSTY.el10.noarch.rpm
postgresql-14-pg-grammar-guard 0.4.1 d12.x86_64 pigsty 21.4 KiB postgresql-14-pg-grammar-guard_0.4.1-1PGSTY~bookworm_all.deb
postgresql-14-pg-grammar-guard 0.4.1 d12.aarch64 pigsty 21.4 KiB postgresql-14-pg-grammar-guard_0.4.1-1PGSTY~bookworm_all.deb
postgresql-14-pg-grammar-guard 0.4.1 d13.x86_64 pigsty 21.4 KiB postgresql-14-pg-grammar-guard_0.4.1-1PGSTY~trixie_all.deb
postgresql-14-pg-grammar-guard 0.4.1 d13.aarch64 pigsty 21.4 KiB postgresql-14-pg-grammar-guard_0.4.1-1PGSTY~trixie_all.deb
postgresql-14-pg-grammar-guard 0.4.1 u22.x86_64 pigsty 22.1 KiB postgresql-14-pg-grammar-guard_0.4.1-1PGSTY~jammy_all.deb
postgresql-14-pg-grammar-guard 0.4.1 u22.aarch64 pigsty 22.1 KiB postgresql-14-pg-grammar-guard_0.4.1-1PGSTY~jammy_all.deb
postgresql-14-pg-grammar-guard 0.4.1 u24.x86_64 pigsty 22.0 KiB postgresql-14-pg-grammar-guard_0.4.1-1PGSTY~noble_all.deb
postgresql-14-pg-grammar-guard 0.4.1 u24.aarch64 pigsty 22.0 KiB postgresql-14-pg-grammar-guard_0.4.1-1PGSTY~noble_all.deb
postgresql-14-pg-grammar-guard 0.4.1 u26.x86_64 pigsty 22.0 KiB postgresql-14-pg-grammar-guard_0.4.1-1PGSTY~resolute_all.deb
postgresql-14-pg-grammar-guard 0.4.1 u26.aarch64 pigsty 22.0 KiB postgresql-14-pg-grammar-guard_0.4.1-1PGSTY~resolute_all.deb

Source

github.com/Manuelreyesbravo/pg_grammar_guard

pig build pkg pg_grammar_guard;		# build rpm/deb

Install

Make sure PGDG and PIGSTY repo available:

pig repo add pgsql -u   # add both repo and update cache

Install this extension with pig:

pig install pg_grammar_guard;		# install via package name, for the active PG version

pig install pg_grammar_guard -v 18;   # install for PG 18
pig install pg_grammar_guard -v 17;   # install for PG 17
pig install pg_grammar_guard -v 16;   # install for PG 16
pig install pg_grammar_guard -v 15;   # install for PG 15
pig install pg_grammar_guard -v 14;   # install for PG 14

Create this extension with:

CREATE EXTENSION pg_grammar_guard CASCADE; -- requires pg_living_assertions

Usage

Sources:

pg_grammar_guard generates GBNF or JSON Schema from catalog identifiers and detects drift from approved grammars. It is pure SQL, needs no preload and is packaged for PostgreSQL 14–18. Its control file requires pg_living_assertions.

Generate a grammar

CREATE EXTENSION pg_grammar_guard CASCADE;
CREATE TABLE public.grammar_demo (id integer, label text);
SELECT grammar_guard.grammar_for_json(ARRAY[
  ROW('column', 'enum',
      grammar_guard.catalog_columns('public.grammar_demo'), true)
]::grammar_guard.grammar_field[]);

The catalog helpers enumerate actual tables, columns and enum labels. Generation supports nested objects and bounded arrays; open-ended values such as arbitrary SQL or file paths need separate validation.

Detect changes

grammar_guard.watch() stores the query that rebuilds a grammar, and grammar_guard.check_grammar() evaluates it against the live catalog. Results and their age are available through living_assertions.status.

Register baseline SQL only through trusted administrators. A grammar limits valid identifiers; it cannot prove that a selected table, join or answer is semantically correct. Baselines from the old 0.2 series lack the original generating query and require manual re-approval when upgrading.