PostgreSQL 9.0.9 Documentation
Prev | Up | Chapter 45. System Catalogs | Next

# 45.31. `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 45-31. `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 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.

Prev | Home | Next
`pg_opfamily` | Up | `pg_proc`