From: Tom Lane Date: Mon, 8 Jan 2001 22:07:47 +0000 (+0000) Subject: Document the system attributes ctid and tableoid, which for some reason X-Git-Tag: REL7_1_BETA3~9 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=10fb290acace1a5356a376e1f532fd8b7433fef9;p=postgresql Document the system attributes ctid and tableoid, which for some reason were never yet mentioned anywhere in our documentation. Improve explanations of the other system attributes, too. --- diff --git a/doc/src/sgml/syntax.sgml b/doc/src/sgml/syntax.sgml index 4a02fab823..d8cd5f18a2 100644 --- a/doc/src/sgml/syntax.sgml +++ b/doc/src/sgml/syntax.sgml @@ -1,5 +1,5 @@ @@ -568,27 +568,33 @@ CAST ( 'string' AS type ) oid - stands for the unique identifier of an instance which is added by - Postgres to all instances automatically. OIDs are not reused and are - 32-bit quantities. + The unique identifier (object ID) of a row. This is a serial number + that is added by Postgres to all rows automatically. OIDs are not + reused and are 32-bit quantities. - xmin + tableoid - The identity of the inserting transaction. + The OID of the table containing this row. This attribute is + particularly handy for queries that select from inheritance + hierarchies, since without it, it's difficult to tell which + individual table a row came from. The tableoid can be joined + against the OID attribute of pg_class to obtain the table name. - xmax + xmin - The identity of the deleting transaction. + The identity (transaction ID) of the inserting transaction for + this tuple. (Note: a tuple is an individual state of a row; + each UPDATE of a row creates a new tuple for the same logical row.) @@ -597,7 +603,19 @@ CAST ( 'string' AS type ) cmin - The command identifier within the inserting transaction. + The command identifier (starting at zero) within the inserting + transaction. + + + + + + xmax + + + The identity (transaction ID) of the deleting transaction, + or zero for an undeleted tuple. In practice, this is never nonzero + for a visible tuple. @@ -606,7 +624,24 @@ CAST ( 'string' AS type ) cmax - The command identifier within the deleting transaction. + The command identifier within the deleting transaction, or zero. + Again, this is never nonzero for a visible tuple. + + + + + + ctid + + + The tuple ID of the tuple within its table. This is a pair + (block number, tuple index within block) that identifies the + physical location of the tuple. Note that although the ctid + can be used to locate the tuple very quickly, a row's ctid + will change each time it is updated or moved by VACUUM. + Therefore ctid is useless as a long-term row identifier. + The OID, or even better a user-defined serial number, should + be used to identify logical rows.