]> granicus.if.org Git - postgresql/commitdiff
Update FAQ.
authorBruce Momjian <bruce@momjian.us>
Fri, 4 Jan 2002 05:44:45 +0000 (05:44 +0000)
committerBruce Momjian <bruce@momjian.us>
Fri, 4 Jan 2002 05:44:45 +0000 (05:44 +0000)
doc/FAQ
doc/src/FAQ/FAQ.html

diff --git a/doc/FAQ b/doc/FAQ
index a4416469962cb1392bd3fd95f2c6f87431dbb8b3..7d821c59c4a622827312531bcd5a76e09a82ce81 100644 (file)
--- a/doc/FAQ
+++ b/doc/FAQ
@@ -1,7 +1,7 @@
 
                 Frequently Asked Questions (FAQ) for PostgreSQL
                                        
-   Last updated: Wed Dec 5 00:41:12 EST 2001
+   Last updated: Fri Jan 4 00:44:42 EST 2002
    
    Current maintainer: Bruce Momjian (pgman@candle.pha.pa.us)
    
    
                            Operational Questions
                                       
-   4.1) Why is the system confused about commas, decimal points, and date
-   formats.
-   4.2) What is the exact difference between binary cursors and normal
-   cursors?
-   4.3) How do I SELECT only the first few rows of a query?
-   4.4) How do I get a list of tables or other things I can see in psql?
-   4.5) How do you remove a column from a table?
-   4.6) What is the maximum size for a row, table, database?
-   4.7) How much database disk space is required to store data from a
+   4.1) What is the difference between binary cursors and normal cursors?
+   4.2) How do I SELECT only the first few rows of a query?
+   4.3) How do I get a list of tables or other things I can see in psql?
+   4.4) How do you remove a column from a table?
+   4.5) What is the maximum size for a row, table, database?
+   4.6) How much database disk space is required to store data from a
    typical text file?
-   4.8) How do I find out what tables or indexes are defined in the
+   4.7) How do I find out what tables or indexes are defined in the
    database?
-   4.9) My queries are slow or don't make use of the indexes. Why?
-   4.10) How do I see how the query optimizer is evaluating my query?
-   4.11) What is an R-tree index?
-   4.12) What is the Genetic Query Optimizer?
-   4.13) How do I perform regular expression searches and
+   4.8) My queries are slow or don't make use of the indexes. Why?
+   4.9) How do I see how the query optimizer is evaluating my query?
+   4.10) What is an R-tree index?
+   4.11) What is the Genetic Query Optimizer?
+   4.12) How do I perform regular expression searches and
    case-insensitive regular expression searches? How do I use an index
    for case-insensitive searches?
-   4.14) In a query, how do I detect if a field is NULL?
-   4.15) What is the difference between the various character types?
-   4.16.1) How do I create a serial/auto-incrementing field?
-   4.16.2) How do I get the value of a SERIAL insert?
-   4.16.3) Don't currval() and nextval() lead to a race condition with
+   4.13) In a query, how do I detect if a field is NULL?
+   4.14) What is the difference between the various character types?
+   4.15.1) How do I create a serial/auto-incrementing field?
+   4.15.2) How do I get the value of a SERIAL insert?
+   4.15.3) Don't currval() and nextval() lead to a race condition with
    other users?
-   4.17) What is an OID? What is a TID?
-   4.18) What is the meaning of some of the terms used in PostgreSQL?
-   4.19) Why do I get the error "ERROR: Memory exhausted in
+   4.16) What is an OID? What is a TID?
+   4.17) What is the meaning of some of the terms used in PostgreSQL?
+   4.18) Why do I get the error "ERROR: Memory exhausted in
    AllocSetAlloc()?"
-   4.20) How do I tell what PostgreSQL version I am running?
-   4.21) My large-object operations get invalid large obj descriptor.
+   4.19) How do I tell what PostgreSQL version I am running?
+   4.20) My large-object operations get invalid large obj descriptor.
    Why?
-   4.22) How do I create a column that will default to the current time?
-   4.23) Why are my subqueries using IN so slow?
-   4.24) How do I perform an outer join?
-   4.25) How do I perform queries using multiple databases?
+   4.21) How do I create a column that will default to the current time?
+   4.22) Why are my subqueries using IN so slow?
+   4.23) How do I perform an outer join?
+   4.24) How do I perform queries using multiple databases?
    
                             Extending PostgreSQL
                                       
    
                            Operational Questions
                                       
-    4.1) Why is system confused about commas, decimal points, and date formats.
-    
-   Check your locale configuration. PostgreSQL uses the locale setting of
-   the user that ran the postmaster process. There are postgres and psql
-   SET commands to control the date format. Set those accordingly for
-   your operating environment.
-   
-    4.2) What is the exact difference between binary cursors and normal
-    cursors?
+    4.1) What is the difference between binary cursors and normal cursors?
     
    See the DECLARE manual page for a description.
    
-    4.3) How do I SELECT only the first few rows of a query?
+    4.2) How do I SELECT only the first few rows of a query?
     
    See the FETCH manual page, or use SELECT ... LIMIT....
    
    only the first few records requested, or the entire query may have to
    be evaluated until the desired rows have been generated.
    
-    4.4) How do I get a list of tables or other things I can see in psql?
+    4.3) How do I get a list of tables or other things I can see in psql?
     
    You can read the source code for psql in file
    pgsql/src/bin/psql/describe.c. It contains SQL commands that generate
    the -E option so it will print out the queries it uses to execute the
    commands you give.
    
-    4.5) How do you remove a column from a table?
+    4.4) How do you remove a column from a table?
     
    We do not support ALTER TABLE DROP COLUMN, but do this:
     SELECT ...  -- select all columns but the one you want to remove
     DROP TABLE old_table;
     ALTER TABLE new_table RENAME TO old_table;
 
-    4.6) What is the maximum size for a row, table, database?
+    4.5) What is the maximum size for a row, table, database?
     
    These are the limits:
     Maximum size for a database?             unlimited (60GB databases exist)
    The maximum table size and maximum number of columns can be increased
    if the default block size is increased to 32k.
    
-    4.7) How much database disk space is required to store data from a typical
+    4.6) How much database disk space is required to store data from a typical
     text file?
     
    A PostgreSQL database may need six-and-a-half times the disk space
    Indexes do not require as much overhead, but do contain the data that
    is being indexed, so they can be large also.
    
-    4.8) How do I find out what tables or indexes are defined in the database?
+    4.7) How do I find out what tables or indexes are defined in the database?
     
    psql has a variety of backslash commands to show such information. Use
    \? to see them.
    many of the SELECTs needed to get information from the database system
    tables.
    
-    4.9) My queries are slow or don't make use of the indexes. Why?
+    4.8) My queries are slow or don't make use of the indexes. Why?
     
    PostgreSQL does not automatically maintain statistics. VACUUM must be
    run to update the statistics. After statistics are updated, the
    string. So, to use indices, LIKE searches should not begin with %, and
    ~(regular expression searches) should start with ^.
    
-    4.10) How do I see how the query optimizer is evaluating my query?
+    4.9) How do I see how the query optimizer is evaluating my query?
     
    See the EXPLAIN manual page.
    
-    4.11) What is an R-tree index?
+    4.10) What is an R-tree index?
     
    An R-tree index is used for indexing spatial data. A hash index can't
    handle range searches. A B-tree index only handles range searches in a
    extending R-trees requires a bit of work and we don't currently have
    any documentation on how to do it.
    
-    4.12) What is the Genetic Query Optimizer?
+    4.11) What is the Genetic Query Optimizer?
     
    The GEQO module speeds query optimization when joining many tables by
    means of a Genetic Algorithm (GA). It allows the handling of large
    join queries through nonexhaustive search.
    
-    4.13) How do I perform regular expression searches and case-insensitive
+    4.12) How do I perform regular expression searches and case-insensitive
     regular expression searches? How do I use an index for case-insensitive
     searches?
     
     CREATE INDEX tabindex on tab (lower(col));
 
 
-    4.14) In a query, how do I detect if a field is NULL?
+    4.13) In a query, how do I detect if a field is NULL?
     
    You test the column with IS NULLIS NOT NULL.
    
-    4.15) What is the difference between the various character types?
+    4.14) What is the difference between the various character types?
     
 Type            Internal Name   Notes
 --------------------------------------------------
@@ -817,7 +806,7 @@ BYTEA           bytea           variable-length byte array (null-safe)
    maximum 1 gigabyte. BYTEA is for storing binary data, particularly
    values that include NULL bytes.
    
-    4.16.1) How do I create a serial/auto-incrementing field?
+    4.15.1) How do I create a serial/auto-incrementing field?
     
    PostgreSQL supports a SERIAL data type. It auto-creates a sequence and
    index on the column. For example, this:
@@ -841,11 +830,11 @@ BYTEA           bytea           variable-length byte array (null-safe)
    
    Numbering Rows.
    
-    4.16.2) How do I get the value of a SERIAL insert?
+    4.15.2) How do I get the value of a SERIAL insert?
     
    One approach is to to retrieve the next SERIAL value from the sequence
    object with the nextval() function before inserting and then insert it
-   explicitly. Using the example table in 4.16.1, that might look like
+   explicitly. Using the example table in 4.15.1, that might look like
    this in Perl:
     new_id = output of "SELECT nextval('person_id_seq')"
     INSERT INTO person (id, name) VALUES (new_id, 'Blaise Pascal');
@@ -867,13 +856,13 @@ BYTEA           bytea           variable-length byte array (null-safe)
    oid value is made available via $sth->{pg_oid_status} after
    $sth->execute().
    
-    4.16.3) Don't currval() and nextval() lead to a race condition with other
+    4.15.3) Don't currval() and nextval() lead to a race condition with other
     users?
     
    No. Currval() returns the current value assigned by your backend, not
    by all users.
    
-    4.17) What is an OID? What is a TID?
+    4.16) What is an OID? What is a TID?
     
    OIDs are PostgreSQL's answer to unique row ids. Every row that is
    created in PostgreSQL gets a unique OID. All OIDs generated during
@@ -906,7 +895,7 @@ BYTEA           bytea           variable-length byte array (null-safe)
    values. Tids change after rows are modified or reloaded. They are used
    by index entries to point to physical rows.
    
-    4.18) What is the meaning of some of the terms used in PostgreSQL?
+    4.17) What is the meaning of some of the terms used in PostgreSQL?
     
    Some of the source code and older documentation use terms that have
    more common usage. Here are some:
@@ -923,7 +912,7 @@ BYTEA           bytea           variable-length byte array (null-safe)
    A list of general database terms can be found at:
    http://www.comptechnews.com/~reaster/dbdesign.html
    
-    4.19) Why do I get the error "ERROR: Memory exhausted in AllocSetAlloc()?"
+    4.18) Why do I get the error "ERROR: Memory exhausted in AllocSetAlloc()?"
     
    If you are running a version older than 7.1, an upgrade may fix the
    problem. Also it is possible you have run out of virtual memory on
@@ -939,11 +928,11 @@ BYTEA           bytea           variable-length byte array (null-safe)
    problem with the SQL client because the backend is returning too much
    data, try it before starting the client.
    
-    4.20) How do I tell what PostgreSQL version I am running?
+    4.19) How do I tell what PostgreSQL version I am running?
     
    From psql, type select version();
    
-    4.21) My large-object operations get invalid large obj descriptor. Why?
+    4.20) My large-object operations get invalid large obj descriptor. Why?
     
    You need to put BEGIN WORK and COMMIT around any use of a large object
    handle, that is, surrounding lo_open ... lo_close.
@@ -957,12 +946,12 @@ BYTEA           bytea           variable-length byte array (null-safe)
    If you are using a client interface like ODBC you may need to set
    auto-commit off.
    
-    4.22) How do I create a column that will default to the current time?
+    4.21) How do I create a column that will default to the current time?
     
    Use CURRENT_TIMESTAMP:
 CREATE TABLE test (x int, modtime timestamp DEFAULT CURRENT_TIMESTAMP );
 
-    4.23) Why are my subqueries using IN so slow?
+    4.22) Why are my subqueries using IN so slow?
     
    Currently, we join subqueries to outer queries by sequentially
    scanning the result of the subquery for each row of the outer query. A
@@ -978,7 +967,7 @@ SELECT *
 
    We hope to fix this limitation in a future release.
    
-    4.24) How do I perform an outer join?
+    4.23) How do I perform an outer join?
     
    PostgreSQL 7.1 and later supports outer joins using the SQL standard
    syntax. Here are two examples:
@@ -1008,7 +997,7 @@ SELECT *
     WHERE tab1.col1 NOT IN (SELECT tab2.col1 FROM tab2)
     ORDER BY col1
 
-    4.25) How do I perform queries using multiple databases?
+    4.24) How do I perform queries using multiple databases?
     
    There is no way to query any database except the current one. Because
    PostgreSQL loads database-specific system catalogs, it is uncertain
index dd5eb71073ad89a0fc61b9eee9133e9bc7ccd06e..1133ab77d2f6bad6305d6ac01751ab7e41a8f626 100644 (file)
@@ -11,7 +11,7 @@
   alink="#0000FF">
     <H1>Frequently Asked Questions (FAQ) for PostgreSQL</H1>
 
-    <P>Last updated: Wed Dec  5 00:41:12 EST 2001</P>
+    <P>Last updated: Fri Jan  4 00:44:42 EST 2002</P>
 
     <P>Current maintainer: Bruce Momjian (<A href=
     "mailto:pgman@candle.pha.pa.us">pgman@candle.pha.pa.us</A>)<BR>
     <CENTER>
       <H2>Operational Questions</H2>
     </CENTER>
-    <A href="#4.1">4.1</A>) Why is the system confused about commas,
-    decimal points, and date formats.<BR>
-     <A href="#4.2">4.2</A>) What is the exact difference between
+     <A href="#4.1">4.1</A>) What is the difference between
     binary cursors and normal cursors?<BR>
-     <A href="#4.3">4.3</A>) How do I <SMALL>SELECT</SMALL> only the
+     <A href="#4.2">4.2</A>) How do I <SMALL>SELECT</SMALL> only the
     first few rows of a query?<BR>
-     <A href="#4.4">4.4</A>) How do I get a list of tables or other
+     <A href="#4.3">4.3</A>) How do I get a list of tables or other
     things I can see in <I>psql?</I><BR>
-     <A href="#4.5">4.5</A>) How do you remove a column from a
+     <A href="#4.4">4.4</A>) How do you remove a column from a
     table?<BR>
-     <A href="#4.6">4.6</A>) What is the maximum size for a row, table,
+     <A href="#4.5">4.5</A>) What is the maximum size for a row, table,
     database?<BR>
-     <A href="#4.7">4.7</A>) How much database disk space is required
+     <A href="#4.6">4.6</A>) How much database disk space is required
     to store data from a typical text file?<BR>
-     <A href="#4.8">4.8</A>) How do I find out what tables or indexes
+     <A href="#4.7">4.7</A>) How do I find out what tables or indexes
     are defined in the database?<BR>
-     <A href="#4.9">4.9</A>) My queries are slow or don't make use of
+     <A href="#4.8">4.8</A>) My queries are slow or don't make use of
     the indexes. Why?<BR>
-     <A href="#4.10">4.10</A>) How do I see how the query optimizer is
+     <A href="#4.9">4.9</A>) How do I see how the query optimizer is
     evaluating my query?<BR>
-     <A href="#4.11">4.11</A>) What is an R-tree index?<BR>
-     <A href="#4.12">4.12</A>) What is the Genetic Query Optimizer?<BR>
-     <A href="#4.13">4.13</A>) How do I perform regular expression
+     <A href="#4.10">4.10</A>) What is an R-tree index?<BR>
+     <A href="#4.11">4.11</A>) What is the Genetic Query Optimizer?<BR>
+     <A href="#4.12">4.12</A>) How do I perform regular expression
     searches and case-insensitive regular expression searches? How do I
     use an index for case-insensitive searches?<BR>
-     <A href="#4.14">4.14</A>) In a query, how do I detect if a field
+     <A href="#4.13">4.13</A>) In a query, how do I detect if a field
     is <SMALL>NULL</SMALL>?<BR>
-     <A href="#4.15">4.15</A>) What is the difference between the
+     <A href="#4.14">4.14</A>) What is the difference between the
     various character types?<BR>
-     <A href="#4.16.1">4.16.1</A>) How do I create a
+     <A href="#4.15.1">4.15.1</A>) How do I create a
     serial/auto-incrementing field?<BR>
-     <A href="#4.16.2">4.16.2</A>) How do I get the value of a
+     <A href="#4.15.2">4.15.2</A>) How do I get the value of a
     <SMALL>SERIAL</SMALL> insert?<BR>
-     <A href="#4.16.3">4.16.3</A>) Don't <I>currval()</I> and
+     <A href="#4.15.3">4.15.3</A>) Don't <I>currval()</I> and
     <I>nextval()</I> lead to a race condition with other users?<BR>
-     <A href="#4.17">4.17</A>) What is an <SMALL>OID</SMALL>? What is a
+     <A href="#4.16">4.16</A>) What is an <SMALL>OID</SMALL>? What is a
     <SMALL>TID</SMALL>?<BR>
-     <A href="#4.18">4.18</A>) What is the meaning of some of the terms
+     <A href="#4.17">4.17</A>) What is the meaning of some of the terms
     used in PostgreSQL?<BR>
-     <A href="#4.19">4.19</A>) Why do I get the error <I>"ERROR: 
+     <A href="#4.18">4.18</A>) Why do I get the error <I>"ERROR: 
      Memory exhausted in AllocSetAlloc()?"</I><BR>
-     <A href="#4.20">4.20</A>) How do I tell what PostgreSQL version I
+     <A href="#4.19">4.19</A>) How do I tell what PostgreSQL version I
     am running? <BR>
-     <A href="#4.21">4.21</A>) My large-object operations get
+     <A href="#4.20">4.20</A>) My large-object operations get
     <I>invalid large obj descriptor.</I> Why?<BR>
-     <A href="#4.22">4.22</A>) How do I create a column that will
+     <A href="#4.21">4.21</A>) How do I create a column that will
     default to the current time?<BR>
-     <A href="#4.23">4.23</A>) Why are my subqueries using
+     <A href="#4.22">4.22</A>) Why are my subqueries using
     <CODE><SMALL>IN</SMALL></CODE> so slow?<BR>
-     <A href="#4.24">4.24</A>) How do I perform an outer join?<BR>
-     <A href="#4.25">4.25</A>) How do I perform queries using multiple databases?<BR>
+     <A href="#4.23">4.23</A>) How do I perform an outer join?<BR>
+     <A href="#4.24">4.24</A>) How do I perform queries using multiple databases?<BR>
      
 
     <CENTER>
       <H2>Operational Questions</H2>
     </CENTER>
 
-    <H4><A name="4.1">4.1</A>) Why is system confused about commas,
-    decimal points, and date formats.</H4>
-
-    <P>Check your locale configuration. PostgreSQL uses the locale
-    setting of the user that ran the <I>postmaster</I> process. There
-    are postgres and psql <SMALL>SET</SMALL> commands to control the
-    date format. Set those accordingly for your operating
-    environment.</P>
-
-    <H4><A name="4.2">4.2</A>) What is the exact difference between
+    <H4><A name="4.1">4.1</A>) What is the difference between
     binary cursors and normal cursors?</H4>
 
     <P>See the <SMALL>DECLARE</SMALL> manual page for a
     description.</P>
 
-    <H4><A name="4.3">4.3</A>) How do I <SMALL>SELECT</SMALL> only the
+    <H4><A name="4.2">4.2</A>) How do I <SMALL>SELECT</SMALL> only the
     first few rows of a query?</H4>
 
     <P>See the <SMALL>FETCH</SMALL> manual page, or use
     records requested, or the entire query may have to be evaluated
     until the desired rows have been generated.</P>
 
-    <H4><A name="4.4">4.4</A>) How do I get a list of tables or other
+    <H4><A name="4.3">4.3</A>) How do I get a list of tables or other
     things I can see in <I>psql?</I><BR>
     </H4>
 
     <I>-E</I> option so it will print out the queries it uses to
     execute the commands you give.</P>
 
-    <H4><A name="4.5">4.5</A>) How do you remove a column from a
+    <H4><A name="4.4">4.4</A>) How do you remove a column from a
     table?</H4>
 
     <P>We do not support <SMALL>ALTER TABLE DROP COLUMN,</SMALL> but do
     ALTER TABLE new_table RENAME TO old_table;
 </PRE>
 
-    <H4><A name="4.6">4.6</A>) What is the maximum size for a row,
+    <H4><A name="4.5">4.5</A>) What is the maximum size for a row,
     table, database?</H4>
 
     <P>These are the limits:</P>
     <P>The maximum table size and maximum number of columns can be
     increased if the default block size is increased to 32k.</P>
 
-    <H4><A name="4.7">4.7</A>) How much database disk space is required
+    <H4><A name="4.6">4.6</A>) How much database disk space is required
     to store data from a typical text file?<BR>
     </H4>
 
     <P>Indexes do not require as much overhead, but do contain the data
     that is being indexed, so they can be large also.</P>
 
-    <H4><A name="4.8">4.8</A>) How do I find out what tables or indexes
+    <H4><A name="4.7">4.7</A>) How do I find out what tables or indexes
     are defined in the database?</H4>
 
     <P><I>psql</I> has a variety of backslash commands to show such
     illustrates many of the <SMALL>SELECT</SMALL>s needed to get
     information from the database system tables.</P>
 
-    <H4><A name="4.9">4.9</A>) My queries are slow or don't make use of
+    <H4><A name="4.8">4.8</A>) My queries are slow or don't make use of
     the indexes. Why?</H4>
 
     <P>PostgreSQL does not automatically maintain statistics.
     <I>~</I>(regular expression searches) should start with
     <I>^.</I></P>
 
-    <H4><A name="4.10">4.10</A>) How do I see how the query optimizer
+    <H4><A name="4.9">4.9</A>) How do I see how the query optimizer
     is evaluating my query?</H4>
 
     <P>See the <SMALL>EXPLAIN</SMALL> manual page.</P>
 
-    <H4><A name="4.11">4.11</A>) What is an R-tree index?</H4>
+    <H4><A name="4.10">4.10</A>) What is an R-tree index?</H4>
 
     <P>An R-tree index is used for indexing spatial data. A hash index
     can't handle range searches. A B-tree index only handles range
     practice, extending R-trees requires a bit of work and we don't
     currently have any documentation on how to do it.</P>
 
-    <H4><A name="4.12">4.12</A>) What is the Genetic Query
+    <H4><A name="4.11">4.11</A>) What is the Genetic Query
     Optimizer?</H4>
 
     <P>The <SMALL>GEQO</SMALL> module speeds query optimization when
     the handling of large join queries through nonexhaustive
     search.</P>
 
-    <H4><A name="4.13">4.13</A>) How do I perform regular expression
+    <H4><A name="4.12">4.12</A>) How do I perform regular expression
     searches and case-insensitive regular expression searches?  How do I
     use an index for case-insensitive searches?</H4>
 
     CREATE INDEX tabindex on tab (lower(col));
     </PRE>
 
-    <H4><A name="4.14">4.14</A>) In a query, how do I detect if a field
+    <H4><A name="4.13">4.13</A>) In a query, how do I detect if a field
     is <SMALL>NULL</SMALL>?</H4>
 
     <P>You test the column with <SMALL>IS NULL</SMALL>IS NOT NULL.</P>
 
-    <H4><A name="4.15">4.15</A>) What is the difference between the
+    <H4><A name="4.14">4.14</A>) What is the difference between the
     various character types?</H4>
 <PRE>
 Type            Internal Name   Notes
@@ -1034,7 +1023,7 @@ BYTEA           bytea           variable-length byte array (null-safe)
     binary data, particularly values that include <SMALL>NULL</SMALL>
     bytes.</P>
     
-    <H4><A name="4.16.1">4.16.1</A>) How do I create a
+    <H4><A name="4.15.1">4.15.1</A>) How do I create a
     serial/auto-incrementing field?</H4>
 
     <P>PostgreSQL supports a <SMALL>SERIAL</SMALL> data type. It
@@ -1064,13 +1053,13 @@ BYTEA           bytea           variable-length byte array (null-safe)
     <P><A href="http://www.PostgreSQL.org/docs/aw_pgsql_book">Numbering
     Rows.</A></P>
 
-    <H4><A name="4.16.2">4.16.2</A>) How do I get the value of a
+    <H4><A name="4.15.2">4.15.2</A>) How do I get the value of a
     <SMALL>SERIAL</SMALL> insert?</H4>
 
     <P>One approach is to to retrieve the next <SMALL>SERIAL</SMALL>
     value from the sequence object with the <I>nextval()</I> function
     <I>before</I> inserting and then insert it explicitly. Using the
-    example table in <A href="#4.16.1">4.16.1</A>, that might look like
+    example table in <A href="#4.15.1">4.15.1</A>, that might look like
     this in Perl:</P>
 <PRE>
     new_id = output of "SELECT nextval('person_id_seq')"
@@ -1091,20 +1080,20 @@ BYTEA           bytea           variable-length byte array (null-safe)
     INSERT INTO person (name) VALUES ('Blaise Pascal');
     new_id = output of "SELECT currval('person_id_seq')";
 </PRE>
-    Finally, you could use the <A href="#4.17"><SMALL>OID</SMALL></A>
+    Finally, you could use the <A href="#4.16"><SMALL>OID</SMALL></A>
     returned from the <SMALL>INSERT</SMALL> statement to look up the
     default value, though this is probably the least portable approach.
     In Perl, using DBI with Edmund Mergl's DBD::Pg module, the oid
     value is made available via <I>$sth-&gt;{pg_oid_status} after
     $sth-&gt;execute().</I> 
 
-    <H4><A name="4.16.3">4.16.3</A>) Don't <I>currval()</I> and
+    <H4><A name="4.15.3">4.15.3</A>) Don't <I>currval()</I> and
     <I>nextval()</I> lead to a race condition with other users?</H4>
 
     <P>No. Currval() returns the current value assigned by your
     backend, not by all users.</P>
 
-    <H4><A name="4.17">4.17</A>) What is an <SMALL>OID</SMALL>? What is
+    <H4><A name="4.16">4.16</A>) What is an <SMALL>OID</SMALL>? What is
     a <SMALL>TID</SMALL>?</H4>
 
     <P><SMALL>OID</SMALL>s are PostgreSQL's answer to unique row ids.
@@ -1149,7 +1138,7 @@ BYTEA           bytea           variable-length byte array (null-safe)
     or reloaded. They are used by index entries to point to physical
     rows.</P>
 
-    <H4><A name="4.18">4.18</A>) What is the meaning of some of the
+    <H4><A name="4.17">4.17</A>) What is the meaning of some of the
     terms used in PostgreSQL?</H4>
 
     <P>Some of the source code and older documentation use terms that
@@ -1178,7 +1167,7 @@ BYTEA           bytea           variable-length byte array (null-safe)
     <P>A list of general database terms can be found at: <A href=
     "http://www.comptechnews.com/~reaster/dbdesign.html">http://www.comptechnews.com/~reaster/dbdesign.html</A></P>
 
-    <H4><A name="4.19">4.19</A>) Why do I get the error <I>"ERROR: 
+    <H4><A name="4.18">4.18</A>) Why do I get the error <I>"ERROR: 
      Memory exhausted in AllocSetAlloc()?"</I><BR>
     </H4>
 
@@ -1198,13 +1187,13 @@ BYTEA           bytea           variable-length byte array (null-safe)
     backend is returning too much data, try it before starting the
     client. 
 
-    <H4><A name="4.20">4.20</A>) How do I tell what PostgreSQL version
+    <H4><A name="4.19">4.19</A>) How do I tell what PostgreSQL version
     I am running?<BR>
     </H4>
 
     <P>From <I>psql,</I> type <CODE>select version();</CODE></P>
 
-    <H4><A name="4.21">4.21</A>) My large-object operations get
+    <H4><A name="4.20">4.20</A>) My large-object operations get
     <I>invalid large obj descriptor.</I> Why?<BR>
     </H4>
 
@@ -1221,7 +1210,7 @@ BYTEA           bytea           variable-length byte array (null-safe)
     <P>If you are using a client interface like <SMALL>ODBC</SMALL> you
     may need to set <CODE>auto-commit off.</CODE></P>
 
-    <H4><A name="4.22">4.22</A>) How do I create a column that will
+    <H4><A name="4.21">4.21</A>) How do I create a column that will
     default to the current time?<BR>
     </H4>
 
@@ -1231,7 +1220,7 @@ BYTEA           bytea           variable-length byte array (null-safe)
 </CODE>
 </PRE>
 
-    <H4><A name="4.23">4.23</A>) Why are my subqueries using
+    <H4><A name="4.22">4.22</A>) Why are my subqueries using
     <CODE><SMALL>IN</SMALL></CODE> so slow?<BR>
     </H4>
 
@@ -1254,7 +1243,7 @@ BYTEA           bytea           variable-length byte array (null-safe)
 </PRE>
     We hope to fix this limitation in a future release. 
 
-    <H4><A name="4.24">4.24</A>) How do I perform an outer join?<BR>
+    <H4><A name="4.23">4.23</A>) How do I perform an outer join?<BR>
     </H4>
 
     <P>PostgreSQL 7.1 and later supports outer joins using the SQL
@@ -1295,7 +1284,7 @@ BYTEA           bytea           variable-length byte array (null-safe)
     ORDER BY col1
 </PRE>
 
-    <H4><A href="#4.25">4.25</A>) How do I perform queries
+    <H4><A href="#4.24">4.24</A>) How do I perform queries
     using multiple databases?</H4>
 
     <P>There is no way to query any database except the current one.