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 48-35. 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.

Note: 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.