↑↓ select ↵ open ⌫ change scope Open full search

PG.CENTER connects PostgreSQL documentation, reference, and ecosystem knowledge. Maintained by Pigsty.

System Catalogs / Version comparison

What changed?

System Catalogs · PostgreSQL 8.4 → 9.0

Browse PG 9.0

Historical documentation for a PostgreSQL version that is no longer supported.

3 added · 1 removed · 13 changed · 23 reworded · 19 with columns not listed. These are changes between the pinned reference snapshots. “Changed” means columns, their types, their order or a measured attribute such as NOT NULL; “reworded” means only the manual's descriptions.

rewordedpg_aggregate
--- 8.4
+++ 9.0
@@ -4,4 +4,4 @@
 aggfinalfn: Final function (zero if none)
 aggsortop: Associated sort operator (zero if none)
 aggtranstype: Data type of the aggregate function's internal transition (state) data
-agginitval: The initial value of the transition state. This is a text field containing the initial value in its external string representation. If this field is NULL, the transition state value starts out NULL
+agginitval: The initial value of the transition state. This is a text field containing the initial value in its external string representation. If this field is null, the transition state value starts out null.
rewordedpg_am
--- 8.4
+++ 9.0
@@ -1,4 +1,4 @@
-(relation) The catalog pg_am stores information about index access methods. There is one row for each index access method supported by the system. The contents of this catalog are discussed in detail in Chapter 50.
+(relation) The catalog pg_am stores information about index access methods. There is one row for each index access method supported by the system. The contents of this catalog are discussed in detail in Chapter 51.
 amname: Name of the access method
 amstrategies: Number of operator strategies for this access method, or zero if access method does not have a fixed set of operator strategies
 amsupport: Number of support routines for this access method
@@ -8,7 +8,7 @@
 amcanmulticol: Does the access method support multicolumn indexes?
 amoptionalkey: Does the access method support a scan without any constraint for the first index column?
 amindexnulls: Does the access method support null index entries?
-amsearchnulls: Does the access method support IS NULL searches?
+amsearchnulls: Does the access method support IS NULL/NOT NULL searches?
 amstorage: Can index storage data type differ from column data type?
 amclusterable: Can an index of this type be clustered on?
 amkeytype: Type of data stored in index, or zero if not a fixed type
changedpg_attribute
8.4 → 9.0
+ attoptions  text[]
changedpg_authid
8.4 → 9.0
- rolconfig  text[]
rewordedpg_cast
--- 8.4
+++ 9.0
@@ -2,5 +2,5 @@
 castsource: OID of the source data type
 casttarget: OID of the target data type
 castfunc: The OID of the function to use to perform this cast. Zero is stored if the cast method doesn't require a function.
-castcontext: Indicates what contexts the cast can be invoked in. e means only as an explicit cast (using CAST or :: syntax). a means implicitly in assignment to a target column, as well as explicitly. i means implicitly in expressions, as well as the other cases
-castmethod: Indicates how the cast is performed. f means that the function specified in the castfunc field is used. i means that the input/output functions are used. b means that the types are binary-coercible, thus no conversion is required
+castcontext: Indicates what contexts the cast can be invoked in. e means only as an explicit cast (using CAST or :: syntax). a means implicitly in assignment to a target column, as well as explicitly. i means implicitly in expressions, as well as the other cases.
+castmethod: Indicates how the cast is performed. f means that the function specified in the castfunc field is used. i means that the input/output functions are used. b means that the types are binary-coercible, thus no conversion is required.
changedpg_class
8.4 → 9.0
+ reloftype  oid
+ relhasexclusion  boolean
changedpg_constraint
8.4 → 9.0
+ conindid  oid
+ conexclop  oid[]
rewordedpg_cursors
--- 8.4
+++ 9.0
@@ -1,4 +1,4 @@
-(relation) The pg_cursors view lists the cursors that are currently available. Cursors can be defined in several ways: via the DECLARE statement in SQL via the Bind message in the frontend/backend protocol, as described in Section 45.2.3 via the Server Programming Interface (SPI), as described in Section 42.1 The pg_cursors view displays cursors created by any of these means. Cursors only exist for the duration of the transaction that defines them, unless they have been declared WITH HOLD. Therefore non-holdable cursors are only present in the view until the end of their creating transaction.
+(relation) The pg_cursors view lists the cursors that are currently available. Cursors can be defined in several ways: via the DECLARE statement in SQL via the Bind message in the frontend/backend protocol, as described in Section 46.2.3 via the Server Programming Interface (SPI), as described in Section 43.1 The pg_cursors view displays cursors created by any of these means. Cursors only exist for the duration of the transaction that defines them, unless they have been declared WITH HOLD. Therefore non-holdable cursors are only present in the view until the end of their creating transaction.
 name: The name of the cursor
 statement: The verbatim query string submitted to declare this cursor
 is_holdable: true if the cursor is holdable (that is, it can be accessed after the transaction that declared the cursor has committed); false otherwise
changedpg_database
8.4 → 9.0
- datconfig  text[]
addedpg_db_role_setting
--- 8.4
+++ 9.0
@@ -0,0 +1,3 @@
+setdatabase  oid
+setrole  oid
+setconfig  text[]
addedpg_default_acl
--- 8.4
+++ 9.0
@@ -0,0 +1,4 @@
+defaclrole  oid
+defaclnamespace  oid
+defaclobjtype  "char"
+defaclacl  aclitem[]
rewordedpg_depend
--- 8.4
+++ 9.0
@@ -1,8 +1,8 @@
 (relation) The catalog pg_depend records the dependency relationships between database objects. This information allows DROP commands to find which other objects must be dropped by DROP CASCADE or prevent dropping in the DROP RESTRICT case. See also pg_shdepend, which performs a similar function for dependencies involving objects that are shared across a database cluster.
 classid: The OID of the system catalog the dependent object is in
 objid: The OID of the specific dependent object
-objsubid: For a table column, this is the column number (the objid and classid refer to the table itself). For all other object types, this column is zero
+objsubid: For a table column, this is the column number (the objid and classid refer to the table itself). For all other object types, this column is zero.
 refclassid: The OID of the system catalog the referenced object is in
 refobjid: The OID of the specific referenced object
-refobjsubid: For a table column, this is the column number (the refobjid and refclassid refer to the table itself). For all other object types, this column is zero
+refobjsubid: For a table column, this is the column number (the refobjid and refclassid refer to the table itself). For all other object types, this column is zero.
 deptype: A code defining the specific semantics of this dependency relationship; see text
rewordedpg_description
--- 8.4
+++ 9.0
@@ -1,5 +1,5 @@
 (relation) The catalog pg_description stores optional descriptions (comments) for each database object. Descriptions can be manipulated with the COMMENT command and viewed with psql's \d commands. Descriptions of many built-in system objects are provided in the initial contents of pg_description. See also pg_shdescription, which performs a similar function for descriptions involving objects that are shared across a database cluster.
 objoid: The OID of the object this description pertains to
 classoid: The OID of the system catalog this object appears in
-objsubid: For a comment on 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
+objsubid: For a comment on 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.
 description: Arbitrary text that serves as the description of this object
rewordedpg_foreign_server
--- 8.4
+++ 9.0
@@ -5,4 +5,4 @@
 srvtype: Type of the server (optional)
 srvversion: Version of the server (optional)
 srvacl: Access privileges; see GRANT and REVOKE for details
-srvoptions: Foreign server specific options, as "keyword=value" strings.
+srvoptions: Foreign server specific options, as "keyword=value" strings
changedpg_index
8.4 → 9.0
+ indimmediate  boolean
rewordedpg_indexes
--- 8.4
+++ 9.0
@@ -2,5 +2,5 @@
 schemaname: Name of schema containing table and index
 tablename: Name of table the index is for
 indexname: Name of index
-tablespace: Name of tablespace containing index (NULL if default for database)
+tablespace: Name of tablespace containing index (null if default for database)
 indexdef: Index definition (a reconstructed CREATE INDEX command)
rewordedpg_inherits
--- 8.4
+++ 9.0
@@ -1,4 +1,4 @@
 (relation) The catalog pg_inherits records information about table inheritance hierarchies. There is one entry for each direct child table in the database. (Indirect inheritance can be determined by following chains of entries.)
 inhrelid: The OID of the child table
 inhparent: The OID of the parent table
-inhseqno: If there is more than one direct parent for a child table (multiple inheritance), this number tells the order in which the inherited columns are to be arranged. The count starts at 1
+inhseqno: If there is more than one direct parent for a child table (multiple inheritance), this number tells the order in which the inherited columns are to be arranged. The count starts at 1.
changedpg_language
8.4 → 9.0
+ laninline  oid
rewordedpg_largeobject
--- 8.4
+++ 9.0
@@ -1,4 +1,4 @@
-(relation) The catalog pg_largeobject holds the data making up "large objects". A large object is identified by an OID assigned when it is created. Each large object is broken into segments or "pages" small enough to be conveniently stored as rows in pg_largeobject. The amount of data per page is defined to be LOBLKSIZE (which is currently BLCKSZ/4, or typically 2 kB).
+(relation) The catalog pg_largeobject holds the data making up "large objects". A large object is identified by an OID assigned when it is created. Each large object is broken into segments or "pages" small enough to be conveniently stored as rows in pg_largeobject. The amount of data per page is defined to be LOBLKSIZE (which is currently BLCKSZ/4, or typically 2 kB). Prior to PostgreSQL 9.0, there was no permission structure associated with large objects. As a result, pg_largeobject was publicly readable and could be used to obtain the OIDs (and contents) of all large objects in the system. This is no longer the case; use pg_largeobject_metadata to obtain a list of large object OIDs.
 loid: Identifier of the large object that includes this page
 pageno: Page number of this page within its large object (counting from zero)
-data: Actual data stored in the large object. This will never be more than LOBLKSIZE bytes and might be less
+data: Actual data stored in the large object. This will never be more than LOBLKSIZE bytes and might be less.
addedpg_largeobject_metadata
--- 8.4
+++ 9.0
@@ -0,0 +1,2 @@
+lomowner  oid
+lomacl  aclitem[]
removedpg_listener
--- 8.4
+++ 9.0
@@ -1,3 +0,0 @@
-relname  name
-listenerpid  integer
-notification  integer
rewordedpg_locks
--- 8.4
+++ 9.0
@@ -1,15 +1,15 @@
 (relation) The view pg_locks provides access to information about the locks held by open transactions within the database server. See Chapter 13 for more discussion of locking. pg_locks contains one row per active lockable object, requested lock mode, and relevant transaction. Thus, the same lockable object might appear many times, if multiple transactions are holding or waiting for locks on it. However, an object that currently has no locks on it will not appear at all. There are several distinct types of lockable objects: whole relations (e.g., tables), individual pages of relations, individual tuples of relations, transaction IDs (both virtual and permanent IDs), and general database objects (identified by class OID and object OID, in the same way as in pg_description or pg_depend). Also, the right to extend a relation is represented as a separate lockable object.
-locktype: type of the lockable object: relation, extend, page, tuple, transactionid, virtualxid, object, userlock, or advisory
-database: OID of the database in which the object exists, or zero if the object is a shared object, or NULL if the object is a transaction ID
-relation: OID of the relation, or NULL if the object is not a relation or part of a relation
-page: Page number within the relation, or NULL if the object is not a tuple or relation page
-tuple: Tuple number within the page, or NULL if the object is not a tuple
-virtualxid: Virtual ID of a transaction, or NULL if the object is not a virtual transaction ID
-transactionid: ID of a transaction, or NULL if the object is not a transaction ID
-classid: OID of the system catalog containing the object, or NULL if the object is not a general database object
-objid: OID of the object within its system catalog, or NULL if the object is not a general database object
-objsubid: For a table column, this is the column number (the classid and objid refer to the table itself). For all other object types, this column is zero. NULL if the object is not a general database object
+locktype: Type of the lockable object: relation, extend, page, tuple, transactionid, virtualxid, object, userlock, or advisory
+database: OID of the database in which the object exists, or zero if the object is a shared object, or null if the object is a transaction ID
+relation: OID of the relation, or null if the object is not a relation or part of a relation
+page: Page number within the relation, or null if the object is not a tuple or relation page
+tuple: Tuple number within the page, or null if the object is not a tuple
+virtualxid: Virtual ID of a transaction, or null if the object is not a virtual transaction ID
+transactionid: ID of a transaction, or null if the object is not a transaction ID
+classid: OID of the system catalog containing the object, or null if the object is not a general database object
+objid: OID of the object within its system catalog, or null if the object is not a general database object
+objsubid: For a table column, this is the column number (the classid and objid refer to the table itself). For all other object types, this column is zero. Null if the object is not a general database object
 virtualtransaction: Virtual ID of the transaction that is holding or awaiting this lock
-pid: Process ID of the server process holding or awaiting this lock. NULL if the lock is held by a prepared transaction
+pid: Process ID of the server process holding or awaiting this lock. Null if the lock is held by a prepared transaction.
 mode: Name of the lock mode held or desired by this process (see Section 13.3.1)
 granted: True if lock is held, false if lock is awaited
rewordedpg_opclass
--- 8.4
+++ 9.0
@@ -1,4 +1,4 @@
-(relation) The catalog pg_opclass defines index access method operator classes. Each operator class defines semantics for index columns of a particular data type and a particular index access method. An operator class essentially specifies that a particular operator family is applicable to a particular indexable column data type. The set of operators from the family that are actually usable with the indexed column are whichever ones accept the column's data type as their lefthand input. Operator classes are described at length in Section 34.14.
+(relation) The catalog pg_opclass defines index access method operator classes. Each operator class defines semantics for index columns of a particular data type and a particular index access method. An operator class essentially specifies that a particular operator family is applicable to a particular indexable column data type. The set of operators from the family that are actually usable with the indexed column are whichever ones accept the column's data type as their lefthand input. Operator classes are described at length in Section 35.14.
 opcmethod: Index access method operator class is for
 opcname: Name of this operator class
 opcnamespace: Namespace of this operator class
rewordedpg_operator
--- 8.4
+++ 9.0
@@ -1,4 +1,4 @@
-(relation) The catalog pg_operator stores information about operators. See CREATE OPERATOR and Section 34.12 for more information.
+(relation) The catalog pg_operator stores information about operators. See CREATE OPERATOR and Section 35.12 for more information.
 oprname: Name of the operator
 oprnamespace: The OID of the namespace that contains this operator
 oprowner: Owner of the operator
rewordedpg_opfamily
--- 8.4
+++ 9.0
@@ -1,4 +1,4 @@
-(relation) The catalog pg_opfamily defines operator families. Each operator family is a collection of operators and associated support routines that implement the semantics specified for a particular index access method. Furthermore, the operators in a family are all "compatible", in a way that is specified by the access method. The operator family concept allows cross-data-type operators to be used with indexes and to be reasoned about using knowledge of access method semantics. Operator families are described at length in Section 34.14.
+(relation) The catalog pg_opfamily defines operator families. Each operator family is a collection of operators and associated support routines that implement the semantics specified for a particular index access method. Furthermore, the operators in a family are all "compatible", in a way that is specified by the access method. The operator family concept allows cross-data-type operators to be used with indexes and to be reasoned about using knowledge of access method semantics. Operator families are described at length in Section 35.14.
 opfmethod: Index access method operator family is for
 opfname: Name of this operator family
 opfnamespace: Namespace of this operator family
changedpg_pltemplate
8.4 → 9.0
+ tmplinline  text
rewordedpg_prepared_statements
--- 8.4
+++ 9.0
@@ -1,6 +1,6 @@
 (relation) The pg_prepared_statements view displays all the prepared statements that are available in the current session. See PREPARE for more information about prepared statements. pg_prepared_statements contains one row for each prepared statement. Rows are added to the view when a new prepared statement is created and removed when a prepared statement is released (for example, via the DEALLOCATE command).
 name: The identifier of the prepared statement
-statement: The query string submitted by the client to create this prepared statement. For prepared statements created via SQL, this is the PREPARE statement submitted by the client. For prepared statements created via the frontend/backend protocol, this is the text of the prepared statement itself
+statement: The query string submitted by the client to create this prepared statement. For prepared statements created via SQL, this is the PREPARE statement submitted by the client. For prepared statements created via the frontend/backend protocol, this is the text of the prepared statement itself.
 prepare_time: The time at which the prepared statement was created
-parameter_types: The expected parameter types for the prepared statement in the form of an array of regtype. The OID corresponding to an element of this array can be obtained by casting the regtype value to oid
+parameter_types: The expected parameter types for the prepared statement in the form of an array of regtype. The OID corresponding to an element of this array can be obtained by casting the regtype value to oid.
 from_sql: true if the prepared statement was created via the PREPARE SQL statement; false if the statement was prepared via the frontend/backend protocol
changedpg_proc
8.4 → 9.0
~ probin  bytea → text
rewordedpg_roles
--- 8.4
+++ 9.0
@@ -4,10 +4,10 @@
 rolinherit: Role automatically inherits privileges of roles it is a member of
 rolcreaterole: Role can create more roles
 rolcreatedb: Role can create databases
-rolcatupdate: Role can update system catalogs directly. (Even a superuser cannot do this unless this column is true.)
+rolcatupdate: Role can update system catalogs directly. (Even a superuser cannot do this unless this column is true)
 rolcanlogin: Role can log in. That is, this role can be given as the initial session authorization identifier
-rolconnlimit: For roles that can log in, this sets maximum number of concurrent connections this role can make. -1 means no limit
+rolconnlimit: For roles that can log in, this sets maximum number of concurrent connections this role can make. -1 means no limit.
 rolpassword: Not the password (always reads as ********)
-rolvaliduntil: Password expiry time (only used for password authentication); NULL if no expiration
-rolconfig: Session defaults for run-time configuration variables
+rolvaliduntil: Password expiry time (only used for password authentication); null if no expiration
+rolconfig: Role-specific defaults for run-time configuration variables
 oid: ID of role
rewordedpg_settings
--- 8.4
+++ 9.0
@@ -8,10 +8,10 @@
 context: Context required to set the parameter's value
 vartype: Parameter type (bool, enum, integer, real, or string)
 source: Source of the current parameter value
-min_val: Minimum allowed value of the parameter (NULL for non-numeric values)
-max_val: Maximum allowed value of the parameter (NULL for non-numeric values)
-enumvals: Allowed values of an enum parameter (NULL for non-enum values)
+min_val: Minimum allowed value of the parameter (null for non-numeric values)
+max_val: Maximum allowed value of the parameter (null for non-numeric values)
+enumvals: Allowed values of an enum parameter (null for non-enum values)
 boot_val: Parameter value assumed at server startup if the parameter is not otherwise set
 reset_val: Value that RESET would reset the parameter to in the current session
-sourcefile: Configuration file the current value was set in (NULL for values set from sources other than configuration files, or when examined by a non-superuser). Helpful when using configuration include directives
-sourceline: Line number within the configuration file the current value was set at (NULL for values set from sources other than configuration files, or when examined by a non-superuser)
+sourcefile: Configuration file the current value was set in (null for values set from sources other than configuration files, or when examined by a non-superuser); helpful when using include directives in configuration files
+sourceline: Line number within the configuration file the current value was set at (null for values set from sources other than configuration files, or when examined by a non-superuser)
rewordedpg_shadow
--- 8.4
+++ 9.0
@@ -1,9 +1,9 @@
-(relation) The view pg_shadow exists for backwards compatibility: it emulates a catalog that existed in PostgreSQL before version 8.1. It shows properties of all roles that are marked as rolcanlogin. The name stems from the fact that this table should not be readable by the public since it contains passwords. pg_user is a publicly readable view on pg_shadow that blanks out the password field.
+(relation) The view pg_shadow exists for backwards compatibility: it emulates a catalog that existed in PostgreSQL before version 8.1. It shows properties of all roles that are marked as rolcanlogin in pg_authid. The name stems from the fact that this table should not be readable by the public since it contains passwords. pg_user is a publicly readable view on pg_shadow that blanks out the password field.
 usename: User name
 usesysid: ID of this user
 usecreatedb: User can create databases
 usesuper: User is a superuser
 usecatupd: User can update system catalogs. (Even a superuser cannot do this unless this column is true.)
-passwd: Password (possibly encrypted)
+passwd: Password (possibly encrypted); null if none. See pg_authid for details of how encrypted passwords are stored.
 valuntil: Password expiry time (only used for password authentication)
 useconfig: Session defaults for run-time configuration variables
rewordedpg_shdepend
--- 8.4
+++ 9.0
@@ -2,7 +2,7 @@
 dbid: The OID of the database the dependent object is in, or zero for a shared object
 classid: The OID of the system catalog the dependent object is in
 objid: The OID of the specific dependent object
-objsubid: For a table column, this is the column number (the objid and classid refer to the table itself). For all other object types, this column is zero
+objsubid: For a table column, this is the column number (the objid and classid refer to the table itself). For all other object types, this column is zero.
 refclassid: The OID of the system catalog the referenced object is in (must be a shared catalog)
 refobjid: The OID of the specific referenced object
 deptype: A code defining the specific semantics of this dependency relationship; see text
columns not listedpg_stat_activity

The PostgreSQL 8.4 manual names this view without listing its columns, so the columns cannot be compared.

columns not listedpg_stat_all_indexes

The PostgreSQL 8.4 manual names this view without listing its columns, so the columns cannot be compared.

columns not listedpg_stat_all_tables

The PostgreSQL 8.4 manual names this view without listing its columns, so the columns cannot be compared.

columns not listedpg_stat_bgwriter

The PostgreSQL 8.4 manual names this view without listing its columns, so the columns cannot be compared.

columns not listedpg_stat_database

The PostgreSQL 8.4 manual names this view without listing its columns, so the columns cannot be compared.

columns not listedpg_stat_sys_indexes

The PostgreSQL 8.4 manual names this view without listing its columns, so the columns cannot be compared.

columns not listedpg_stat_sys_tables

The PostgreSQL 8.4 manual names this view without listing its columns, so the columns cannot be compared.

columns not listedpg_stat_user_functions

The PostgreSQL 8.4 manual names this view without listing its columns, so the columns cannot be compared.

columns not listedpg_stat_user_indexes

The PostgreSQL 8.4 manual names this view without listing its columns, so the columns cannot be compared.

columns not listedpg_stat_user_tables

The PostgreSQL 8.4 manual names this view without listing its columns, so the columns cannot be compared.

columns not listedpg_statio_all_indexes

The PostgreSQL 8.4 manual names this view without listing its columns, so the columns cannot be compared.

columns not listedpg_statio_all_sequences

The PostgreSQL 8.4 manual names this view without listing its columns, so the columns cannot be compared.

columns not listedpg_statio_all_tables

The PostgreSQL 8.4 manual names this view without listing its columns, so the columns cannot be compared.

columns not listedpg_statio_sys_indexes

The PostgreSQL 8.4 manual names this view without listing its columns, so the columns cannot be compared.

columns not listedpg_statio_sys_sequences

The PostgreSQL 8.4 manual names this view without listing its columns, so the columns cannot be compared.

columns not listedpg_statio_sys_tables

The PostgreSQL 8.4 manual names this view without listing its columns, so the columns cannot be compared.

columns not listedpg_statio_user_indexes

The PostgreSQL 8.4 manual names this view without listing its columns, so the columns cannot be compared.

columns not listedpg_statio_user_sequences

The PostgreSQL 8.4 manual names this view without listing its columns, so the columns cannot be compared.

columns not listedpg_statio_user_tables

The PostgreSQL 8.4 manual names this view without listing its columns, so the columns cannot be compared.

changedpg_statistic
8.4 → 9.0
+ stainherit  boolean
changedpg_stats
8.4 → 9.0
+ inherited  boolean
rewordedpg_tables
--- 8.4
+++ 9.0
@@ -2,7 +2,7 @@
 schemaname: Name of schema containing table
 tablename: Name of table
 tableowner: Name of table's owner
-tablespace: Name of tablespace containing table (NULL if default for database)
-hasindexes: true if table has (or recently had) any indexes
-hasrules: true if table has (or once had) rules
-hastriggers: true if table has (or once had) triggers
+tablespace: Name of tablespace containing table (null if default for database)
+hasindexes: True if table has (or recently had) any indexes
+hasrules: True if table has (or once had) rules
+hastriggers: True if table has (or once had) triggers
changedpg_tablespace
8.4 → 9.0
+ spcoptions  text[]
changedpg_trigger
8.4 → 9.0
+ tgisinternal  boolean
+ tgconstrindid  oid
+ tgqual  text
- tgisconstraint  boolean
- tgconstrname  name
rewordedpg_type
--- 8.4
+++ 9.0
@@ -3,14 +3,14 @@
 typnamespace: The OID of the namespace that contains this type
 typowner: Owner of the type
 typlen: For a fixed-size type, typlen is the number of bytes in the internal representation of the type. But for a variable-length type, typlen is negative. -1 indicates a "varlena" type (one that has a length word), -2 indicates a null-terminated C string.
-typbyval: typbyval determines whether internal routines pass a value of this type by value or by reference. typbyval had better be false if typlen is not 1, 2, or 4 (or 8 on machines where Datum is 8 bytes). Variable-length types are always passed by reference. Note that typbyval can be false even if the length would allow pass-by-value
-typtype: typtype is b for a base type, c for a composite type (e.g., a table's row type), d for a domain, e for an enum type, or p for a pseudo-type. See also typrelid and typbasetype
-typcategory: typcategory is an arbitrary classification of data types that is used by the parser to determine which implicit casts should be "preferred". See Table 44-43
+typbyval: typbyval determines whether internal routines pass a value of this type by value or by reference. typbyval had better be false if typlen is not 1, 2, or 4 (or 8 on machines where Datum is 8 bytes). Variable-length types are always passed by reference. Note that typbyval can be false even if the length would allow pass-by-value.
+typtype: typtype is b for a base type, c for a composite type (e.g., a table's row type), d for a domain, e for an enum type, or p for a pseudo-type. See also typrelid and typbasetype.
+typcategory: typcategory is an arbitrary classification of data types that is used by the parser to determine which implicit casts should be "preferred". See Table 45-45.
 typispreferred: True if the type is a preferred cast target within its typcategory
-typisdefined: True if the type is defined, false if this is a placeholder entry for a not-yet-defined type. When typisdefined is false, nothing except the type name, namespace, and OID can be relied on
-typdelim: Character that separates two values of this type when parsing array input. Note that the delimiter is associated with the array element data type, not the array data type
-typrelid: If this is a composite type (see typtype), then this column points to the pg_class entry that defines the corresponding table. (For a free-standing composite type, the pg_class entry doesn't really represent a table, but it is needed anyway for the type's pg_attribute entries to link to.) Zero for non-composite types
-typelem: If typelem is not 0 then it identifies another row in pg_type. The current type can then be subscripted like an array yielding values of type typelem. A "true" array type is variable length (typlen = -1), but some fixed-length (typlen > 0) types also have nonzero typelem, for example name and point. If a fixed-length type has a typelem then its internal representation must be some number of values of the typelem data type with no other data. Variable-length array types have a header defined by the array subroutines
+typisdefined: True if the type is defined, false if this is a placeholder entry for a not-yet-defined type. When typisdefined is false, nothing except the type name, namespace, and OID can be relied on.
+typdelim: Character that separates two values of this type when parsing array input. Note that the delimiter is associated with the array element data type, not the array data type.
+typrelid: If this is a composite type (see typtype), then this column points to the pg_class entry that defines the corresponding table. (For a free-standing composite type, the pg_class entry doesn't really represent a table, but it is needed anyway for the type's pg_attribute entries to link to.) Zero for non-composite types.
+typelem: If typelem is not 0 then it identifies another row in pg_type. The current type can then be subscripted like an array yielding values of type typelem. A "true" array type is variable length (typlen = -1), but some fixed-length (typlen > 0) types also have nonzero typelem, for example name and point. If a fixed-length type has a typelem then its internal representation must be some number of values of the typelem data type with no other data. Variable-length array types have a header defined by the array subroutines.
 typarray: If typarray is not 0 then it identifies another row in pg_type, which is the "true" array type having this type as element
 typinput: Input conversion function (text format)
 typoutput: Output conversion function (text format)
@@ -21,9 +21,9 @@
 typanalyze: Custom ANALYZE function, or 0 to use the standard function
 typalign: typalign is the alignment required when storing a value of this type. It applies to storage on disk as well as most representations of the value inside PostgreSQL. When multiple values are stored consecutively, such as in the representation of a complete row on disk, padding is inserted before a datum of this type so that it begins on the specified boundary. The alignment reference is the beginning of the first datum in the sequence. Possible values are: c = char alignment, i.e., no alignment needed. s = short alignment (2 bytes on most machines). i = int alignment (4 bytes on most machines). d = double alignment (8 bytes on many machines, but by no means all). Note: For types used in system tables, it is critical that the size and alignment defined in pg_type agree with the way that the compiler will lay out the column in a structure representing a table row.
 typstorage: typstorage tells for varlena types (those with typlen = -1) if the type is prepared for toasting and what the default strategy for attributes of this type should be. Possible values are p: Value must always be stored plain. e: Value can be stored in a "secondary" relation (if relation has one, see pg_class.reltoastrelid). m: Value can be stored compressed inline. x: Value can be stored compressed inline or stored in "secondary" storage. Note that m columns can also be moved out to secondary storage, but only as a last resort (e and x columns are moved first).
-typnotnull: typnotnull represents a not-null constraint on a type. Used for domains only
-typbasetype: If this is a domain (see typtype), then typbasetype identifies the type that this one is based on. Zero if this type is not a domain
-typtypmod: Domains use typtypmod to record the typmod to be applied to their base type (-1 if base type does not use a typmod). -1 if this type is not a domain
-typndims: typndims is the number of array dimensions for a domain that is an array (that is, typbasetype is an array type; the domain's typelem will match the base type's typelem). Zero for types other than domains over array types
-typdefaultbin: If typdefaultbin is not null, it is the nodeToString() representation of a default expression for the type. This is only used for domains
-typdefault: typdefault is null if the type has no associated default value. If typdefaultbin is not null, typdefault must contain a human-readable version of the default expression represented by typdefaultbin. If typdefaultbin is null and typdefault is not, then typdefault is the external representation of the type's default value, which might be fed to the type's input converter to produce a constant
+typnotnull: typnotnull represents a not-null constraint on a type. Used for domains only.
+typbasetype: If this is a domain (see typtype), then typbasetype identifies the type that this one is based on. Zero if this type is not a domain.
+typtypmod: Domains use typtypmod to record the typmod to be applied to their base type (-1 if base type does not use a typmod). -1 if this type is not a domain.
+typndims: typndims is the number of array dimensions for a domain that is an array (that is, typbasetype is an array type; the domain's typelem will match the base type's typelem). Zero for types other than domains over array types.
+typdefaultbin: If typdefaultbin is not null, it is the nodeToString() representation of a default expression for the type. This is only used for domains.
+typdefault: typdefault is null if the type has no associated default value. If typdefaultbin is not null, typdefault must contain a human-readable version of the default expression represented by typdefaultbin. If typdefaultbin is null and typdefault is not, then typdefault is the external representation of the type's default value, which might be fed to the type's input converter to produce a constant.
rewordedpg_user_mapping
--- 8.4
+++ 9.0
@@ -1,4 +1,4 @@
 (relation) The catalog pg_user_mapping stores the mappings from local user to remote. Access to this catalog is restricted from normal users, use the view pg_user_mappings instead.
 umuser: OID of the local role being mapped, 0 if the user mapping is public
 umserver: The OID of the foreign server that contains this mapping
-umoptions: User mapping specific options, as "keyword=value" strings.
+umoptions: User mapping specific options, as "keyword=value" strings
rewordedpg_user_mappings
--- 8.4
+++ 9.0
@@ -4,4 +4,4 @@
 srvname: Name of the foreign server
 umuser: OID of the local role being mapped, 0 if the user mapping is public
 usename: Name of the local user to be mapped
-umoptions: User mapping specific options, as "keyword=value" strings, if the current user is the owner of the foreign server, else null.
+umoptions: User mapping specific options, as "keyword=value" strings, if the current user is the owner of the foreign server, else null