pg_pltemplate
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 51.37. pg_pltemplate
Columns
Name | Type | Description |
---|---|---|
tmplname |
name |
Name of the language this template is for |
tmpltrusted |
boolean |
True if language is considered trusted |
tmpldbacreate |
boolean |
True if language may be created by a database owner |
tmplhandler |
text |
Name of call handler function |
tmplinline |
text |
Name of anonymous-block handler function, or null if none |
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 actually 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 pg_pltemplate
will be removed in some future release of PostgreSQL, in favor of keeping this knowledge about procedural languages in their respective extension installation scripts.