PostgreSQL 19 ← 18
SYSTEM CATALOG · System catalog
pg_init_privs
The catalog pg_init_privs records information about the initial privileges of objects in the system. There is one entry for each object in the database which has a non-default (non-NULL) initial set of privileges. Objects can have initial privileges either by having those privileges set when the system is initialized (by initdb) or when the object is created during a CREATE EXTENSION and the extension script sets initial privileges using the GRANT system. Note that the system will automatically handle recording of the privileges during the extension script and that extension authors need only use the GRANT and REVOKE statements in their script to have the privileges recorded. The privtype column indicates if the initial privilege was set by initdb or during a CREATE EXTENSION command. Objects which have initial privileges set by initdb will have entries where privtype is 'i', while objects which have initial privileges set by CREATE EXTENSION will have entries where privtype is 'e'.
Checked column by column against a PostgreSQL 18.6 instance · Raw measurement record ↗
Columns PostgreSQL 18
pg_init_privs| COLUMN | TYPE | DESCRIPTION |
|---|---|---|
objoid |
oidNOT NULL |
The OID of the specific objectReferences:any OID column |
classoid |
oidNOT NULL |
The OID of the system catalog the object is inReferences:pg_class.oid |
objsubid |
integerNOT NULLDocumented as:int4 |
For a table column, this is the column number (the objoid and classoid refer to the table itself). For all other object types, this column is zero. |
privtype |
"char"NOT NULLDocumented as:char |
A code defining the type of initial privilege of this object; see text |
initprivs |
aclitem[]NOT NULL |
The initial 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.
| Columns | Type | attnum |
|---|---|---|
tableoid | oid | -6 |
cmax | cid | -5 |
xmax | xid | -4 |
cmin | cid | -3 |
xmin | xid | -2 |
ctid | tid | -1 |
Column evolution matrix
Hover a cell for the column type| COLUMN | 9.0 | 9.1 | 9.2 | 9.3 | 9.4 | 9.5 | 9.6 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
objoid |
– | – | – | – | – | – | |||||||||||
classoid |
– | – | – | – | – | – | |||||||||||
objsubid |
– | – | – | – | – | – | |||||||||||
privtype |
– | – | – | – | – | – | |||||||||||
initprivs |
– | – | – | – | – | – |
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 majorsPostgreSQL 17 ← 16
PostgreSQL 12 ← 11
PostgreSQL 9.6 ← 9.5Catalog added
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.