Skip to content
← Catalog atlas / pg_language

SYSTEM CATALOG · System catalog

pg_language

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

First seen PG 9.0Last seen PG 19Columns 9

Checked column by column against a PostgreSQL 18.6 instance · Raw measurement record ↗

Columns PostgreSQL 18

pg_language
COLUMNTYPEDESCRIPTION
oid oidNOT NULL Row identifier
lanname nameNOT NULL Name of the language
lanowner oidNOT NULL Owner of the languageReferences:pg_authid.oid
lanispl booleanNOT NULLDocumented as: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 booleanNOT NULLDocumented as: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 oidNOT NULL 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. Zero for internal languages.References:pg_proc.oid
laninline oidNOT NULL This references a function that is responsible for executing “inline” anonymous code blocks (DO blocks). Zero if inline blocks are not supported.References:pg_proc.oid
lanvalidator oidNOT NULL 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.References:pg_proc.oid
lanacl aclitem[] Access privileges; see Section 5.8 for details

Columns marked "implicit" are not included in SELECT *; some early statistics views are completed from same-version source, and the extra provenance is shown in the column description.

Common system columns 6

System attributes PostgreSQL provides, normally not expanded by SELECT *. Kept separately so they are not mixed in with ordinary columns.

ColumnsTypeattnum
tableoidoid-6
cmaxcid-5
xmaxxid-4
cmincid-3
xminxid-2
ctidtid-1

Column evolution matrix

Hover a cell for the column type
PresentAdded / type or attribute changeRemoved
COLUMN9.09.19.29.39.49.59.610111213141516171819
oid
lanname
lanowner
lanispl
lanpltrusted
lanplcallfoid
laninline
lanvalidator
lanacl

9.0 is the coverage baseline; a column already present in the baseline is not marked as added. The matrix aligns columns by name, so a rename appears as the old column removed and a new column added.

Evolution timeline

Changes between adjacent majors

PostgreSQL 19 ← 18

1 column description updates

PostgreSQL 17 ← 16

1 column description updatesCatalog description updated

PostgreSQL 14 ← 13

1 column description updatesCatalog description updated

PostgreSQL 12 ← 11

~ oid: implicit → ordinary2 column description updatesCatalog description updated

PostgreSQL 11 ← 10

Catalog description updated

PostgreSQL 10 ← 9.6

1 column description updatesCatalog description updated

PostgreSQL 9.6 ← 9.5

Catalog description updated

PostgreSQL 9.3 ← 9.2

1 column description updatesCatalog description updated

Compare any two versions

Pick two versions to see added, removed, and retyped columns. The interactive comparison needs JavaScript; the evolution timeline reads fine without it.