Previous: Standard Introspection, Up: Introspection
The column definitions of an existing table can be discovered to some extent
by the defs-from-psql
, infer-defs
and describe-table!
procedures, the last one also displaying details on field/column innards.
[NOTE: docs missing for defs-from-psql]
[NOTE: docs missing for infer-defs]
[NOTE: docs missing for describe-table!]
Once you have a set of defs, you can verify that their types are supported by Guile-PG with the following procedures.
[NOTE: docs missing for check-type/elaborate]
[NOTE: docs missing for strictly-check-types/elaborate!]
(define DEFS (defs-from-psql #t "glug" "updok")) (car DEFS) ⇒ (time timestamp "without time zone not null") (map type-name DEFS) ⇒ (timestamp integer integer real integer real) (strictly-check-types/elaborate! "updok" (map type-name DEFS)) -| ERROR: bad "updok" types: (real real) ABORT: (misc-error)
In this example, we use the external program psql to find out the defs
for the table updok
in database glug
; use type-name
to
get the types (see Column Definitions); and finally check to see which
ones, if any, are unknown to Guile-PG. The error output lists real
twice because two of the DEFS
have that type.