All notable changes to this project are documented here. The format follows Keep a Changelog.
:pg/check and :pg/check-value: every CHECK that no column pattern covers is kept as
expression data and evaluated with PostgreSQL's semantics (NULL passes, AND, OR and
COALESCE stop at the first decisive operand, casts convert, the schema's own enum and
domain literals are values, now() is the validation time). The vocabulary covers
comparison, logic, arithmetic, the common string, numeric, array and jsonb functions and
operators, LIKE, regexes and CASE; a CHECK outside it is listed in :unrendered.
jsonb values with string or keyword keys are read alike.[:multi ...]; ORs of column patterns
[:or ...]; neither is ever enforced in part.:pg.<schema>.<table>/insert schemas, derived when a registry is loaded: identity ALWAYS
and generated columns removed, identity BY DEFAULT, defaulted and nullable columns
optional, closed maps; the table's constraints see omitted columns as their literal
defaults, else NULL.:pg/table ("schema.table"), :pg/primary-key, :pg/unique
({:columns} maps, :nulls-distinct false for NULLS NOT DISTINCT) and :pg/foreign-keys
({:columns :table :to} maps, :match :full for MATCH FULL) on the map; columns carry
:pg/identity (:always, :default, :serial) and :pg/generated.[:pg/check-value expr];
a domain's NOT NULL and DEFAULT reach its columns; :overrides apply to domain CHECKs.LIKE, NOT IN, cardinality, array_length, boolean and uuid value
sets; bounds and value sets from several constraints tighten and intersect.smallint and integer are :pg/smallint and :pg/integer, schema types carrying the
PostgreSQL range; numeric(p, s) carries its magnitude bound; bytea with a length CHECK
is [:pg/bytes {:min :max}], a type that generates byte arrays.date, time, timetz, timestamp, timestamptz and interval map to
malli.experimental.time schemas.pgmalli/columns, pgmalli/transformer (with a :zone option; JSON text in json and
jsonb columns is parsed), pgmalli/dataset-schema (every key set and reference a named
check; NULLS NOT DISTINCT and MATCH FULL respected) and pgmalli/dataset-generator
(:rows, :except; references sharing columns solved together, self-references included;
a reference that finds no fitting row grows its target table; tables that come out short
are listed in the dataset's metadata with the reasons). Registries add generation hints when
loaded, so key columns are small positive integers, strings short and times recent.:unknown-type.(pgmalli/registry "public"). malli is
a dependency of the library.[:and [:string {:min 1}] [:re "\S"]].:database-version is the server version alone ("PostgreSQL 17.6"), the same on every
machine that generates.pgmalli/path and the by-path forms of registry and unrendered.psql.pgmalli.core (generate!, path, registry, stale, unrendered) and the
pgmalli.main command line.Can you improve this documentation?Edit on GitHub
cljdoc builds & hosts documentation for Clojure/Script libraries
| Ctrl+k | Jump to recent docs |
| ← | Move to previous article |
| → | Move to next article |
| Ctrl+/ | Jump to the search field |