The catalog pg_pltemplate
stores
“template” information for procedural languages.
A template for a language allows the language to be created in a
particular database by a simple CREATE LANGUAGE
command,
with no need to specify implementation details.
Unlike most system catalogs, pg_pltemplate
is shared across all databases of a cluster: there is only one
copy of pg_pltemplate
per cluster, not
one per database. This allows the information to be accessible in
each database as it is needed.
Table 43.26. pg_pltemplate
Columns
Name | Type | Description | |
---|---|---|---|
tmplname |
name |
Name of the language this template is for | |
tmpltrusted |
boolean |
True if language is considered trusted | |
tmplhandler |
text |
Name of call handler function | |
tmplvalidator |
text |
Name of validator function, or NULL if none | |
tmpllibrary |
text |
Path of shared library that implements language | |
tmplacl |
aclitem[] |
Access privileges for template (not yet used) |
There are not currently any commands that manipulate procedural language
templates; to change the built-in information, a superuser must modify
the table using ordinary INSERT
, DELETE
,
or UPDATE
commands. It is likely that a future
release of PostgreSQL will offer
commands to change the entries in a cleaner fashion.
When implemented, the tmplacl
field will provide
access control for the template itself (i.e., the right to create a
language using it), not for the languages created from the template.