## 49.28. `pg_language`

The catalog `pg_language` registers languages in which you can write functions or stored procedures. See CREATE LANGUAGE and Chapter 39 for more information about language handlers.

Table 49.28. `pg_language` Columns

Name | Type | References | Description
--- | --- | --- | ---
`oid` | `oid` |  | Row identifier (hidden attribute; must be explicitly selected)
`lanname` | `name` |  | Name of the language
`lanowner` | `oid` | ``pg_authid`.oid` | Owner of the language
`lanispl` | `bool` |  | This is false for internal languages (such as SQL) and true for user-defined languages. Currently, pg_dump still uses this to determine which languages need to be dumped, but this might be replaced by a different mechanism in the future.
`lanpltrusted` | `bool` |  | True if this is a trusted language, which means that it is believed not to grant access to anything outside the normal SQL execution environment. Only superusers can create functions in untrusted languages.
`lanplcallfoid` | `oid` | ``pg_proc`.oid` | For noninternal languages this references the language handler, which is a special function that is responsible for executing all functions that are written in the particular language
`laninline` | `oid` | ``pg_proc`.oid` | This references a function that is responsible for executing “inline” anonymous code blocks (DO blocks). Zero if inline blocks are not supported.
`lanvalidator` | `oid` | ``pg_proc`.oid` | This references a language validator function that is responsible for checking the syntax and validity of new functions when they are created. Zero if no validator is provided.
`lanacl` | `aclitem[]` |  | Access privileges; see GRANT and REVOKE for details