]> granicus.if.org Git - postgresql/commitdiff
Document the system attributes ctid and tableoid, which for some reason
authorTom Lane <tgl@sss.pgh.pa.us>
Mon, 8 Jan 2001 22:07:47 +0000 (22:07 +0000)
committerTom Lane <tgl@sss.pgh.pa.us>
Mon, 8 Jan 2001 22:07:47 +0000 (22:07 +0000)
were never yet mentioned anywhere in our documentation.  Improve
explanations of the other system attributes, too.

doc/src/sgml/syntax.sgml

index 4a02fab823f75874c91a8266d570f8eeffa904e6..d8cd5f18a28f322e4d63a4216de88d002c6fc753 100644 (file)
@@ -1,5 +1,5 @@
 <!--
-$Header: /cvsroot/pgsql/doc/src/sgml/syntax.sgml,v 1.32 2001/01/06 11:58:56 petere Exp $
+$Header: /cvsroot/pgsql/doc/src/sgml/syntax.sgml,v 1.33 2001/01/08 22:07:47 tgl Exp $
 -->
 
 <chapter id="sql-syntax">
@@ -568,27 +568,33 @@ CAST ( '<replaceable>string</replaceable>' AS <replaceable>type</replaceable> )
        <term>oid</term>
        <listitem>
        <para>
-        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.
        </para>
        </listitem>
       </varlistentry>
 
       <varlistentry>
-       <term>xmin</term>
+      <term>tableoid</term>
        <listitem>
        <para>
-        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.
        </para>
        </listitem>
       </varlistentry>
 
       <varlistentry>
-      <term>xmax</term>
+       <term>xmin</term>
        <listitem>
        <para>
-        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.)
        </para>
        </listitem>
       </varlistentry>
@@ -597,7 +603,19 @@ CAST ( '<replaceable>string</replaceable>' AS <replaceable>type</replaceable> )
       <term>cmin</term>
        <listitem>
        <para>
-        The command identifier within the inserting transaction.
+        The command identifier (starting at zero) within the inserting
+        transaction.
+       </para>
+       </listitem>
+      </varlistentry>
+
+      <varlistentry>
+      <term>xmax</term>
+       <listitem>
+       <para>
+        The identity (transaction ID) of the deleting transaction,
+        or zero for an undeleted tuple.  In practice, this is never nonzero
+        for a visible tuple.
        </para>
        </listitem>
       </varlistentry>
@@ -606,7 +624,24 @@ CAST ( '<replaceable>string</replaceable>' AS <replaceable>type</replaceable> )
       <term>cmax</term>
        <listitem>
        <para>
-        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.
+       </para>
+       </listitem>
+      </varlistentry>
+
+      <varlistentry>
+      <term>ctid</term>
+       <listitem>
+       <para>
+        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.
        </para>
        </listitem>
       </varlistentry>