Subject: Minor FAQ correction suggestions

From: Ian Barwick <[email-masked]>
Date: Sun, 13 Oct 2002 05:44:34 +0200

I'm reworking the German version of the FAQ (which is
hopelessly outdated), in the course of which I've come across
a few errors in the original (English) version,
mainly minor things like spelling mistakes and broken links.
Patch with suggested corrections attached (German version will 
follow ASAP).

General alterations:

Some links corrected; links to the domain "postgresql.org" now uniformly 
written as "PostgreSQL.org". Minor tidying up of formatting.

Some specific notes / questions on the following sections:

1.4) What non-Unix ports are available?

-> win31.mak should be win32.mak

Added:
  "A native port to some Microsoft platforms is currently being worked
   upon."
-> IIRC this is the case. Please correct if not.

1.8) What documentation is available?
The link http://www.PostgreSQL.org/books/ is broken,
http://www.ca.PostgreSQL.org/books/ works. (It would be more
logical to fix the link rather than the FAQ I think, though).

3.9) What are the pg_sorttempNNN.NN files in my database directory?

-> presume this should read "What are the pg_tempNNN.NN files..." ??

 4.4) How do you remove a column from a table?
-> ALTER TABLE DROP COLUMN supported as of 7.3 :-) 

4.15.2) How do I get the value of a SERIAL insert?

-> Perl is a very versatile language, but this:

    new_id = output of "SELECT nextval('person_id_seq')"
    INSERT INTO person (id, name) VALUES (new_id, 'Blaise Pascal');

is most definitely not Perl ;-). I have made up a pseudo-language for the
example.

4.16) What is an OID? What is a TID?
->  backend/access/transam.h should be include/access/transam.h 

4.17) What is the meaning of some of the terms used in PostgreSQL?

-> The link http://www.comptechnews.com/~reaster/dbdesign.html is broken
(the domain doesn't seem to exist). Suggest:
http://hea-www.harvard.edu/MST/simul/software/docs/pkgs/pgsql/glossary/glossary.html
as replacement.

4.25) How do I return multiple rows or columns from a function?

-> Linked to current rather than developer documentation

Regards

Ian Barwick
[email-masked]
Index: doc/src/FAQ/FAQ.html
===================================================================
RCS file: /projects/cvsroot/pgsql-server/doc/src/FAQ/FAQ.html,v
retrieving revision 1.158
diff -r1.158 FAQ.html
25c25
<     "http://www.Postgresql.org/docs/faq-english.html">http://www.PostgreSQL.org/docs/faq-english.html</A>.</P>
---
>     "http://www.PostgreSQL.org/docs/faq-english.html">http://www.PostgreSQL.org/docs/faq-english.html</A>.</P>
32,33c32
<     <A href="#1.1">1.1</A>) What is PostgreSQL? How is it
<     pronounced?<BR>
---
>     <A href="#1.1">1.1</A>) What is PostgreSQL? How is it pronounced?<BR>
164c163
<     <H4><A name="1.1">1.1</A>) What is PostgreSQL?</H4>
---
>     <H4><A name="1.1">1.1</A>) What is PostgreSQL? How is it pronounced?</H4>
175c174
<     <P>PostgreSQL development is performed by a team of Internet
---
>     <P>PostgreSQL development is performed by a team of
179,180c178,179
<     below on how to join). This team is now responsible for all
<     development of PostgreSQL.</P>
---
>     section <a href="#1.6">1.6</a> on how to join). This team is now 
>     responsible for all development of PostgreSQL.</P>
242,243c241,242
<     other interfaces and binaries to run on MS Windows platforms. In
<     this case, the client is running on MS Windows, and communicates
---
>     other interfaces and client applications to run on MS Windows platforms.
>     In this case, the client is running on MS Windows, and communicates
245c244
<     platforms. A file <I>win31.mak</I> is included in the distribution
---
>     platforms. A file <I>win32.mak</I> is included in the distribution
253,256c252,256
<     <I>pgsql/doc/FAQ_MSWIN</I> in the distribution or the <A href=
<     "http://www.postgresql.org/docs/faq-mswin.html">MS Windows FAQ</A>
<     on our web site. We have no plan to do a native port to any
<     Microsoft platform.</P>
---
>     <I>pgsql/doc/FAQ_MSWIN</I> in the distribution or the MS Windows FAQ
>     at <A href="http://www.PostgreSQL.org/docs/faq-mswin.html">http://www.PostgreSQL.org/docs/faq-mswin.html</A>.</P>
> 
>     <p>A native port to some Microsoft platforms is currently being worked
>     upon.</p>
321c321
<     "http://www.postgresql.org/users-lounge/commercial-support.html">http://www.postgresql.org/users-lounge/commercial-support.html</A>.</P>
---
>     "http://www.PostgreSQL.org/users-lounge/commercial-support.html">http://www.PostgreSQL.org/users-lounge/commercial-support.html</A>.</P>
342c342
<     "http://www.postgresql.org/books/">http://www.postgresql.org/books/</A>.
---
>     "http://www.ca.PostgreSQL.org/books/">http://www.ca.PostgreSQL.org/books/</A>.
345c345
<     "http://techdocs.postgresql.org/">http://techdocs.postgresql.org/</A>.</P>
---
>     "http://techdocs.PostgreSQL.org/">http://techdocs.PostgreSQL.org/</A>.</P>
405,408c405,408
<     <P>Please visit the <A href=
<     "http://www.postgresql.org/bugs/bugs.php">PostgreSQL BugTool</A>
<     page, which gives guidelines and directions on how to submit a
<     bug.</P>
---
>     <P>Please visit the PostgreSQL BugTool page at <A href=
>     "http://www.PostgreSQL.org/bugs/bugs.php">http://www.PostgreSQL.org/bugs/bugs.php</A>,
>     which gives guidelines and directions on how to submit a
>     bug report.</P>
463,464c463,464
<       <DD>Our mailing list provides a large group of developers and
<       users to help resolve any problems encountered. While we can not
---
>       <DD>Our mailing lists provide contact with a large group of developers
>       and users to help resolve any problems encountered. While we cannot
470c470
<       (See <A href="#1.6">support FAQ item</A>.)<BR>
---
>       (See <A href="#1.6">FAQ section 1.6</A>.)<BR>
487c487
<     six years ago. This is all thanks to Marc Fournier, who has created
---
>     in 1994. This is all thanks to Marc Fournier, who has created
497,499c497
<     this effort, please go to <A href=
<     "https://store.pgsql.com/shopping/index.php?id=1">
<     https://store.pgsql.com/shopping/index.php?id=1</A>
---
>     this effort, please go to <A href="http://store.pgsql.com/shopping/">http://store.pgsql.com/shopping/</A>
541,543d538
<     <P>There is also one at <A href=
<     "http://www.phone.net/home/mwm/hotlist/">http://www.phone.net/home/mwm/hotlist/.</A></P>
< 
547c542
<     <P>For complex cases, many use the Perl interface and CGI.pm.</P>
---
>     <P>For complex cases, many use the Perl interface and CGI.pm or mod_perl.</P>
553,556c548,550
<     <P>We have a nice graphical user interface called <I>pgaccess</I>,
<     which is shipped as part of the distribution. <I>pgaccess</I> also
<     has a report generator. The Web page is <A href=
<     "http://www.flex.ro/pgaccess">http://www.flex.ro/pgaccess</A></P>
---
>     <P>We have a nice graphical user interface called PgAccess, which is
>     shipped as part of the distribution. PgAccess also has a report
>     generator. The Web page is <A href="http://www.pgaccess.org/">http://www.pgaccess.org/</A>.</P>
561,562c555
<     <H4><A name="2.4">2.4</A>) What languages are available to
<     communicate with PostgreSQL?</H4>
---
>     <H4><A name="2.4">2.4</A>) What languages are able to communicate with PostgreSQL?</H4>
575c568
<       <LI>Perl (perl5)</LI>
---
>       <LI>Perl (DBD::Pg)</LI>
585,586c578
<       <LI>Embedded <SMALL>HTML</SMALL> (<A href=
<       "http://www.php.net">PHP from http://www.php.net</A>)</LI>
---
>       <LI>PHP ('pg_' functions, Pear::DB)</LI>
588,590c580,581
<     <P>Additional interfaces are available at <a 
<     href="http://www.postgresql.org/interfaces.html">
<     http://www.postgresql.org/interfaces.html.</A>
---
>     <P>Additional interfaces are available at 
>     <a href="http://www.PostgreSQL.org/interfaces.html">http://www.PostgreSQL.org/interfaces.html</A>.
777c768
<     <H4><A name="3.9">3.9</A>) What are the <I>pg_sorttempNNN.NN</I>
---
>     <H4><A name="3.9">3.9</A>) What are the <I>pg_tempNNN.NN</I>
796,800c787,791
<     However, major releases often change the internal format of system
<     tables and data files.  These changes are often complex, so we don't
<     maintain backward compatability for data files.  A dump outputs data
<     in a generic format that can then be loaded in using the new internal
<     format.
---
>     However, major releases (e.g. from 7.2 to 7.3) often change the internal
>     format of system tables and data files. These changes are often complex,
>     so we don't maintain backward compatability for data files. A dump outputs
>     data in a generic format that can then be loaded in using the new internal
>     format.</P>
802c793
<     <P>In releases where the on-disk format does not change, the
---
>     <p>In releases where the on-disk format does not change, the
805c796
<     release.
---
>     release.</p>
824c815
<     the first few rows. Consider a query that has an <SMALL>ORDER
---
>     the first few rows. Consider using a query that has an <SMALL>ORDER
843,844c834,835
<     <P>We do not support <SMALL>ALTER TABLE DROP COLUMN,</SMALL> but do
<     this:</P>
---
>     <P>Prior to version 7.3, <SMALL>ALTER TABLE DROP COLUMN</SMALL> is not supported.
>     You can do this instead:</P>
895c886
<     24 bytes: one int field and one text filed
---
>     24 bytes: one int field and one text field
960c951
<     LIMIT 1
---
>     LIMIT 1;
975,978c966,969
<     <LI>Case-insensitive searches like <SMALL>ILIKE</SMALL> and
<     <I>~*</I> can not be used.  Instead, use functional
<     indexes, which are described later in this FAQ.</LI>
<     <LI>The default <I>C</I> local must be used during
---
>     <LI>Case-insensitive searches such as <SMALL>ILIKE</SMALL> and
>     <I>~*</I> do not utilise indexes. Instead, use functional
>     indexes, which are described in section <a href="#4.12">4.12</a>.</LI>
>     <LI>The default <I>C</I> locale must be used during
1035c1026
<     WHERE lower(col) = 'abc'
---
>     WHERE LOWER(col) = 'abc';
1041c1032
<     CREATE INDEX tabindex on tab (lower(col));
---
>     CREATE INDEX tabindex ON tab (LOWER(col));
1056,1057c1047,1048
< CHAR(#)         bpchar          blank padded to the specified fixed length
< VARCHAR(#)      varchar         size specifies maximum length, no padding
---
> CHAR(n)         bpchar          blank padded to the specified fixed length
> VARCHAR(n)      varchar         size specifies maximum length, no padding
1072,1073c1063,1064
<     <P><SMALL>CHAR()</SMALL> is best when storing strings that are
<     usually the same length. <SMALL>VARCHAR()</SMALL> is best when
---
>     <P><SMALL>CHAR(n)</SMALL> is best when storing strings that are
>     usually the same length. <SMALL>VARCHAR(n)</SMALL> is best when
1114,1115c1105,1106
<     example table in <A href="#4.15.1">4.15.1</A>, that might look like
<     this in Perl:</P>
---
>     example table in <A href="#4.15.1">4.15.1</A>, an example in a
>     pseudo-language would look like this:</P>
1117,1118c1108,1109
<     new_id = output of "SELECT nextval('person_id_seq')"
<     INSERT INTO person (id, name) VALUES (new_id, 'Blaise Pascal');
---
>     new_id = execute("SELECT nextval('person_id_seq')");
>     execute("INSERT INTO person (id, name) VALUES (new_id, 'Blaise Pascal')");
1127c1118
<     and your <SMALL>SERIAL</SMALL> column, respectively. 
---
>     and your <SMALL>SERIAL</SMALL> column, respectively.
1133,1134c1124,1125
<     INSERT INTO person (name) VALUES ('Blaise Pascal');
<     new_id = output of "SELECT currval('person_id_seq')";
---
>     execute("INSERT INTO person (name) VALUES ('Blaise Pascal')");
>     new_id = execute("SELECT currval('person_id_seq')");
1142c1133
<     <I>$sth-&gt;execute()</I>. 
---
>     <I>$sth-&gt;execute()</I>.
1147c1138
<     <P>No. Currval() returns the current value assigned by your
---
>     <P>No. <i>currval</i>() returns the current value assigned by your
1166c1157
<     <I>backend/access/transam.h</I>). All user-created
---
>     <I>include/access/transam.h</I>). All user-created
1188a1180
> </PRE>
1193,1194d1184
< </PRE>
< 
1231c1221
<     "http://www.comptechnews.com/~reaster/dbdesign.html">http://www.comptechnews.com/~reaster/dbdesign.html</A></P>
---
>     "http://hea-www.harvard.edu/MST/simul/software/docs/pkgs/pgsql/glossary/glossary.html">http://hea-www.harvard.edu/MST/simul/software/docs/pkgs/pgsql/glossary/glossary.html</A></P>
1250c1240
<     client. 
---
>     client.
1255c1245
<     <P>From <I>psql</I>, type <CODE>select version();</CODE></P>
---
>     <P>From <I>psql</I>, type <CODE>SELECT version();</CODE></P>
1291,1292c1281
< <PRE>
< <CODE>SELECT *
---
> <PRE>    SELECT *
1294,1295c1283
<     WHERE col IN (SELECT subcol FROM subtab)
< </CODE>
---
>     WHERE col IN (SELECT subcol FROM subtab);
1297,1299c1285,1286
<     to: 
< <PRE>
< <CODE>SELECT *
---
>     to:
> <PRE>    SELECT *
1301,1302c1288
<     WHERE EXISTS (SELECT subcol FROM subtab WHERE subcol = col)
< </CODE>
---
>     WHERE EXISTS (SELECT subcol FROM subtab WHERE subcol = col);
1306c1292
<     We hope to fix this limitation in a future release. 
---
>     We hope to fix this limitation in a future release.
1365,1366c1351,1352
<     "http://developer.postgresql.org/docs/postgres/plpgsql-cursors.html">
<     http://developer.postgresql.org/docs/postgres/plpgsql-cursors.html,</A>
---
>     "http://www.PostgreSQL.org/idocs/index.php?plpgsql-cursors.html">
>     http://www.PostgreSQL.org/idocs/index.php?plpgsql-cursors.html</A>,
1384,1385c1370,1371
<     href="http://gborg.postgresql.org/genpage?replication_research">
<     http://gborg.postgresql.org/genpage?replication_research</a> lists
---
>     href="http://gborg.PostgreSQL.org/genpage?replication_research">
>     http://gborg.PostgreSQL.org/genpage?replication_research</a> lists
1387,1388c1373
<     href="http://gborg.postgresql.org/project/pgreplication/projdisplay.
<     php">http://gborg.postgresql.org/project/pgreplication/projdisplay.php</a>.</P>
---
>     href="http://gborg.PostgreSQL.org/project/pgreplication/projdisplay.php">http://gborg.PostgreSQL.org/project/pgreplication/projdisplay.php</a>.</P>
1390c1375
<     <H4><A name="4.27">4.27</A>) What encryption options are available?
---
>     <H4><A name="4.28">4.28</A>) What encryption options are available?
1398,1399c1383,1384
<     in version 7.3. In previous versions, you must enable
<     <I>password_encryption</I> in <I>postgresql.conf</I>.</LI>
---
>     in version 7.3. In previous versions, you must enable the option
>     <i>PASSWORD_ENCRYPTION</i> in <i>postgresql.conf</i>.</LI>

---

From: Ian Barwick <[email-masked]>
Date: Sun, 13 Oct 2002 12:57:02 +0200

On Sunday 13 October 2002 05:44, Ian Barwick wrote:

> Patch with suggested corrections attached

This time as context diff...

Regards

Ian Barwick
[email-masked]

---

From: Bruce Momjian <[email-masked]>
Date: Sun, 13 Oct 2002 23:15:02 -0400 (EDT)

Very nice.  I applied the entire patch;  it was all good.  I made a few
updates after applying your patch; patch attached.

---------------------------------------------------------------------------

> -> Linked to current rather than developer documentation

[ Attachment, skipping... ]

> 
> ---------------------------(end of broadcast)---------------------------
> TIP 5: Have you checked our extensive FAQ?
> 
> http://www.postgresql.org/users-lounge/docs/faq.html

-- 
  Bruce Momjian                        |  http://candle.pha.pa.us
  [email-masked]               |  (610) 359-1001
  +  If your life is a hard drive,     |  13 Roberts Road
  +  Christ can be your backup.        |  Newtown Square, Pennsylvania 19073
Index: doc/src/FAQ/FAQ.html
===================================================================
RCS file: /cvsroot/pgsql-server/doc/src/FAQ/FAQ.html,v
retrieving revision 1.159
diff -c -c -r1.159 FAQ.html
*** doc/src/FAQ/FAQ.html	14 Oct 2002 02:50:28 -0000	1.159
--- doc/src/FAQ/FAQ.html	14 Oct 2002 03:13:27 -0000
***************
*** 78,85 ****
       <A href="#3.7">3.7</A>) What debugging features are available?<BR>
       <A href="#3.8">3.8</A>) Why do I get <I>"Sorry, too many
      clients"</I> when trying to connect?<BR>
!      <A href="#3.9">3.9</A>) What are the <I>pg_sorttempNNN.NN</I>
!     files in my database directory?<BR>
       <A href="#3.10">3.10</A>) Why do I need to do a dump and restore 
      to upgrade PostgreSQL releases?<BR>
       
--- 78,85 ----
       <A href="#3.7">3.7</A>) What debugging features are available?<BR>
       <A href="#3.8">3.8</A>) Why do I get <I>"Sorry, too many
      clients"</I> when trying to connect?<BR>
!      <A href="#3.9">3.9</A>) What is in the  <I>pgsql_tmp</I>
!     directory?<BR>
       <A href="#3.10">3.10</A>) Why do I need to do a dump and restore 
      to upgrade PostgreSQL releases?<BR>
       
***************
*** 250,259 ****
      <P>The database server can run on Windows NT and Win2k using
      Cygwin, the Cygnus Unix/NT porting library. See
      <I>pgsql/doc/FAQ_MSWIN</I> in the distribution or the MS Windows FAQ
!     at <A href="http://www.PostgreSQL.org/docs/faq-mswin.html">http://www.PostgreSQL.org/docs/faq-mswin.html</A>.</P>
  
!     <p>A native port to some Microsoft platforms is currently being worked
!     upon.</p>
  
      <H4><A name="1.5">1.5</A>) Where can I get PostgreSQL?</H4>
  
--- 250,260 ----
      <P>The database server can run on Windows NT and Win2k using
      Cygwin, the Cygnus Unix/NT porting library. See
      <I>pgsql/doc/FAQ_MSWIN</I> in the distribution or the MS Windows FAQ
!     at <A href="http://www.PostgreSQL.org/docs/faq-mswin.html">
!     http://www.PostgreSQL.org/docs/faq-mswin.html</A>.</P>
  
!     <p>A native port to MS Win NT/2000/XP is currently being worked
!     on.</p>
  
      <H4><A name="1.5">1.5</A>) Where can I get PostgreSQL?</H4>
  
***************
*** 484,490 ****
      PostgreSQL?</H4>
  
      <P>PostgreSQL has had a first-class infrastructure since we started
!     in 1994. This is all thanks to Marc Fournier, who has created
      and managed this infrastructure over the years.</P>
  
      <P>Quality infrastructure is very important to an open-source
--- 485,491 ----
      PostgreSQL?</H4>
  
      <P>PostgreSQL has had a first-class infrastructure since we started
!     in 1996. This is all thanks to Marc Fournier, who has created
      and managed this infrastructure over the years.</P>
  
      <P>Quality infrastructure is very important to an open-source
***************
*** 545,553 ****
      interface? A report generator? An embedded query language
      interface?</H4>
  
!     <P>We have a nice graphical user interface called PgAccess, which is
!     shipped as part of the distribution. PgAccess also has a report
!     generator. The Web page is <A href="http://www.pgaccess.org/">http://www.pgaccess.org/</A>.</P>
  
      <P>We also include <I>ecpg</I>, which is an embedded SQL query
      language interface for C.</P>
--- 546,554 ----
      interface? A report generator? An embedded query language
      interface?</H4>
  
!     <P>We have a nice graphical user interface called PgAccess which can
!     also be used as a report generator. The Web page is
!     <A href="http://www.pgaccess.org/">http://www.pgaccess.org/</A>.</P>
  
      <P>We also include <I>ecpg</I>, which is an embedded SQL query
      language interface for C.</P>
***************
*** 565,571 ****
  
        <LI>Java (jdbc)</LI>
  
!       <LI>Perl (DBD::Pg)</LI>
  
        <LI>ODBC (odbc)</LI>
  
--- 566,572 ----
  
        <LI>Java (jdbc)</LI>
  
!       <LI>Perl (DBD::Pg and perl5)</LI>
  
        <LI>ODBC (odbc)</LI>
  
***************
*** 578,584 ****
        <LI>PHP ('pg_' functions, Pear::DB)</LI>
      </UL>
      <P>Additional interfaces are available at 
!     <a href="http://www.PostgreSQL.org/interfaces.html">http://www.PostgreSQL.org/interfaces.html</A>.
      </P>
      <HR>
  
--- 579,587 ----
        <LI>PHP ('pg_' functions, Pear::DB)</LI>
      </UL>
      <P>Additional interfaces are available at 
!     <a href="http://www.PostgreSQL.org/interfaces.html">http://www.PostgreSQL.org/interfaces.html</A>
!     and
!     <a href="http://gborg.PostgreSQL.org">http://gborg.PostgreSQL.org</A>.
      </P>
      <HR>
  
***************
*** 765,772 ****
      the MaxBackendId constant in
      <I>include/storage/sinvaladt.h</I>.</P>
  
!     <H4><A name="3.9">3.9</A>) What are the <I>pg_tempNNN.NN</I>
!     files in my database directory?</H4>
  
      <P>They are temporary files generated by the query executor. For
      example, if a sort needs to be done to satisfy an <SMALL>ORDER
--- 768,775 ----
      the MaxBackendId constant in
      <I>include/storage/sinvaladt.h</I>.</P>
  
!     <H4><A name="3.9">3.9</A>) What are the <I>pgsql_tmp</I>
!     directory?</H4>
  
      <P>They are temporary files generated by the query executor. For
      example, if a sort needs to be done to satisfy an <SMALL>ORDER
***************
*** 774,783 ****
      <I>-S</I> parameter allows, then temporary files are created to
      hold the extra data.</P>
  
!     <P>The temporary files should be deleted automatically, but might
!     not if a backend crashes during a sort. If you have no backends
!     running at the time, it is safe to delete the pg_tempNNN.NN
!     files.</P>
  
      <H4><A name="3.10">3.10</A>) Why do I need to do a dump and restore
      to upgrade between major PostgreSQL releases?</H4>
--- 777,785 ----
      <I>-S</I> parameter allows, then temporary files are created to
      hold the extra data.</P>
  
!     <P>The temporary files are usually deleted automatically, but might
!     remain if a backend crashes during a sort. A stop and restart of the
!     <I>postmaster</I> will remove files from those directories.</P>
  
      <H4><A name="3.10">3.10</A>) Why do I need to do a dump and restore
      to upgrade between major PostgreSQL releases?</H4>
***************
*** 790,799 ****
      data in a generic format that can then be loaded in using the new internal
      format.</P>
  
!     <p>In releases where the on-disk format does not change, the
!     <i>pg_upgrade</i> script can be used to upgrade without a dump/restore.
!     The release notes mention whether <i>pg_upgrade</i> is available for the
!     release.</p>
  
      <HR>
  
--- 792,801 ----
  
!     <P>In releases where the on-disk format does not change, the
!     <I>pg_upgrade</I> script can be used to upgrade without a dump/restore.
!     The release notes mention whether <I>pg_upgrade</I> is available for the
!     release.</P>
  
      <HR>
  
***************
*** 831,838 ****
      <H4><A name="4.4">4.4</A>) How do you remove a column from a
      table?</H4>
  
!     <P>Prior to version 7.3, <SMALL>ALTER TABLE DROP COLUMN</SMALL> is not supported.
!     You can do this instead:</P>
  <PRE>
      BEGIN;
      LOCK TABLE old_table;
--- 833,841 ----
      <H4><A name="4.4">4.4</A>) How do you remove a column from a
      table?</H4>
  
!     <P>This functionality was added in release 7.3 with
!     <SMALL>ALTER TABLE DROP COLUMN</SMALL>.  In earlier versions,
!     you can do this:</P>
  <PRE>
      BEGIN;
      LOCK TABLE old_table;
***************
*** 1023,1035 ****
  <PRE>
      SELECT *
      FROM tab
!     WHERE LOWER(col) = 'abc';
  </PRE>
  
      This will not use an standard index. However, if you create a
      functional index, it will be used: 
  <PRE>
!     CREATE INDEX tabindex ON tab (LOWER(col));
  </PRE>
  
      <H4><A name="4.13">4.13</A>) In a query, how do I detect if a field
--- 1026,1038 ----
  <PRE>
      SELECT *
      FROM tab
!     WHERE lower(col) = 'abc';
  </PRE>
  
      This will not use an standard index. However, if you create a
      functional index, it will be used: 
  <PRE>
!     CREATE INDEX tabindex ON tab (lower(col));
  </PRE>
  
      <H4><A name="4.13">4.13</A>) In a query, how do I detect if a field
***************
*** 1118,1124 ****
      and your <SMALL>SERIAL</SMALL> column, respectively.
  
      <P>Alternatively, you could retrieve the assigned
!     <SMALL>SERIAL</SMALL> value with the <I>currval</I>() function
      <I>after</I> it was inserted by default, e.g.,</P>
  <PRE>
      execute("INSERT INTO person (name) VALUES ('Blaise Pascal')");
--- 1121,1127 ----
      and your <SMALL>SERIAL</SMALL> column, respectively.
  
      <P>Alternatively, you could retrieve the assigned
!     <SMALL>SERIAL</SMALL> value with the <I>currval()</I> function
      <I>after</I> it was inserted by default, e.g.,</P>
  <PRE>
      execute("INSERT INTO person (name) VALUES ('Blaise Pascal')");
***************
*** 1135,1141 ****
      <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. <i>currval</i>() returns the current value assigned by your
      backend, not by all users.</P>
  
      <H4><A name="4.15.4">4.15.4</A>) Why aren't my sequence numbers
--- 1138,1144 ----
      <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. <I>currval()</I> returns the current value assigned by your
      backend, not by all users.</P>
  
      <H4><A name="4.15.4">4.15.4</A>) Why aren't my sequence numbers

---

From: Bruce Momjian <[email-masked]>
Date: Sun, 13 Oct 2002 23:15:32 -0400 (EDT)

Thanks for working on this.  It really needed that freshening up.

---

From: Ian Barwick <[email-masked]>
Date: Mon, 14 Oct 2002 20:43:22 +0200

> Thanks for working on this.  It really needed that freshening up.

It's been saying "The current PostgreSQL version is 6.5" for over three
years...

I have completed a first draft, which was effectively a retranslation
of the current FAQ rather than an update of the translation. I still
have some tidying up to do, so I'll be submitting the patch nearer
the weekend.

A question: I presume the text-only version is generated from
the HTML original (I've taken care that the tags can be
stripped without damaging the format) - what tool do you use
to do this?

Regards

Ian Barwick
[email-masked]

---

From: Bruce Momjian <[email-masked]>
Date: Mon, 14 Oct 2002 18:51:25 -0400 (EDT)

> stripped without damaging the format) - what tool do you use

Good question. I use lynx:

	lynx -force_html -dump -hiddenlinks=ignore -nolist "$@"

Seems to work the best.