Commit 3c879e37 authored by Peter Eisentraut's avatar Peter Eisentraut

Add some more index entries.

parent 3a306eef
<!-- $Header: /cvsroot/pgsql/doc/src/sgml/backup.sgml,v 2.17 2001/10/04 04:46:43 momjian Exp $ --> <!-- $Header: /cvsroot/pgsql/doc/src/sgml/backup.sgml,v 2.18 2001/11/12 19:19:39 petere Exp $ -->
<chapter id="backup"> <chapter id="backup">
<title>Backup and Restore</title> <title>Backup and Restore</title>
<indexterm zone="backup"><primary>backup</></>
<para> <para>
As everything that contains valuable data, <productname>Postgres</> As everything that contains valuable data, <productname>Postgres</>
databases should be backed up regularly. While the procedure is databases should be backed up regularly. While the procedure is
...@@ -363,6 +365,7 @@ tar -cf backup.tar /usr/local/pgsql/data ...@@ -363,6 +365,7 @@ tar -cf backup.tar /usr/local/pgsql/data
<sect1 id="migration"> <sect1 id="migration">
<title>Migration between releases</title> <title>Migration between releases</title>
<indexterm zone="migration"><primary>upgrading</></>
<para> <para>
As a general rule, the internal data storage format is subject to As a general rule, the internal data storage format is subject to
......
<!-- $Header: /cvsroot/pgsql/doc/src/sgml/charset.sgml,v 2.13 2001/10/31 20:35:01 petere Exp $ --> <!-- $Header: /cvsroot/pgsql/doc/src/sgml/charset.sgml,v 2.14 2001/11/12 19:19:39 petere Exp $ -->
<chapter id="charset"> <chapter id="charset">
<title>Localization</> <title>Localization</>
...@@ -49,6 +49,8 @@ ...@@ -49,6 +49,8 @@
<sect1 id="locale"> <sect1 id="locale">
<title>Locale Support</title> <title>Locale Support</title>
<indexterm zone="locale"><primary>locale</></>
<para> <para>
<firstterm>Locale</> support refers to an application respecting <firstterm>Locale</> support refers to an application respecting
cultural preferences regarding alphabets, sorting, number cultural preferences regarding alphabets, sorting, number
...@@ -171,6 +173,7 @@ export LANG=sv_SE ...@@ -171,6 +173,7 @@ export LANG=sv_SE
<listitem> <listitem>
<para> <para>
Sort order in <command>ORDER BY</> queries. Sort order in <command>ORDER BY</> queries.
<indexterm><primary>ORDER BY</></>
</para> </para>
</listitem> </listitem>
...@@ -243,6 +246,8 @@ perl: warning: Falling back to the standard locale ("C"). ...@@ -243,6 +246,8 @@ perl: warning: Falling back to the standard locale ("C").
<sect1 id="multibyte"> <sect1 id="multibyte">
<title>Multibyte Support</title> <title>Multibyte Support</title>
<indexterm zone="multibyte"><primary>multibyte</></>
<note> <note>
<title>Author</title> <title>Author</title>
...@@ -586,6 +591,8 @@ RESET CLIENT_ENCODING; ...@@ -586,6 +591,8 @@ RESET CLIENT_ENCODING;
<sect2> <sect2>
<title>About Unicode</title> <title>About Unicode</title>
<indexterm><primary>Unicode</></>
<para> <para>
An automatic encoding translation between Unicode and other An automatic encoding translation between Unicode and other
encodings has been supported since PostgreSQL 7.1. encodings has been supported since PostgreSQL 7.1.
......
<!-- $Header: /cvsroot/pgsql/doc/src/sgml/client-auth.sgml,v 1.25 2001/11/12 02:35:16 momjian Exp $ --> <!-- $Header: /cvsroot/pgsql/doc/src/sgml/client-auth.sgml,v 1.26 2001/11/12 19:19:39 petere Exp $ -->
<chapter id="client-authentication"> <chapter id="client-authentication">
<title>Client Authentication</title> <title>Client Authentication</title>
...@@ -423,12 +423,15 @@ host all 192.168.0.0 255.255.0.0 ident omicron ...@@ -423,12 +423,15 @@ host all 192.168.0.0 255.255.0.0 ident omicron
The following describes the authentication methods in detail. The following describes the authentication methods in detail.
</para> </para>
<sect2> <sect2 id="auth-password">
<title>Password authentication</title> <title>Password authentication</title>
<indexterm> <indexterm>
<primary>password</primary> <primary>password</primary>
</indexterm> </indexterm>
<indexterm>
<primary>MD5</>
</indexterm>
<para> <para>
<productname>Postgres</> database passwords are separate from any <productname>Postgres</> database passwords are separate from any
......
<!-- <!--
$Header: /cvsroot/pgsql/doc/src/sgml/dfunc.sgml,v 1.15 2001/10/26 19:58:12 tgl Exp $ $Header: /cvsroot/pgsql/doc/src/sgml/dfunc.sgml,v 1.16 2001/11/12 19:19:39 petere Exp $
--> -->
<sect2 id="dfunc"> <sect2 id="dfunc">
...@@ -25,6 +25,7 @@ $Header: /cvsroot/pgsql/doc/src/sgml/dfunc.sgml,v 1.15 2001/10/26 19:58:12 tgl E ...@@ -25,6 +25,7 @@ $Header: /cvsroot/pgsql/doc/src/sgml/dfunc.sgml,v 1.15 2001/10/26 19:58:12 tgl E
</para> </para>
<para> <para>
<indexterm><primary>PIC</></>
Creating shared libraries is generally analoguous to linking Creating shared libraries is generally analoguous to linking
executables: first the source files are compiled into object files, executables: first the source files are compiled into object files,
then the object files are linked together. The object files need to then the object files are linked together. The object files need to
...@@ -57,6 +58,7 @@ $Header: /cvsroot/pgsql/doc/src/sgml/dfunc.sgml,v 1.15 2001/10/26 19:58:12 tgl E ...@@ -57,6 +58,7 @@ $Header: /cvsroot/pgsql/doc/src/sgml/dfunc.sgml,v 1.15 2001/10/26 19:58:12 tgl E
<variablelist> <variablelist>
<varlistentry> <varlistentry>
<term><productname>BSD/OS</productname></term> <term><productname>BSD/OS</productname></term>
<indexterm><primary>BSD/OS</></>
<listitem> <listitem>
<para> <para>
The compiler flag to create <acronym>PIC</acronym> is The compiler flag to create <acronym>PIC</acronym> is
...@@ -74,6 +76,7 @@ ld -shared -o foo.so foo.o ...@@ -74,6 +76,7 @@ ld -shared -o foo.so foo.o
<varlistentry> <varlistentry>
<term><productname>FreeBSD</productname></term> <term><productname>FreeBSD</productname></term>
<indexterm><primary>FreeBSD</></>
<listitem> <listitem>
<para> <para>
The compiler flag to create <acronym>PIC</acronym> is The compiler flag to create <acronym>PIC</acronym> is
...@@ -91,6 +94,7 @@ gcc -shared -o foo.so foo.o ...@@ -91,6 +94,7 @@ gcc -shared -o foo.so foo.o
<varlistentry> <varlistentry>
<term><productname>HP-UX</productname></term> <term><productname>HP-UX</productname></term>
<indexterm><primary>HP-UX</></>
<listitem> <listitem>
<para> <para>
The compiler flag of the system compiler to create The compiler flag of the system compiler to create
...@@ -117,6 +121,7 @@ ld -b -o foo.sl foo.o ...@@ -117,6 +121,7 @@ ld -b -o foo.sl foo.o
<varlistentry> <varlistentry>
<term><productname>Irix</productname></term> <term><productname>Irix</productname></term>
<indexterm><primary>Irix</></>
<listitem> <listitem>
<para> <para>
<acronym>PIC</acronym> is the default, no special compiler <acronym>PIC</acronym> is the default, no special compiler
...@@ -132,6 +137,7 @@ ld -shared -o foo.so foo.o ...@@ -132,6 +137,7 @@ ld -shared -o foo.so foo.o
<varlistentry> <varlistentry>
<term><productname>Linux</productname></term> <term><productname>Linux</productname></term>
<indexterm><primary>Linux</></>
<listitem> <listitem>
<para> <para>
The compiler flag to create <acronym>PIC</acronym> is The compiler flag to create <acronym>PIC</acronym> is
...@@ -150,6 +156,7 @@ cc -shared -o foo.so foo.o ...@@ -150,6 +156,7 @@ cc -shared -o foo.so foo.o
<varlistentry> <varlistentry>
<term><productname>NetBSD</productname></term> <term><productname>NetBSD</productname></term>
<indexterm><primary>NetBSD</></>
<listitem> <listitem>
<para> <para>
The compiler flag to create <acronym>PIC</acronym> is The compiler flag to create <acronym>PIC</acronym> is
...@@ -167,6 +174,7 @@ gcc -shared -o foo.so foo.o ...@@ -167,6 +174,7 @@ gcc -shared -o foo.so foo.o
<varlistentry> <varlistentry>
<term><productname>OpenBSD</productname></term> <term><productname>OpenBSD</productname></term>
<indexterm><primary>OpenBSD</></>
<listitem> <listitem>
<para> <para>
The compiler flag to create <acronym>PIC</acronym> is The compiler flag to create <acronym>PIC</acronym> is
...@@ -180,26 +188,9 @@ ld -Bshareable -o foo.so foo.o ...@@ -180,26 +188,9 @@ ld -Bshareable -o foo.so foo.o
</listitem> </listitem>
</varlistentry> </varlistentry>
<varlistentry>
<term>Digital Unix/Tru64 UNIX</term>
<listitem>
<para>
<acronym>PIC</acronym> is the default, so the compilation command
is the usual one. <command>ld</command> with special options is
used to do the linking:
<programlisting>
cc -c foo.c
ld -shared -expect_unresolved '*' -o foo.so foo.o
</programlisting>
The same procedure is used with GCC instead of the system
compiler; no special options are required.
</para>
</listitem>
</varlistentry>
<varlistentry> <varlistentry>
<term><productname>Solaris</productname></term> <term><productname>Solaris</productname></term>
<indexterm><primary>Solaris</></>
<listitem> <listitem>
<para> <para>
The compiler flag to create <acronym>PIC</acronym> is The compiler flag to create <acronym>PIC</acronym> is
...@@ -221,8 +212,28 @@ gcc -G -o foo.so foo.o ...@@ -221,8 +212,28 @@ gcc -G -o foo.so foo.o
</listitem> </listitem>
</varlistentry> </varlistentry>
<varlistentry>
<term>Tru64 UNIX</term>
<indexterm><primary>Tru64 UNIX</></>
<indexterm><primary>Digital UNIX</><see>Tru64 UNIX</></>
<listitem>
<para>
<acronym>PIC</acronym> is the default, so the compilation command
is the usual one. <command>ld</command> with special options is
used to do the linking:
<programlisting>
cc -c foo.c
ld -shared -expect_unresolved '*' -o foo.so foo.o
</programlisting>
The same procedure is used with GCC instead of the system
compiler; no special options are required.
</para>
</listitem>
</varlistentry>
<varlistentry> <varlistentry>
<term><productname>Unixware</productname></term> <term><productname>Unixware</productname></term>
<indexterm><primary>Unixware</></>
<listitem> <listitem>
<para> <para>
The compiler flag to create <acronym>PIC</acronym> is <option>-K The compiler flag to create <acronym>PIC</acronym> is <option>-K
......
<!-- <!--
$Header: /cvsroot/pgsql/doc/src/sgml/ecpg.sgml,v 1.29 2001/11/08 23:37:50 petere Exp $ $Header: /cvsroot/pgsql/doc/src/sgml/ecpg.sgml,v 1.30 2001/11/12 19:19:39 petere Exp $
--> -->
<chapter id="ecpg"> <chapter id="ecpg">
...@@ -28,6 +28,8 @@ $Header: /cvsroot/pgsql/doc/src/sgml/ecpg.sgml,v 1.29 2001/11/08 23:37:50 petere ...@@ -28,6 +28,8 @@ $Header: /cvsroot/pgsql/doc/src/sgml/ecpg.sgml,v 1.29 2001/11/08 23:37:50 petere
<title><application>ecpg</application> - Embedded <acronym>SQL</acronym> <title><application>ecpg</application> - Embedded <acronym>SQL</acronym>
in <acronym>C</acronym></title> in <acronym>C</acronym></title>
<indexterm zone="ecpg"><primary>embedded SQL</primary><secondary>in C</secondary></indexterm>
<para> <para>
This describes the embedded <acronym>SQL</acronym> package for This describes the embedded <acronym>SQL</acronym> package for
<productname>Postgres</productname>. It works with <productname>Postgres</productname>. It works with
...@@ -538,6 +540,7 @@ struct sqlca ...@@ -538,6 +540,7 @@ struct sqlca
<variablelist> <variablelist>
<varlistentry> <varlistentry>
<term>Syntax of FETCH</term> <term>Syntax of FETCH</term>
<indexterm><primary>FETCH</><secondary>embedded SQL</></indexterm>
<listitem> <listitem>
<para> <para>
The standard syntax for FETCH is: The standard syntax for FETCH is:
...@@ -546,7 +549,8 @@ struct sqlca ...@@ -546,7 +549,8 @@ struct sqlca
FETCH [direction] [amount] IN|FROM <replaceable>cursor</replaceable>. FETCH [direction] [amount] IN|FROM <replaceable>cursor</replaceable>.
</para> </para>
<para> <para>
<application>ORACLE</application>, however, does not use the keywords IN <indexterm><primary>Oracle</></>
<application>Oracle</application>, however, does not use the keywords IN
or FROM. This feature cannot be added since it would create parsing or FROM. This feature cannot be added since it would create parsing
conflicts. conflicts.
</para> </para>
......
<!-- <!--
$Header: /cvsroot/pgsql/doc/src/sgml/libpq.sgml,v 1.74 2001/10/31 20:39:30 petere Exp $ $Header: /cvsroot/pgsql/doc/src/sgml/libpq.sgml,v 1.75 2001/11/12 19:19:39 petere Exp $
--> -->
<chapter id="libpq"> <chapter id="libpq">
...@@ -70,7 +70,7 @@ PGconn *PQconnectdb(const char *conninfo) ...@@ -70,7 +70,7 @@ PGconn *PQconnectdb(const char *conninfo)
This routine opens a new database connection using the parameters taken This routine opens a new database connection using the parameters taken
from the string <literal>conninfo</literal>. Unlike <function>PQsetdbLogin</> below, from the string <literal>conninfo</literal>. Unlike <function>PQsetdbLogin</> below,
the parameter set can be extended without changing the function signature, the parameter set can be extended without changing the function signature,
so use either of this routine or the non-blocking analogues <function>PQconnectStart</> so use either of this routine or the nonblocking analogues <function>PQconnectStart</>
and <function>PQconnectPoll</function> is preferred for application programming. The passed string and <function>PQconnectPoll</function> is preferred for application programming. The passed string
can be empty to use all default parameters, or it can contain one or more can be empty to use all default parameters, or it can contain one or more
parameter settings separated by whitespace. parameter settings separated by whitespace.
...@@ -106,7 +106,7 @@ PGconn *PQconnectdb(const char *conninfo) ...@@ -106,7 +106,7 @@ PGconn *PQconnectdb(const char *conninfo)
<para> <para>
IP address of host to connect to. This should be in standard IP address of host to connect to. This should be in standard
numbers-and-dots form, as used by the BSD functions <function>inet_aton</> et al. If numbers-and-dots form, as used by the BSD functions <function>inet_aton</> et al. If
a non-zero-length string is specified, TCP/IP communication is used. a nonzero-length string is specified, TCP/IP communication is used.
</para> </para>
<para> <para>
Using <literal>hostaddr</> instead of host allows the application to avoid a host Using <literal>hostaddr</> instead of host allows the application to avoid a host
...@@ -244,7 +244,8 @@ PGconn *PQsetdb(char *pghost, ...@@ -244,7 +244,8 @@ PGconn *PQsetdb(char *pghost,
<para> <para>
<function>PQconnectStart</function>, <function>PQconnectStart</function>,
<function>PQconnectPoll</function> <function>PQconnectPoll</function>
Make a connection to the database server in a non-blocking manner. <indexterm><primary>nonblocking connection</primary></indexterm>
Make a connection to the database server in a nonblocking manner.
<synopsis> <synopsis>
PGconn *PQconnectStart(const char *conninfo) PGconn *PQconnectStart(const char *conninfo)
</synopsis> </synopsis>
...@@ -289,7 +290,7 @@ PostgresPollingStatusType PQconnectPoll(PGconn *conn) ...@@ -289,7 +290,7 @@ PostgresPollingStatusType PQconnectPoll(PGconn *conn)
</para> </para>
<para> <para>
To begin, call <literal>conn=PQconnectStart("&lt;connection_info_string&gt;")</literal>. To begin, call <literal>conn=PQconnectStart("<replaceable>connection_info_string</>")</literal>.
If <varname>conn</varname> is NULL, then <application>libpq</> has been unable to allocate a new <structname>PGconn</> If <varname>conn</varname> is NULL, then <application>libpq</> has been unable to allocate a new <structname>PGconn</>
structure. Otherwise, a valid <structname>PGconn</> pointer is returned (though not yet structure. Otherwise, a valid <structname>PGconn</> pointer is returned (though not yet
representing a valid connection to the database). On return from representing a valid connection to the database). On return from
...@@ -413,7 +414,7 @@ switch(PQstatus(conn)) ...@@ -413,7 +414,7 @@ switch(PQstatus(conn))
</para> </para>
<para> <para>
These functions leave the socket in a non-blocking state as if These functions leave the socket in a nonblocking state as if
<function>PQsetnonblocking</function> had been called. <function>PQsetnonblocking</function> had been called.
</para> </para>
</listitem> </listitem>
...@@ -495,7 +496,7 @@ void PQreset(PGconn *conn) ...@@ -495,7 +496,7 @@ void PQreset(PGconn *conn)
<para> <para>
<function>PQresetStart</function> <function>PQresetStart</function>
<function>PQresetPoll</function> <function>PQresetPoll</function>
Reset the communication port with the backend, in a non-blocking manner. Reset the communication port with the backend, in a nonblocking manner.
<synopsis> <synopsis>
int PQresetStart(PGconn *conn); int PQresetStart(PGconn *conn);
</synopsis> </synopsis>
...@@ -506,7 +507,7 @@ PostgresPollingStatusType PQresetPoll(PGconn *conn); ...@@ -506,7 +507,7 @@ PostgresPollingStatusType PQresetPoll(PGconn *conn);
reestablish a new connection to the same postmaster, using all the same reestablish a new connection to the same postmaster, using all the same
parameters previously used. This may be useful for error recovery if a parameters previously used. This may be useful for error recovery if a
working connection is lost. They differ from <function>PQreset</function> (above) in that they working connection is lost. They differ from <function>PQreset</function> (above) in that they
act in a non-blocking manner. These functions suffer from the same act in a nonblocking manner. These functions suffer from the same
restrictions as <function>PQconnectStart</> and <function>PQconnectPoll</>. restrictions as <function>PQconnectStart</> and <function>PQconnectPoll</>.
</para> </para>
<para> <para>
...@@ -520,6 +521,8 @@ PostgresPollingStatusType PQresetPoll(PGconn *conn); ...@@ -520,6 +521,8 @@ PostgresPollingStatusType PQresetPoll(PGconn *conn);
</para> </para>
<para> <para>
<indexterm><primary>libpq-fe.h</></>
<indexterm><primary>libpq-int.h</></>
<application>libpq</application> application programmers should be careful to <application>libpq</application> application programmers should be careful to
maintain the <structname>PGconn</structname> abstraction. Use the accessor functions below to get maintain the <structname>PGconn</structname> abstraction. Use the accessor functions below to get
at the contents of <structname>PGconn</structname>. Avoid directly referencing the fields of the at the contents of <structname>PGconn</structname>. Avoid directly referencing the fields of the
...@@ -529,6 +532,7 @@ definition of struct <structname>PGconn</structname> is not even provided in <fi ...@@ -529,6 +532,7 @@ definition of struct <structname>PGconn</structname> is not even provided in <fi
If you have old code that accesses <structname>PGconn</structname> fields directly, you can keep using it If you have old code that accesses <structname>PGconn</structname> fields directly, you can keep using it
by including <filename>libpq-int.h</filename> too, but you are encouraged to fix the code by including <filename>libpq-int.h</filename> too, but you are encouraged to fix the code
soon.) soon.)
<itemizedlist> <itemizedlist>
<listitem> <listitem>
<para> <para>
...@@ -640,6 +644,7 @@ ConnStatusType PQstatus(const PGconn *conn) ...@@ -640,6 +644,7 @@ ConnStatusType PQstatus(const PGconn *conn)
<listitem> <listitem>
<para> <para>
<function>PQerrorMessage</function> <function>PQerrorMessage</function>
<indexterm><primary>error message</></>
Returns the error message most recently generated by Returns the error message most recently generated by
an operation on the connection. an operation on the connection.
<synopsis> <synopsis>
...@@ -677,6 +682,7 @@ int PQbackendPID(const PGconn *conn); ...@@ -677,6 +682,7 @@ int PQbackendPID(const PGconn *conn);
<listitem> <listitem>
<para> <para>
<function>PQgetssl</function> <function>PQgetssl</function>
<indexterm><primary>SSL</></>
Returns the SSL structure used in the connection, or NULL Returns the SSL structure used in the connection, or NULL
if SSL is not in use. if SSL is not in use.
<synopsis> <synopsis>
...@@ -858,30 +864,33 @@ as with a <structname>PGresult</structname> returned by <application>libpq</appl ...@@ -858,30 +864,33 @@ as with a <structname>PGresult</structname> returned by <application>libpq</appl
<sect2 id="libpq-exec-escape-string"> <sect2 id="libpq-exec-escape-string">
<title>Escaping strings for inclusion in SQL queries</title> <title>Escaping strings for inclusion in SQL queries</title>
<indexterm zone="libpq-exec-escape-string"><primary>escaping strings</></>
<para> <para>
<function>PQescapeString</function> <function>PQescapeString</function>
Escapes a string for use within an SQL query. Escapes a string for use within an SQL query.
<synopsis> <synopsis>
size_t PQescapeString (char *to, const char *from, size_t length); size_t PQescapeString (char *to, const char *from, size_t length);
</synopsis> </synopsis>
If you want to include strings which have been received If you want to include strings that have been received
from a source which is not trustworthy (for example, because they were from a source that is not trustworthy (for example, because they were
transmitted across a network), you cannot directly include them in SQL transmitted across a network), you cannot directly include them in SQL
queries for security reasons. Instead, you have to quote special queries for security reasons. Instead, you have to quote special
characters which are otherwise interpreted by the SQL parser. characters that are otherwise interpreted by the SQL parser.
</para> </para>
<para> <para>
<function>PQescapeString</> performs this operation. The <function>PQescapeString</> performs this operation. The
<parameter>from</> points to the first character of the string which <parameter>from</> points to the first character of the string that
is to be escaped, and the <parameter>length</> parameter counts the is to be escaped, and the <parameter>length</> parameter counts the
number of characters in this string (a terminating NUL character is number of characters in this string (a terminating NUL character is
neither necessary nor counted). <parameter>to</> shall point to a neither necessary nor counted). <parameter>to</> shall point to a
buffer which is able to hold at least one more character than twice buffer that is able to hold at least one more character than twice
the value of <parameter>length</>, otherwise the behavior is the value of <parameter>length</>, otherwise the behavior is
undefined. A call to <function>PQescapeString</> writes an escaped undefined. A call to <function>PQescapeString</> writes an escaped
version of the <parameter>from</> string to the <parameter>to</> version of the <parameter>from</> string to the <parameter>to</>
buffer, replacing special characters so that they cannot cause any buffer, replacing special characters so that they cannot cause any
harm, and adding a terminating NUL character. The single quotes which harm, and adding a terminating NUL character. The single quotes that
must surround PostgreSQL string literals are not part of the result must surround PostgreSQL string literals are not part of the result
string. string.
</para> </para>
...@@ -1175,6 +1184,8 @@ and is not thread-safe. ...@@ -1175,6 +1184,8 @@ and is not thread-safe.
<sect1 id="libpq-async"> <sect1 id="libpq-async">
<title>Asynchronous Query Processing</title> <title>Asynchronous Query Processing</title>
<indexterm zone="libpq-async"><primary>nonblocking connection</></>
<para> <para>
The <function>PQexec</function> function is adequate for submitting queries in The <function>PQexec</function> function is adequate for submitting queries in
simple synchronous simple synchronous
...@@ -1220,7 +1231,7 @@ was added. ...@@ -1220,7 +1231,7 @@ was added.
<para> <para>
Old applications can neglect to use <function>PQsetnonblocking</function> Old applications can neglect to use <function>PQsetnonblocking</function>
and get the older potentially blocking behavior. Newer programs can use and get the older potentially blocking behavior. Newer programs can use
<function>PQsetnonblocking</function> to achieve a completely non-blocking <function>PQsetnonblocking</function> to achieve a completely nonblocking
connection to the backend. connection to the backend.
<itemizedlist> <itemizedlist>
...@@ -1260,7 +1271,7 @@ int PQsetnonblocking(PGconn *conn, int arg) ...@@ -1260,7 +1271,7 @@ int PQsetnonblocking(PGconn *conn, int arg)
<synopsis> <synopsis>
int PQisnonblocking(const PGconn *conn) int PQisnonblocking(const PGconn *conn)
</synopsis> </synopsis>
Returns 1 if the connection is set to non-blocking mode, Returns 1 if the connection is set to nonblocking mode,
0 if blocking. 0 if blocking.
</para> </para>
</listitem> </listitem>
...@@ -1368,7 +1379,7 @@ some reason. ...@@ -1368,7 +1379,7 @@ some reason.
<synopsis> <synopsis>
int PQflush(PGconn *conn); int PQflush(PGconn *conn);
</synopsis> </synopsis>
<function>PQflush</function> needs to be called on a non-blocking connection <function>PQflush</function> needs to be called on a nonblocking connection
before calling <function>select</function> to determine if a response has before calling <function>select</function> to determine if a response has
arrived. If 0 is returned it ensures that there is no data queued to the arrived. If 0 is returned it ensures that there is no data queued to the
backend that has not actually been sent. Only applications that have used backend that has not actually been sent. Only applications that have used
...@@ -1395,7 +1406,7 @@ data; after which, <function>PQisBusy</function>, <function>PQgetResult</functio ...@@ -1395,7 +1406,7 @@ data; after which, <function>PQisBusy</function>, <function>PQgetResult</functio
and/or <function>PQnotifies</function> can be used to process the response. and/or <function>PQnotifies</function> can be used to process the response.
</para> </para>
<para> <para>
Non-blocking connections (that have used <function>PQsetnonblocking</function>) Nonblocking connections (that have used <function>PQsetnonblocking</function>)
should not use <function>select</function> until <function>PQflush</function> should not use <function>select</function> until <function>PQflush</function>
has returned 0 indicating that there is no buffered data waiting to be sent has returned 0 indicating that there is no buffered data waiting to be sent
to the backend. to the backend.
...@@ -1525,6 +1536,8 @@ typedef struct { ...@@ -1525,6 +1536,8 @@ typedef struct {
<sect1 id="libpq-notify"> <sect1 id="libpq-notify">
<title>Asynchronous Notification</title> <title>Asynchronous Notification</title>
<indexterm zone="libpq-notify"><primary>NOTIFY</primary></indexterm>
<para> <para>
<productname>PostgreSQL</productname> supports asynchronous notification via the <productname>PostgreSQL</productname> supports asynchronous notification via the
<command>LISTEN</command> and <command>NOTIFY</command> commands. A backend registers its interest in a particular <command>LISTEN</command> and <command>NOTIFY</command> commands. A backend registers its interest in a particular
...@@ -1828,14 +1841,14 @@ void PQuntrace(PGconn *conn) ...@@ -1828,14 +1841,14 @@ void PQuntrace(PGconn *conn)
</sect1> </sect1>
<sect1 id="libpq-control"> <sect1 id="libpq-control">
<title> <title><application>libpq</application> Control Functions</title>
<application>libpq</application> Control Functions</title>
<para> <para>
<itemizedlist> <itemizedlist>
<listitem> <listitem>
<para> <para>
<function>PQsetNoticeProcessor</function> <function>PQsetNoticeProcessor</function>
<indexterm><primary>notice processor</></>
Control reporting of notice and warning messages generated by libpq. Control reporting of notice and warning messages generated by libpq.
<synopsis> <synopsis>
typedef void (*PQnoticeProcessor) (void *arg, const char *message); typedef void (*PQnoticeProcessor) (void *arg, const char *message);
...@@ -2106,6 +2119,7 @@ CPPFLAGS += -I/usr/local/pgsql/include ...@@ -2106,6 +2119,7 @@ CPPFLAGS += -I/usr/local/pgsql/include
</para> </para>
<para> <para>
<indexterm><primary>pg_config</></>
If there is any chance that your program might be compiled by If there is any chance that your program might be compiled by
other users then you should not hardcode the directory location other users then you should not hardcode the directory location
like that. Instead, you can run the utility like that. Instead, you can run the utility
...@@ -2171,6 +2185,7 @@ testlibpq.o(.text+0xa4): undefined reference to `PQerrorMessage' ...@@ -2171,6 +2185,7 @@ testlibpq.o(.text+0xa4): undefined reference to `PQerrorMessage'
</para> </para>
<para> <para>
<indexterm><primary>libpq-int.h</></>
If your codes references the header file If your codes references the header file
<filename>libpq-int.h</filename> and you refuse to fix your code to <filename>libpq-int.h</filename> and you refuse to fix your code to
not use it, starting in PostgreSQL 7.2, this file will be found in not use it, starting in PostgreSQL 7.2, this file will be found in
......
<!-- <!--
$Header: /cvsroot/pgsql/doc/src/sgml/lobj.sgml,v 1.23 2001/10/09 18:46:00 petere Exp $ $Header: /cvsroot/pgsql/doc/src/sgml/lobj.sgml,v 1.24 2001/11/12 19:19:39 petere Exp $
--> -->
<chapter id="largeObjects"> <chapter id="largeObjects">
<title id="largeObjects-title">Large Objects</title> <title id="largeObjects-title">Large Objects</title>
<indexterm zone="largeobjects"><primary>large object</></>
<indexterm><primary>BLOB</><see>large object</></>
<sect1 id="lo-intro"> <sect1 id="lo-intro">
<title>Introduction</title> <title>Introduction</title>
...@@ -41,6 +44,8 @@ $Header: /cvsroot/pgsql/doc/src/sgml/lobj.sgml,v 1.23 2001/10/09 18:46:00 petere ...@@ -41,6 +44,8 @@ $Header: /cvsroot/pgsql/doc/src/sgml/lobj.sgml,v 1.23 2001/10/09 18:46:00 petere
</para> </para>
<para> <para>
<indexterm><primary>TOAST</></>
<indexterm><primary>sliced bread</><see>TOAST</></indexterm>
<productname>PostgreSQL 7.1</productname> introduced a mechanism <productname>PostgreSQL 7.1</productname> introduced a mechanism
(nicknamed <quote><acronym>TOAST</acronym></quote>) that allows (nicknamed <quote><acronym>TOAST</acronym></quote>) that allows
data rows to be much larger than individual data pages. This data rows to be much larger than individual data pages. This
......
<!-- <!--
$Header: /cvsroot/pgsql/doc/src/sgml/maintenance.sgml,v 1.5 2001/10/12 23:32:34 momjian Exp $ $Header: /cvsroot/pgsql/doc/src/sgml/maintenance.sgml,v 1.6 2001/11/12 19:19:39 petere Exp $
--> -->
<chapter id="maintenance"> <chapter id="maintenance">
...@@ -52,6 +52,10 @@ $Header: /cvsroot/pgsql/doc/src/sgml/maintenance.sgml,v 1.5 2001/10/12 23:32:34 ...@@ -52,6 +52,10 @@ $Header: /cvsroot/pgsql/doc/src/sgml/maintenance.sgml,v 1.5 2001/10/12 23:32:34
<sect1 id="routine-vacuuming"> <sect1 id="routine-vacuuming">
<title>Routine Vacuuming</title> <title>Routine Vacuuming</title>
<indexterm zone="routine-vacuuming">
<primary>vacuum</primary>
</indexterm>
<para> <para>
<productname>PostgreSQL</productname>'s <command>VACUUM</> command must be <productname>PostgreSQL</productname>'s <command>VACUUM</> command must be
run on a regular basis for several reasons: run on a regular basis for several reasons:
...@@ -93,6 +97,10 @@ $Header: /cvsroot/pgsql/doc/src/sgml/maintenance.sgml,v 1.5 2001/10/12 23:32:34 ...@@ -93,6 +97,10 @@ $Header: /cvsroot/pgsql/doc/src/sgml/maintenance.sgml,v 1.5 2001/10/12 23:32:34
<sect2 id="vacuum-for-space-recovery"> <sect2 id="vacuum-for-space-recovery">
<title>Recovering disk space</title> <title>Recovering disk space</title>
<indexterm zone="vacuum-for-space-recovery">
<primary>disk space</primary>
</indexterm>
<para> <para>
In normal <productname>PostgreSQL</productname> operation, an UPDATE or In normal <productname>PostgreSQL</productname> operation, an UPDATE or
DELETE of a row does not immediately remove the old <firstterm>tuple</> DELETE of a row does not immediately remove the old <firstterm>tuple</>
...@@ -219,6 +227,11 @@ $Header: /cvsroot/pgsql/doc/src/sgml/maintenance.sgml,v 1.5 2001/10/12 23:32:34 ...@@ -219,6 +227,11 @@ $Header: /cvsroot/pgsql/doc/src/sgml/maintenance.sgml,v 1.5 2001/10/12 23:32:34
<sect2 id="vacuum-for-wraparound"> <sect2 id="vacuum-for-wraparound">
<title>Preventing transaction ID wraparound failures</title> <title>Preventing transaction ID wraparound failures</title>
<indexterm zone="vacuum-for-wraparound">
<primary>transaction ID</primary>
<secondary>wraparound</secondary>
</indexterm>
<para> <para>
<productname>PostgreSQL</productname>'s MVCC transaction semantics <productname>PostgreSQL</productname>'s MVCC transaction semantics
depend on being able to compare transaction ID (<firstterm>XID</>) depend on being able to compare transaction ID (<firstterm>XID</>)
......
<!-- <!--
$Header: /cvsroot/pgsql/doc/src/sgml/manage-ag.sgml,v 2.16 2001/10/09 18:46:00 petere Exp $ $Header: /cvsroot/pgsql/doc/src/sgml/manage-ag.sgml,v 2.17 2001/11/12 19:19:39 petere Exp $
--> -->
<chapter id="managing-databases"> <chapter id="managing-databases">
<title>Managing Databases</title> <title>Managing Databases</title>
<indexterm zone="managing-databases"><primary>database</></>
<para> <para>
A database is a named collection of SQL objects (<quote>database A database is a named collection of SQL objects (<quote>database
objects</quote>); every database object (tables, function, etc.) objects</quote>); every database object (tables, function, etc.)
...@@ -53,7 +55,7 @@ CREATE DATABASE <replaceable>name</> ...@@ -53,7 +55,7 @@ CREATE DATABASE <replaceable>name</>
</para> </para>
<formalpara> <formalpara>
<title>Bootstrapping</title> <title>Bootstrapping:</title>
<para> <para>
Since you need to be connected to the database server in order to Since you need to be connected to the database server in order to
execute the <command>CREATE DATABASE</command> command, the execute the <command>CREATE DATABASE</command> command, the
...@@ -140,6 +142,7 @@ setenv PGDATA2 /home/postgres/data ...@@ -140,6 +142,7 @@ setenv PGDATA2 /home/postgres/data
</para> </para>
<para> <para>
<indexterm><primary>initlocation</></>
To create a data storage area in <envar>PGDATA2</>, ensure that To create a data storage area in <envar>PGDATA2</>, ensure that
<filename>/home/postgres</filename> already exists and is writable <filename>/home/postgres</filename> already exists and is writable
by the user account that runs the server (see <xref by the user account that runs the server (see <xref
......
<!-- <!--
$Header: /cvsroot/pgsql/doc/src/sgml/monitoring.sgml,v 1.3 2001/11/08 23:39:22 petere Exp $ $Header: /cvsroot/pgsql/doc/src/sgml/monitoring.sgml,v 1.4 2001/11/12 19:19:39 petere Exp $
--> -->
<chapter id="monitoring"> <chapter id="monitoring">
...@@ -27,6 +27,11 @@ $Header: /cvsroot/pgsql/doc/src/sgml/monitoring.sgml,v 1.3 2001/11/08 23:39:22 p ...@@ -27,6 +27,11 @@ $Header: /cvsroot/pgsql/doc/src/sgml/monitoring.sgml,v 1.3 2001/11/08 23:39:22 p
<sect1 id="monitoring-ps"> <sect1 id="monitoring-ps">
<title>Standard Unix Tools</Title> <title>Standard Unix Tools</Title>
<indexterm zone="monitoring-ps">
<primary>ps</primary>
<secondary>to monitor activity</secondary>
</indexterm>
<para> <para>
On most platforms, <productname>PostgreSQL</productname> modifies its On most platforms, <productname>PostgreSQL</productname> modifies its
command title as reported by <command>ps</>, so that individual server command title as reported by <command>ps</>, so that individual server
...@@ -72,6 +77,10 @@ postgres: <replaceable>user</> <replaceable>database</> <replaceable>host</> <re ...@@ -72,6 +77,10 @@ postgres: <replaceable>user</> <replaceable>database</> <replaceable>host</> <re
<sect1 id="monitoring-stats"> <sect1 id="monitoring-stats">
<title>Statistics Collector</Title> <title>Statistics Collector</Title>
<indexterm zone="monitoring-stats">
<primary>statistics</primary>
</indexterm>
<para> <para>
<productname>PostgreSQL</productname>'s <firstterm>statistics collector</> <productname>PostgreSQL</productname>'s <firstterm>statistics collector</>
is a subsystem that supports collection and reporting of information about is a subsystem that supports collection and reporting of information about
......
<!-- <!--
$Header: /cvsroot/pgsql/doc/src/sgml/Attic/odbc.sgml,v 1.26 2001/10/31 20:39:30 petere Exp $ $Header: /cvsroot/pgsql/doc/src/sgml/Attic/odbc.sgml,v 1.27 2001/11/12 19:19:39 petere Exp $
--> -->
<chapter id="odbc"> <chapter id="odbc">
...@@ -146,6 +146,7 @@ $Header: /cvsroot/pgsql/doc/src/sgml/Attic/odbc.sgml,v 1.26 2001/10/31 20:39:30 ...@@ -146,6 +146,7 @@ $Header: /cvsroot/pgsql/doc/src/sgml/Attic/odbc.sgml,v 1.26 2001/10/31 20:39:30
</para> </para>
<para> <para>
<indexterm><primary>odbc.sql</></>
Additionally, you should install the ODBC catalog extensions. That will Additionally, you should install the ODBC catalog extensions. That will
provide a number of functions mandated by the ODBC standard that are not provide a number of functions mandated by the ODBC standard that are not
supplied by <productname>PostgreSQL</> by default. The file supplied by <productname>PostgreSQL</> by default. The file
...@@ -166,6 +167,8 @@ psql -d template1 -f <replaceable>LOCATION</>/odbc.sql ...@@ -166,6 +167,8 @@ psql -d template1 -f <replaceable>LOCATION</>/odbc.sql
<sect1 id="odbc-config"> <sect1 id="odbc-config">
<title>Configuration Files</title> <title>Configuration Files</title>
<indexterm zone="odbc-config"><primary>.odbc.ini</></>
<para> <para>
<filename>~/.odbc.ini</filename> contains user-specified access information <filename>~/.odbc.ini</filename> contains user-specified access information
for the <productname>psqlODBC</productname> driver. for the <productname>psqlODBC</productname> driver.
...@@ -308,7 +311,7 @@ InstallDir = /opt/applix/axdata/axshlib ...@@ -308,7 +311,7 @@ InstallDir = /opt/applix/axdata/axshlib
<para> <para>
Playing around with MS Access will help you sort this out. Try using Playing around with MS Access will help you sort this out. Try using
<literal>File->Get External Data</literal>. <menuchoice><guimenu>File</><guimenuitem>Get External Data</></menuchoice>.
</para> </para>
<tip> <tip>
......
<!-- $Header: /cvsroot/pgsql/doc/src/sgml/plpython.sgml,v 1.4 2001/09/13 15:55:23 petere Exp $ --> <!-- $Header: /cvsroot/pgsql/doc/src/sgml/plpython.sgml,v 1.5 2001/11/12 19:19:39 petere Exp $ -->
<chapter id="plpython"> <chapter id="plpython">
<title>PL/Python - Python Procedural Language</title> <title>PL/Python - Python Procedural Language</title>
<indexterm zone="plpython"><primary>PL/Python</></>
<indexterm zone="plpython"><primary>Python</></>
<note> <note>
<para> <para>
This chapter is not fully developed yet. This chapter is not fully developed yet.
......
<!-- $Header: /cvsroot/pgsql/doc/src/sgml/rules.sgml,v 1.17 2001/09/13 15:55:23 petere Exp $ --> <!-- $Header: /cvsroot/pgsql/doc/src/sgml/rules.sgml,v 1.18 2001/11/12 19:19:39 petere Exp $ -->
<Chapter Id="rules"> <Chapter Id="rules">
<Title>The <ProductName>Postgres</ProductName> Rule System</Title> <Title>The Rule System</Title>
<indexterm zone="rules"> <indexterm zone="rules">
<primary>rules</primary> <primary>rules</primary>
...@@ -20,7 +20,7 @@ ...@@ -20,7 +20,7 @@
them. Some of these points and them. Some of these points and
the theoretical foundations of the <ProductName>Postgres</ProductName> the theoretical foundations of the <ProductName>Postgres</ProductName>
rule system can be found in rule system can be found in
[<XRef LinkEnd="STON90b" EndTerm="STON90b">]. <XRef LinkEnd="STON90b">.
</Para> </Para>
<Para> <Para>
...@@ -38,9 +38,9 @@ ...@@ -38,9 +38,9 @@
is very powerful, and can be used for many things such is very powerful, and can be used for many things such
as query language procedures, views, and versions. The as query language procedures, views, and versions. The
power of this rule system is discussed in power of this rule system is discussed in
[<XRef LinkEnd="ONG90" EndTerm="ONG90">] <XRef LinkEnd="ONG90">
as well as as well as
[<XRef LinkEnd="STON90b" EndTerm="STON90b">]. <XRef LinkEnd="STON90b">.
</para> </para>
<Sect1 id="querytree"> <Sect1 id="querytree">
<Title>What is a Query Tree?</Title> <Title>What is a Query Tree?</Title>
...@@ -110,6 +110,7 @@ ...@@ -110,6 +110,7 @@
<Term> <Term>
the range table the range table
</Term> </Term>
<indexterm><primary>range table</></>
<ListItem> <ListItem>
<Para> <Para>
The range table is a list of relations that are used in the query. The range table is a list of relations that are used in the query.
...@@ -264,6 +265,7 @@ ...@@ -264,6 +265,7 @@
<Sect1 id="rules-views"> <Sect1 id="rules-views">
<Title>Views and the Rule System</Title> <Title>Views and the Rule System</Title>
<indexterm zone="rules-views"><primary>rules</><secondary>and views</></>
<Sect2> <Sect2>
<Title>Implementation of Views in <ProductName>Postgres</ProductName></Title> <Title>Implementation of Views in <ProductName>Postgres</ProductName></Title>
...@@ -831,8 +833,9 @@ ...@@ -831,8 +833,9 @@
</Sect3> </Sect3>
</Sect2> </Sect2>
<Sect2> <Sect2 id="rules-views-update">
<Title>What about updating a view?</Title> <Title>What about updating a view?</Title>
<indexterm zone="rules-views-update"><primary>views</><secondary>updating</></>
<Para> <Para>
What happens if a view is named as the target relation for an INSERT, What happens if a view is named as the target relation for an INSERT,
...@@ -1688,15 +1691,15 @@ Merge Join ...@@ -1688,15 +1691,15 @@ Merge Join
I think there are only a few situations out in the real I think there are only a few situations out in the real
world, where such a construct is necessary. But world, where such a construct is necessary. But
it makes me feel comfortable that it works. it makes me feel comfortable that it works.
</Para>
<Note> <formalpara>
<Title>The truth is</Title> <Title>The truth is:</Title>
<Para> <Para>
Doing this I found one more bug while writing this document. Doing this I found one more bug while writing this document.
But after fixing that I was a little amazed that it works at all. But after fixing that I was a little amazed that it works at all.
</Para> </Para>
</Note> </formalpara>
</Para>
</Sect2> </Sect2>
</Sect1> </Sect1>
......
<!-- <!--
$Header: /cvsroot/pgsql/doc/src/sgml/runtime.sgml,v 1.93 2001/11/08 23:39:22 petere Exp $ $Header: /cvsroot/pgsql/doc/src/sgml/runtime.sgml,v 1.94 2001/11/12 19:19:39 petere Exp $
--> -->
<Chapter Id="runtime"> <Chapter Id="runtime">
...@@ -119,6 +119,7 @@ postgres&gt; <userinput>initdb -D /usr/local/pgsql/data</userinput> ...@@ -119,6 +119,7 @@ postgres&gt; <userinput>initdb -D /usr/local/pgsql/data</userinput>
</para> </para>
<para> <para>
<indexterm><primary>LC_COLLATE</></>
One surprise you might encounter while running <command>initdb</command> is One surprise you might encounter while running <command>initdb</command> is
a notice similar to this one: a notice similar to this one:
<screen> <screen>
...@@ -238,6 +239,7 @@ su -c 'pg_ctl start -D /usr/local/pgsql/data -l serverlog' postgres ...@@ -238,6 +239,7 @@ su -c 'pg_ctl start -D /usr/local/pgsql/data -l serverlog' postgres
For <productname>FreeBSD</productname>, take a look at the file For <productname>FreeBSD</productname>, take a look at the file
<filename>contrib/start-scripts/freebsd</filename> in the <filename>contrib/start-scripts/freebsd</filename> in the
<productname>PostgreSQL</productname> source distribution. <productname>PostgreSQL</productname> source distribution.
<indexterm><primary>FreeBSD</></>
</para> </para>
</listitem> </listitem>
...@@ -245,6 +247,7 @@ su -c 'pg_ctl start -D /usr/local/pgsql/data -l serverlog' postgres ...@@ -245,6 +247,7 @@ su -c 'pg_ctl start -D /usr/local/pgsql/data -l serverlog' postgres
<para> <para>
On <productname>OpenBSD</productname>, add the following lines On <productname>OpenBSD</productname>, add the following lines
to the file <filename>/etc/rc.local</filename>: to the file <filename>/etc/rc.local</filename>:
<indexterm><primary>OpenBSD</></>
<programlisting> <programlisting>
if [ -x /usr/local/pgsql/bin/pg_ctl -a -x /usr/local/pgsql/bin/postmaster ]; then if [ -x /usr/local/pgsql/bin/pg_ctl -a -x /usr/local/pgsql/bin/postmaster ]; then
su - -c '/usr/local/pgsql/bin/pg_ctl start -l /var/postgresql/log -s' postgres su - -c '/usr/local/pgsql/bin/pg_ctl start -l /var/postgresql/log -s' postgres
...@@ -257,6 +260,7 @@ fi ...@@ -257,6 +260,7 @@ fi
<listitem> <listitem>
<para> <para>
On <productname>Linux</productname> systems either add On <productname>Linux</productname> systems either add
<indexterm><primary>Linux</></>
<programlisting> <programlisting>
/usr/local/pgsql/bin/pg_ctl start -l logfile -D /usr/local/pgsql/data /usr/local/pgsql/bin/pg_ctl start -l logfile -D /usr/local/pgsql/data
</programlisting> </programlisting>
...@@ -274,6 +278,7 @@ fi ...@@ -274,6 +278,7 @@ fi
<productname>Linux</productname> start scripts, depending on <productname>Linux</productname> start scripts, depending on
preference, as an example and place the file at preference, as an example and place the file at
<filename>/usr/local/etc/rc.d/postgresql</filename>. <filename>/usr/local/etc/rc.d/postgresql</filename>.
<indexterm><primary>NetBSD</></>
</para> </para>
</listitem> </listitem>
...@@ -282,6 +287,7 @@ fi ...@@ -282,6 +287,7 @@ fi
On <productname>Solaris</productname>, create a file called On <productname>Solaris</productname>, create a file called
<filename>/etc/init.d/postgresql</filename> to contain the following <filename>/etc/init.d/postgresql</filename> to contain the following
single line: single line:
<indexterm><primary>Solaris</></>
<programlisting> <programlisting>
su - postgres -c "/usr/local/pgsql/bin/pg_ctl start -l logfile -D /usr/local/pgsql/data" su - postgres -c "/usr/local/pgsql/bin/pg_ctl start -l logfile -D /usr/local/pgsql/data"
</programlisting> </programlisting>
...@@ -1013,6 +1019,7 @@ env PGOPTIONS='-c geqo=off' psql ...@@ -1013,6 +1019,7 @@ env PGOPTIONS='-c geqo=off' psql
<variablelist> <variablelist>
<varlistentry> <varlistentry>
<term><varname>AUSTRALIAN_TIMEZONES</varname> (<type>bool</type>)</term> <term><varname>AUSTRALIAN_TIMEZONES</varname> (<type>bool</type>)</term>
<indexterm><primary>Australian time zones</></>
<listitem> <listitem>
<para> <para>
If set to true, <literal>CST</literal>, <literal>EST</literal>, If set to true, <literal>CST</literal>, <literal>EST</literal>,
...@@ -1025,6 +1032,7 @@ env PGOPTIONS='-c geqo=off' psql ...@@ -1025,6 +1032,7 @@ env PGOPTIONS='-c geqo=off' psql
<varlistentry> <varlistentry>
<term><varname>AUTHENTICATION_TIMEOUT</varname> (<type>integer</type>)</term> <term><varname>AUTHENTICATION_TIMEOUT</varname> (<type>integer</type>)</term>
<indexterm><primary>timeout</><secondary>authentication</></indexterm>
<listitem> <listitem>
<para> <para>
Maximum time to complete client authentication, in seconds. Maximum time to complete client authentication, in seconds.
...@@ -1042,6 +1050,10 @@ env PGOPTIONS='-c geqo=off' psql ...@@ -1042,6 +1050,10 @@ env PGOPTIONS='-c geqo=off' psql
<primary>deadlock</primary> <primary>deadlock</primary>
<secondary>timeout</secondary> <secondary>timeout</secondary>
</indexterm> </indexterm>
<indexterm>
<primary>timeout</primary>
<secondary>deadlock</secondary>
</indexterm>
<term><varname>DEADLOCK_TIMEOUT</varname> (<type>integer</type>)</term> <term><varname>DEADLOCK_TIMEOUT</varname> (<type>integer</type>)</term>
<listitem> <listitem>
...@@ -1091,6 +1103,8 @@ env PGOPTIONS='-c geqo=off' psql ...@@ -1091,6 +1103,8 @@ env PGOPTIONS='-c geqo=off' psql
<varlistentry> <varlistentry>
<term><varname>DYNAMIC_LIBRARY_PATH</varname> (<type>string</type>)</term> <term><varname>DYNAMIC_LIBRARY_PATH</varname> (<type>string</type>)</term>
<indexterm><primary>dynamic_library_path</></>
<indexterm><primary>dynamic loading</></>
<listitem> <listitem>
<para> <para>
If a dynamically loadable module needs to be opened and the If a dynamically loadable module needs to be opened and the
...@@ -1298,6 +1312,7 @@ dynamic_library_path = '/usr/local/lib/postgresql:/home/my_project/lib:$libdir' ...@@ -1298,6 +1312,7 @@ dynamic_library_path = '/usr/local/lib/postgresql:/home/my_project/lib:$libdir'
<varlistentry> <varlistentry>
<term><varname>PORT</varname> (<type>integer</type>)</term> <term><varname>PORT</varname> (<type>integer</type>)</term>
<indexterm><primary>port</></>
<listitem> <listitem>
<para> <para>
The TCP port the server listens on; 5432 by default. This The TCP port the server listens on; 5432 by default. This
...@@ -1351,6 +1366,7 @@ dynamic_library_path = '/usr/local/lib/postgresql:/home/my_project/lib:$libdir' ...@@ -1351,6 +1366,7 @@ dynamic_library_path = '/usr/local/lib/postgresql:/home/my_project/lib:$libdir'
<varlistentry> <varlistentry>
<term><varname>SQL_INHERITANCE</varname> (<type>bool</type>)</term> <term><varname>SQL_INHERITANCE</varname> (<type>bool</type>)</term>
<indexterm><primary>inheritance</></>
<listitem> <listitem>
<para> <para>
This controls the inheritance semantics, in particular whether This controls the inheritance semantics, in particular whether
...@@ -1395,6 +1411,7 @@ dynamic_library_path = '/usr/local/lib/postgresql:/home/my_project/lib:$libdir' ...@@ -1395,6 +1411,7 @@ dynamic_library_path = '/usr/local/lib/postgresql:/home/my_project/lib:$libdir'
<varlistentry> <varlistentry>
<term><varname>TRANSFORM_NULL_EQUALS</varname> (<type>boolean</type>)</term> <term><varname>TRANSFORM_NULL_EQUALS</varname> (<type>boolean</type>)</term>
<indexterm><primary>IS NULL</></>
<listitem> <listitem>
<para> <para>
When turned on, expressions of the form When turned on, expressions of the form
...@@ -1955,6 +1972,7 @@ dynamic_library_path = '/usr/local/lib/postgresql:/home/my_project/lib:$libdir' ...@@ -1955,6 +1972,7 @@ dynamic_library_path = '/usr/local/lib/postgresql:/home/my_project/lib:$libdir'
<varlistentry> <varlistentry>
<term><systemitem class="osname">BSD/OS</></term> <term><systemitem class="osname">BSD/OS</></term>
<indexterm><primary>BSD/OS</></>
<listitem> <listitem>
<formalpara> <formalpara>
<title>Shared Memory</> <title>Shared Memory</>
...@@ -2020,6 +2038,9 @@ options "SEMMNU=120" ...@@ -2020,6 +2038,9 @@ options "SEMMNU=120"
<term><systemitem class="osname">FreeBSD</></term> <term><systemitem class="osname">FreeBSD</></term>
<term><systemitem class="osname">NetBSD</></term> <term><systemitem class="osname">NetBSD</></term>
<term><systemitem class="osname">OpenBSD</></term> <term><systemitem class="osname">OpenBSD</></term>
<indexterm><primary>FreeBSD</></>
<indexterm><primary>NetBSD</></>
<indexterm><primary>OpenBSD</></>
<listitem> <listitem>
<para> <para>
The options <varname>SYSVSHM</> and <varname>SYSVSEM</> need The options <varname>SYSVSHM</> and <varname>SYSVSEM</> need
...@@ -2048,6 +2069,7 @@ options SEMMAP=256 ...@@ -2048,6 +2069,7 @@ options SEMMAP=256
<varlistentry> <varlistentry>
<term><systemitem class="osname">HP-UX</></term> <term><systemitem class="osname">HP-UX</></term>
<indexterm><primary>HP-UX</></>
<listitem> <listitem>
<para> <para>
The default settings tend to suffice for normal installations. The default settings tend to suffice for normal installations.
...@@ -2068,6 +2090,7 @@ options SEMMAP=256 ...@@ -2068,6 +2090,7 @@ options SEMMAP=256
<varlistentry> <varlistentry>
<term><systemitem class="osname">Linux</></term> <term><systemitem class="osname">Linux</></term>
<indexterm><primary>Linux</></>
<listitem> <listitem>
<para> <para>
The default shared memory limit (both The default shared memory limit (both
...@@ -2110,6 +2133,7 @@ kernel.shmmax = 134217728 ...@@ -2110,6 +2133,7 @@ kernel.shmmax = 134217728
<varlistentry> <varlistentry>
<term><systemitem class="osname">SCO OpenServer</></term> <term><systemitem class="osname">SCO OpenServer</></term>
<indexterm><primary>SCO OpenServer</></>
<listitem> <listitem>
<para> <para>
In the default configuration, only 512 kB of shared memory per In the default configuration, only 512 kB of shared memory per
...@@ -2137,6 +2161,7 @@ kernel.shmmax = 134217728 ...@@ -2137,6 +2161,7 @@ kernel.shmmax = 134217728
<varlistentry> <varlistentry>
<term><systemitem class="osname">Solaris</></term> <term><systemitem class="osname">Solaris</></term>
<indexterm><primary>Solaris</></>
<listitem> <listitem>
<para> <para>
At least in version 2.6, the maximum size of a shared memory At least in version 2.6, the maximum size of a shared memory
...@@ -2169,6 +2194,7 @@ set semsys:seminfo_semmsl=32 ...@@ -2169,6 +2194,7 @@ set semsys:seminfo_semmsl=32
<varlistentry> <varlistentry>
<term><systemitem class="osname">UnixWare</></term> <term><systemitem class="osname">UnixWare</></term>
<indexterm><primary>Unixware</></>
<listitem> <listitem>
<para> <para>
On <productname>UnixWare</> 7, the maximum size for shared On <productname>UnixWare</> 7, the maximum size for shared
......
<!-- <!--
$Header: /cvsroot/pgsql/doc/src/sgml/xfunc.sgml,v 1.41 2001/11/01 04:07:29 tgl Exp $ $Header: /cvsroot/pgsql/doc/src/sgml/xfunc.sgml,v 1.42 2001/11/12 19:19:39 petere Exp $
--> -->
<chapter id="xfunc"> <chapter id="xfunc">
<title id="xfunc-title">Extending <acronym>SQL</acronym>: Functions</title> <title id="xfunc-title">Extending <acronym>SQL</acronym>: Functions</title>
<indexterm zone="xfunc"><primary>function</></>
<sect1 id="xfunc-intro"> <sect1 id="xfunc-intro">
<title>Introduction</title> <title>Introduction</title>
...@@ -70,6 +72,8 @@ $Header: /cvsroot/pgsql/doc/src/sgml/xfunc.sgml,v 1.41 2001/11/01 04:07:29 tgl E ...@@ -70,6 +72,8 @@ $Header: /cvsroot/pgsql/doc/src/sgml/xfunc.sgml,v 1.41 2001/11/01 04:07:29 tgl E
<sect1 id="xfunc-sql"> <sect1 id="xfunc-sql">
<title>Query Language (<acronym>SQL</acronym>) Functions</title> <title>Query Language (<acronym>SQL</acronym>) Functions</title>
<indexterm zone="xfunc-sql"><primary>function</><secondary>SQL</></>
<para> <para>
SQL functions execute an arbitrary list of SQL statements, returning SQL functions execute an arbitrary list of SQL statements, returning
the result of the last query in the list, which must be a the result of the last query in the list, which must be a
...@@ -83,6 +87,7 @@ $Header: /cvsroot/pgsql/doc/src/sgml/xfunc.sgml,v 1.41 2001/11/01 04:07:29 tgl E ...@@ -83,6 +87,7 @@ $Header: /cvsroot/pgsql/doc/src/sgml/xfunc.sgml,v 1.41 2001/11/01 04:07:29 tgl E
</para> </para>
<para> <para>
<indexterm><primary>SETOF</><seealso>function</></>
Alternatively, an SQL function may be declared to return a set, Alternatively, an SQL function may be declared to return a set,
by specifying the function's return type by specifying the function's return type
as <literal>SETOF</literal> <replaceable>sometype</>. In this case as <literal>SETOF</literal> <replaceable>sometype</>. In this case
...@@ -475,6 +480,8 @@ SELECT name, listchildren(name) FROM nodes; ...@@ -475,6 +480,8 @@ SELECT name, listchildren(name) FROM nodes;
<sect1 id="xfunc-internal"> <sect1 id="xfunc-internal">
<title>Internal Functions</title> <title>Internal Functions</title>
<indexterm zone="xfunc-internal"><primary>function</><secondary>internal</></>
<para> <para>
Internal functions are functions written in C that have been statically Internal functions are functions written in C that have been statically
linked into the <productname>PostgreSQL</productname> server. linked into the <productname>PostgreSQL</productname> server.
...@@ -569,7 +576,7 @@ CREATE FUNCTION square_root(double precision) RETURNS double precision ...@@ -569,7 +576,7 @@ CREATE FUNCTION square_root(double precision) RETURNS double precision
<para> <para>
If the name starts with the string <literal>$libdir</literal>, If the name starts with the string <literal>$libdir</literal>,
that part is replaced by the PostgreSQL package library directory that part is replaced by the PostgreSQL package library directory
name, which is determined at build time. name, which is determined at build time.<indexterm><primary>$libdir</></>
</para> </para>
</listitem> </listitem>
...@@ -577,7 +584,7 @@ CREATE FUNCTION square_root(double precision) RETURNS double precision ...@@ -577,7 +584,7 @@ CREATE FUNCTION square_root(double precision) RETURNS double precision
<para> <para>
If the name does not contain a directory part, the file is If the name does not contain a directory part, the file is
searched for in the path specified by the configuration variable searched for in the path specified by the configuration variable
<varname>dynamic_library_path</varname>. <varname>dynamic_library_path</varname>.<indexterm><primary>dynamic_library_path</></>
</para> </para>
</listitem> </listitem>
...@@ -1406,7 +1413,7 @@ LANGUAGE C; ...@@ -1406,7 +1413,7 @@ LANGUAGE C;
<itemizedlist> <itemizedlist>
<listitem> <listitem>
<para> <para>
Use <literal>pg_config --includedir-server</literal> to find Use <literal>pg_config --includedir-server</literal><indexterm><primary>pg_config</></> to find
out where the PostgreSQL server header files are installed on out where the PostgreSQL server header files are installed on
your system (or the system that your users will be running your system (or the system that your users will be running
on). This option is new with PostgreSQL 7.2. For PostgreSQL on). This option is new with PostgreSQL 7.2. For PostgreSQL
...@@ -1492,6 +1499,8 @@ LANGUAGE C; ...@@ -1492,6 +1499,8 @@ LANGUAGE C;
<sect1 id="xfunc-overload"> <sect1 id="xfunc-overload">
<title>Function Overloading</title> <title>Function Overloading</title>
<indexterm zone="xfunc-overload"><primary>overloading</></>
<para> <para>
More than one function may be defined with the same SQL name, so long More than one function may be defined with the same SQL name, so long
as the arguments they take are different. In other words, as the arguments they take are different. In other words,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment