Spellchecking run, final cleanups
This commit is contained in:
parent
1630571a04
commit
39dfbe5791
@ -1,4 +1,4 @@
|
|||||||
<!-- $PostgreSQL: pgsql/doc/src/sgml/array.sgml,v 1.45 2005/11/04 02:56:30 tgl Exp $ -->
|
<!-- $PostgreSQL: pgsql/doc/src/sgml/array.sgml,v 1.46 2005/11/04 23:13:59 petere Exp $ -->
|
||||||
|
|
||||||
<sect1 id="arrays">
|
<sect1 id="arrays">
|
||||||
<title>Arrays</title>
|
<title>Arrays</title>
|
||||||
@ -59,7 +59,7 @@ CREATE TABLE tictactoe (
|
|||||||
all considered to be of the same type, regardless of size or number
|
all considered to be of the same type, regardless of size or number
|
||||||
of dimensions. So, declaring number of dimensions or sizes in
|
of dimensions. So, declaring number of dimensions or sizes in
|
||||||
<command>CREATE TABLE</command> is simply documentation, it does not
|
<command>CREATE TABLE</command> is simply documentation, it does not
|
||||||
affect runtime behavior.
|
affect run-time behavior.
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
<para>
|
<para>
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<!--
|
<!--
|
||||||
$PostgreSQL: pgsql/doc/src/sgml/backup.sgml,v 2.74 2005/10/26 20:42:35 tgl Exp $
|
$PostgreSQL: pgsql/doc/src/sgml/backup.sgml,v 2.75 2005/11/04 23:13:59 petere Exp $
|
||||||
-->
|
-->
|
||||||
<chapter id="backup">
|
<chapter id="backup">
|
||||||
<title>Backup and Restore</title>
|
<title>Backup and Restore</title>
|
||||||
@ -598,7 +598,7 @@ archive_command = 'test ! -f .../%f && cp %p .../%f'
|
|||||||
</para>
|
</para>
|
||||||
|
|
||||||
<para>
|
<para>
|
||||||
In writing your archive command, you should assume that the filenames to
|
In writing your archive command, you should assume that the file names to
|
||||||
be archived may be up to 64 characters long and may contain any
|
be archived may be up to 64 characters long and may contain any
|
||||||
combination of ASCII letters, digits, and dots. It is not necessary to
|
combination of ASCII letters, digits, and dots. It is not necessary to
|
||||||
remember the original full path (<literal>%p</>) but it is necessary to
|
remember the original full path (<literal>%p</>) but it is necessary to
|
||||||
@ -1173,7 +1173,7 @@ restore_command = 'copy /mnt/server/archivedir/%f "%p"' # Windows
|
|||||||
the total volume of archived logs by turning off page snapshots
|
the total volume of archived logs by turning off page snapshots
|
||||||
using the <xref linkend="guc-full-page-writes"> parameter.
|
using the <xref linkend="guc-full-page-writes"> parameter.
|
||||||
(Read the notes and warnings in
|
(Read the notes and warnings in
|
||||||
<xref linkend="reliability"> before you do so.)
|
<xref linkend="wal"> before you do so.)
|
||||||
Turning off page snapshots does not prevent use of the logs for PITR
|
Turning off page snapshots does not prevent use of the logs for PITR
|
||||||
operations.
|
operations.
|
||||||
An area for future development is to compress archived WAL data by
|
An area for future development is to compress archived WAL data by
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
<!--
|
<!--
|
||||||
Documentation of the system catalogs, directed toward PostgreSQL developers
|
Documentation of the system catalogs, directed toward PostgreSQL developers
|
||||||
$PostgreSQL: pgsql/doc/src/sgml/catalogs.sgml,v 2.114 2005/09/13 01:51:18 alvherre Exp $
|
$PostgreSQL: pgsql/doc/src/sgml/catalogs.sgml,v 2.115 2005/11/04 23:13:59 petere Exp $
|
||||||
-->
|
-->
|
||||||
|
|
||||||
<chapter id="catalogs">
|
<chapter id="catalogs">
|
||||||
@ -5416,7 +5416,7 @@
|
|||||||
and <structfield>histogram_bounds</> arrays can be set on a
|
and <structfield>histogram_bounds</> arrays can be set on a
|
||||||
column-by-column basis using the <command>ALTER TABLE SET STATISTICS</>
|
column-by-column basis using the <command>ALTER TABLE SET STATISTICS</>
|
||||||
command, or globally by setting the
|
command, or globally by setting the
|
||||||
<xref linkend="guc-default-statistics-target"> runtime parameter.
|
<xref linkend="guc-default-statistics-target"> run-time parameter.
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
</sect1>
|
</sect1>
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
<!-- $PostgreSQL: pgsql/doc/src/sgml/charset.sgml,v 2.74 2005/10/13 21:43:43 tgl Exp $ -->
|
<!-- $PostgreSQL: pgsql/doc/src/sgml/charset.sgml,v 2.75 2005/11/04 23:13:59 petere Exp $ -->
|
||||||
|
|
||||||
<chapter id="charset">
|
<chapter id="charset">
|
||||||
<title>Localization</>
|
<title>Localization</>
|
||||||
@ -504,7 +504,7 @@ initdb --locale=sv_SE
|
|||||||
<row>
|
<row>
|
||||||
<entry><literal>MULE_INTERNAL</literal></entry>
|
<entry><literal>MULE_INTERNAL</literal></entry>
|
||||||
<entry>Mule internal code</entry>
|
<entry>Mule internal code</entry>
|
||||||
<entry>Multi-lingual Emacs</entry>
|
<entry>Multilingual Emacs</entry>
|
||||||
<entry>1-4</entry>
|
<entry>1-4</entry>
|
||||||
<entry></entry>
|
<entry></entry>
|
||||||
</row>
|
</row>
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<!--
|
<!--
|
||||||
$PostgreSQL: pgsql/doc/src/sgml/client-auth.sgml,v 1.85 2005/10/24 15:49:54 momjian Exp $
|
$PostgreSQL: pgsql/doc/src/sgml/client-auth.sgml,v 1.86 2005/11/04 23:13:59 petere Exp $
|
||||||
-->
|
-->
|
||||||
|
|
||||||
<chapter id="client-authentication">
|
<chapter id="client-authentication">
|
||||||
@ -901,7 +901,7 @@ omicron bryanh guest1
|
|||||||
default PAM service name is <literal>postgresql</literal>. You can
|
default PAM service name is <literal>postgresql</literal>. You can
|
||||||
optionally supply your own service name after the <literal>pam</>
|
optionally supply your own service name after the <literal>pam</>
|
||||||
key word in the file <filename>pg_hba.conf</filename>.
|
key word in the file <filename>pg_hba.conf</filename>.
|
||||||
PAM is used only to validate username/password pairs.
|
PAM is used only to validate user name/password pairs.
|
||||||
Therefore the user must already exist in the database before PAM
|
Therefore the user must already exist in the database before PAM
|
||||||
can be used for authentication. For more information about
|
can be used for authentication. For more information about
|
||||||
PAM, please read the <ulink url="http://www.kernel.org/pub/linux/libs/pam/">
|
PAM, please read the <ulink url="http://www.kernel.org/pub/linux/libs/pam/">
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<!--
|
<!--
|
||||||
$PostgreSQL: pgsql/doc/src/sgml/config.sgml,v 1.34 2005/11/01 23:19:05 neilc Exp $
|
$PostgreSQL: pgsql/doc/src/sgml/config.sgml,v 1.35 2005/11/04 23:13:59 petere Exp $
|
||||||
-->
|
-->
|
||||||
<chapter Id="runtime-config">
|
<chapter Id="runtime-config">
|
||||||
<title>Server Configuration</title>
|
<title>Server Configuration</title>
|
||||||
@ -21,7 +21,7 @@ $PostgreSQL: pgsql/doc/src/sgml/config.sgml,v 1.34 2005/11/01 23:19:05 neilc Exp
|
|||||||
|
|
||||||
<para>
|
<para>
|
||||||
All parameter names are case-insensitive. Every parameter takes a
|
All parameter names are case-insensitive. Every parameter takes a
|
||||||
value of one of four types: boolean, integer, floating point,
|
value of one of four types: Boolean, integer, floating point,
|
||||||
or string. Boolean values may be written as <literal>ON</literal>,
|
or string. Boolean values may be written as <literal>ON</literal>,
|
||||||
<literal>OFF</literal>, <literal>TRUE</literal>,
|
<literal>OFF</literal>, <literal>TRUE</literal>,
|
||||||
<literal>FALSE</literal>, <literal>YES</literal>,
|
<literal>FALSE</literal>, <literal>YES</literal>,
|
||||||
@ -456,9 +456,9 @@ SET ENABLE_SEQSCAN TO OFF;
|
|||||||
</indexterm>
|
</indexterm>
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>
|
<para>
|
||||||
On systems that support the TCP_KEEPIDLE socket option, specifies the
|
On systems that support the <symbol>TCP_KEEPIDLE</symbol> socket option, specifies the
|
||||||
number of seconds between sending keepalives on an otherwise idle
|
number of seconds between sending keepalives on an otherwise idle
|
||||||
connection. A value of 0 uses the system default. If TCP_KEEPIDLE is
|
connection. A value of 0 uses the system default. If <symbol>TCP_KEEPIDLE</symbol> is
|
||||||
not supported, this parameter must be 0. This option is ignored for
|
not supported, this parameter must be 0. This option is ignored for
|
||||||
connections made via a Unix-domain socket.
|
connections made via a Unix-domain socket.
|
||||||
</para>
|
</para>
|
||||||
@ -472,9 +472,9 @@ SET ENABLE_SEQSCAN TO OFF;
|
|||||||
</indexterm>
|
</indexterm>
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>
|
<para>
|
||||||
On systems that support the TCP_KEEPINTVL socket option, specifies how
|
On systems that support the <symbol>TCP_KEEPINTVL</symbol> socket option, specifies how
|
||||||
long, in seconds, to wait for a response to a keepalive before
|
long, in seconds, to wait for a response to a keepalive before
|
||||||
retransmitting. A value of 0 uses the system default. If TCP_KEEPINTVL
|
retransmitting. A value of 0 uses the system default. If <symbol>TCP_KEEPINTVL</symbol>
|
||||||
is not supported, this parameter must be 0. This option is ignored
|
is not supported, this parameter must be 0. This option is ignored
|
||||||
for connections made via a Unix-domain socket.
|
for connections made via a Unix-domain socket.
|
||||||
</para>
|
</para>
|
||||||
@ -488,9 +488,9 @@ SET ENABLE_SEQSCAN TO OFF;
|
|||||||
</indexterm>
|
</indexterm>
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>
|
<para>
|
||||||
On systems that support the TCP_KEEPCNT socket option, specifies how
|
On systems that support the <symbol>TCP_KEEPCNT</symbol> socket option, specifies how
|
||||||
many keepalives may be lost before the connection is considered dead.
|
many keepalives may be lost before the connection is considered dead.
|
||||||
A value of 0 uses the system default. If TCP_KEEPCNT is not
|
A value of 0 uses the system default. If <symbol>TCP_KEEPCNT</symbol> is not
|
||||||
supported, this parameter must be 0. This option is ignored
|
supported, this parameter must be 0. This option is ignored
|
||||||
for connections made via a Unix-domain socket.
|
for connections made via a Unix-domain socket.
|
||||||
</para>
|
</para>
|
||||||
@ -590,13 +590,13 @@ SET ENABLE_SEQSCAN TO OFF;
|
|||||||
</indexterm>
|
</indexterm>
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>
|
<para>
|
||||||
Sets the hostname part of the service principal.
|
Sets the host name part of the service principal.
|
||||||
This, combined with <varname>krb_srvname</>, is used to generate
|
This, combined with <varname>krb_srvname</>, is used to generate
|
||||||
the complete service principal, that is
|
the complete service principal, that is
|
||||||
<varname>krb_srvname</><literal>/</><varname>krb_server_hostname</><literal>@</>REALM.
|
<varname>krb_srvname</><literal>/</><varname>krb_server_hostname</><literal>@</>REALM.
|
||||||
</para>
|
</para>
|
||||||
<para>
|
<para>
|
||||||
If not set, the default is the server hostname. See <xref linkend="kerberos-auth">
|
If not set, the default is the server host name. See <xref linkend="kerberos-auth">
|
||||||
for details. This parameter can only be set at server start.
|
for details. This parameter can only be set at server start.
|
||||||
</para>
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
@ -609,7 +609,7 @@ SET ENABLE_SEQSCAN TO OFF;
|
|||||||
</indexterm>
|
</indexterm>
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>
|
<para>
|
||||||
Sets whether Kerberos usernames should be treated case-insensitively.
|
Sets whether Kerberos user names should be treated case-insensitively.
|
||||||
The default is <literal>off</> (case sensitive). This parameter
|
The default is <literal>off</> (case sensitive). This parameter
|
||||||
can only be set at server start.
|
can only be set at server start.
|
||||||
</para>
|
</para>
|
||||||
@ -2258,8 +2258,8 @@ SELECT * FROM parent WHERE key = 2400;
|
|||||||
<varname>log_rotation_age</varname> to <literal>60</literal>, and
|
<varname>log_rotation_age</varname> to <literal>60</literal>, and
|
||||||
<varname>log_rotation_size</varname> to <literal>1000000</literal>.
|
<varname>log_rotation_size</varname> to <literal>1000000</literal>.
|
||||||
Including <literal>%M</> in <varname>log_filename</varname> allows
|
Including <literal>%M</> in <varname>log_filename</varname> allows
|
||||||
any size-driven rotations that may occur to select a filename
|
any size-driven rotations that may occur to select a file name
|
||||||
different from the hour's initial filename.
|
different from the hour's initial file name.
|
||||||
</para>
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
@ -2663,7 +2663,7 @@ SELECT * FROM parent WHERE key = 2400;
|
|||||||
</row>
|
</row>
|
||||||
<row>
|
<row>
|
||||||
<entry><literal>%h</literal></entry>
|
<entry><literal>%h</literal></entry>
|
||||||
<entry>Remote Hostname or IP address</entry>
|
<entry>Remote host name or IP address</entry>
|
||||||
<entry>yes</entry>
|
<entry>yes</entry>
|
||||||
</row>
|
</row>
|
||||||
<row>
|
<row>
|
||||||
@ -2794,7 +2794,7 @@ SELECT * FROM parent WHERE key = 2400;
|
|||||||
</sect1>
|
</sect1>
|
||||||
|
|
||||||
<sect1 id="runtime-config-statistics">
|
<sect1 id="runtime-config-statistics">
|
||||||
<title>Runtime Statistics</title>
|
<title>Run-Time Statistics</title>
|
||||||
|
|
||||||
<sect2 id="runtime-config-statistics-monitor">
|
<sect2 id="runtime-config-statistics-monitor">
|
||||||
<title>Statistics Monitoring</title>
|
<title>Statistics Monitoring</title>
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<!--
|
<!--
|
||||||
$PostgreSQL: pgsql/doc/src/sgml/cvs.sgml,v 1.35 2005/10/15 20:15:48 neilc Exp $
|
$PostgreSQL: pgsql/doc/src/sgml/cvs.sgml,v 1.36 2005/11/04 23:13:59 petere Exp $
|
||||||
-->
|
-->
|
||||||
|
|
||||||
<appendix id="cvs">
|
<appendix id="cvs">
|
||||||
@ -64,9 +64,9 @@ $PostgreSQL: pgsql/doc/src/sgml/cvs.sgml,v 1.35 2005/10/15 20:15:48 neilc Exp $
|
|||||||
<para>
|
<para>
|
||||||
Do an initial login to the <productname>CVS</productname> server:
|
Do an initial login to the <productname>CVS</productname> server:
|
||||||
|
|
||||||
<programlisting>
|
<programlisting>
|
||||||
cvs -d :pserver:anoncvs@anoncvs.postgresql.org:/projects/cvsroot login
|
cvs -d :pserver:anoncvs@anoncvs.postgresql.org:/projects/cvsroot login
|
||||||
</programlisting>
|
</programlisting>
|
||||||
|
|
||||||
You will be prompted for a password; you can enter anything except
|
You will be prompted for a password; you can enter anything except
|
||||||
an empty string.
|
an empty string.
|
||||||
@ -81,9 +81,9 @@ cvs -d :pserver:anoncvs@anoncvs.postgresql.org:/projects/cvsroot login
|
|||||||
<step>
|
<step>
|
||||||
<para>
|
<para>
|
||||||
Fetch the <productname>PostgreSQL</productname> sources:
|
Fetch the <productname>PostgreSQL</productname> sources:
|
||||||
<programlisting>
|
<programlisting>
|
||||||
cvs -z3 -d :pserver:anoncvs@anoncvs.postgresql.org:/projects/cvsroot co -P pgsql
|
cvs -z3 -d :pserver:anoncvs@anoncvs.postgresql.org:/projects/cvsroot co -P pgsql
|
||||||
</programlisting>
|
</programlisting>
|
||||||
|
|
||||||
This installs the <productname>PostgreSQL</productname> sources into a
|
This installs the <productname>PostgreSQL</productname> sources into a
|
||||||
subdirectory <filename>pgsql</filename>
|
subdirectory <filename>pgsql</filename>
|
||||||
@ -113,9 +113,9 @@ cvs -z3 -d :pserver:anoncvs@anoncvs.postgresql.org:/projects/cvsroot co -P pgsql
|
|||||||
Whenever you want to update to the latest <productname>CVS</productname> sources,
|
Whenever you want to update to the latest <productname>CVS</productname> sources,
|
||||||
<command>cd</command> into
|
<command>cd</command> into
|
||||||
the <filename>pgsql</filename> subdirectory, and issue
|
the <filename>pgsql</filename> subdirectory, and issue
|
||||||
<programlisting>
|
<programlisting>
|
||||||
$ cvs -z3 update -d -P
|
cvs -z3 update -d -P
|
||||||
</programlisting>
|
</programlisting>
|
||||||
|
|
||||||
This will fetch only the changes since the last time you updated.
|
This will fetch only the changes since the last time you updated.
|
||||||
You can update in just a couple of minutes, typically, even over
|
You can update in just a couple of minutes, typically, even over
|
||||||
@ -128,17 +128,17 @@ $ cvs -z3 update -d -P
|
|||||||
You can save yourself some typing by making a file <filename>.cvsrc</filename>
|
You can save yourself some typing by making a file <filename>.cvsrc</filename>
|
||||||
in your home directory that contains
|
in your home directory that contains
|
||||||
|
|
||||||
<programlisting>
|
<programlisting>
|
||||||
cvs -z3
|
cvs -z3
|
||||||
update -d -P
|
update -d -P
|
||||||
</programlisting>
|
</programlisting>
|
||||||
|
|
||||||
This supplies the <option>-z3</option> option to all cvs commands, and the
|
This supplies the <option>-z3</option> option to all cvs commands, and the
|
||||||
<option>-d</option> and <option>-P</option> options to cvs update. Then you just have
|
<option>-d</option> and <option>-P</option> options to cvs update. Then you just have
|
||||||
to say
|
to say
|
||||||
<programlisting>
|
<programlisting>
|
||||||
$ cvs update
|
cvs update
|
||||||
</programlisting>
|
</programlisting>
|
||||||
|
|
||||||
to update your files.
|
to update your files.
|
||||||
</para>
|
</para>
|
||||||
@ -150,9 +150,9 @@ $ cvs update
|
|||||||
Some older versions of <productname>CVS</productname> have a bug that
|
Some older versions of <productname>CVS</productname> have a bug that
|
||||||
causes all checked-out files to be stored world-writable in your
|
causes all checked-out files to be stored world-writable in your
|
||||||
directory. If you see that this has happened, you can do something like
|
directory. If you see that this has happened, you can do something like
|
||||||
<programlisting>
|
<programlisting>
|
||||||
$ chmod -R go-w pgsql
|
chmod -R go-w pgsql
|
||||||
</programlisting>
|
</programlisting>
|
||||||
to set the permissions properly.
|
to set the permissions properly.
|
||||||
This bug is fixed as of
|
This bug is fixed as of
|
||||||
<productname>CVS</productname> version 1.9.28.
|
<productname>CVS</productname> version 1.9.28.
|
||||||
@ -191,9 +191,9 @@ $ chmod -R go-w pgsql
|
|||||||
sources that make up release 6_4 of the module `tc' at any time in the
|
sources that make up release 6_4 of the module `tc' at any time in the
|
||||||
future:
|
future:
|
||||||
|
|
||||||
<programlisting>
|
<programlisting>
|
||||||
$ cvs checkout -r REL6_4 tc
|
cvs checkout -r REL6_4 tc
|
||||||
</programlisting>
|
</programlisting>
|
||||||
|
|
||||||
This is useful, for instance, if someone claims that there is a bug in
|
This is useful, for instance, if someone claims that there is a bug in
|
||||||
that release, but you cannot find the bug in the current working copy.
|
that release, but you cannot find the bug in the current working copy.
|
||||||
@ -236,10 +236,10 @@ $ cvs checkout -r REL6_4 tc
|
|||||||
So, to create the 6.4 release
|
So, to create the 6.4 release
|
||||||
I did the following:
|
I did the following:
|
||||||
|
|
||||||
<programlisting>
|
<programlisting>
|
||||||
$ cd pgsql
|
cd pgsql
|
||||||
$ cvs tag -b REL6_4
|
cvs tag -b REL6_4
|
||||||
</programlisting>
|
</programlisting>
|
||||||
|
|
||||||
which will create the tag and the branch for the RELEASE tree.
|
which will create the tag and the branch for the RELEASE tree.
|
||||||
</para>
|
</para>
|
||||||
@ -250,12 +250,12 @@ $ cvs tag -b REL6_4
|
|||||||
First, create two subdirectories, RELEASE and CURRENT, so that you don't
|
First, create two subdirectories, RELEASE and CURRENT, so that you don't
|
||||||
mix up the two. Then do:
|
mix up the two. Then do:
|
||||||
|
|
||||||
<programlisting>
|
<programlisting>
|
||||||
cd RELEASE
|
cd RELEASE
|
||||||
cvs checkout -P -r REL6_4 pgsql
|
cvs checkout -P -r REL6_4 pgsql
|
||||||
cd ../CURRENT
|
cd ../CURRENT
|
||||||
cvs checkout -P pgsql
|
cvs checkout -P pgsql
|
||||||
</programlisting>
|
</programlisting>
|
||||||
|
|
||||||
which results in two directory trees, <filename>RELEASE/pgsql</filename> and
|
which results in two directory trees, <filename>RELEASE/pgsql</filename> and
|
||||||
<filename>CURRENT/pgsql</filename>. From that point on,
|
<filename>CURRENT/pgsql</filename>. From that point on,
|
||||||
@ -273,16 +273,16 @@ cvs checkout -P pgsql
|
|||||||
<para>
|
<para>
|
||||||
After you've done the initial checkout on a branch
|
After you've done the initial checkout on a branch
|
||||||
|
|
||||||
<programlisting>
|
<programlisting>
|
||||||
$ cvs checkout -r REL6_4
|
cvs checkout -r REL6_4
|
||||||
</programlisting>
|
</programlisting>
|
||||||
|
|
||||||
anything you do within that directory structure is restricted to that
|
anything you do within that directory structure is restricted to that
|
||||||
branch. If you apply a patch to that directory structure and do a
|
branch. If you apply a patch to that directory structure and do a
|
||||||
|
|
||||||
<programlisting>
|
<programlisting>
|
||||||
cvs commit
|
cvs commit
|
||||||
</programlisting>
|
</programlisting>
|
||||||
|
|
||||||
while inside of it, the patch is applied to the branch and
|
while inside of it, the patch is applied to the branch and
|
||||||
<emphasis>only</emphasis> the branch.
|
<emphasis>only</emphasis> the branch.
|
||||||
@ -333,9 +333,9 @@ cvs commit
|
|||||||
<filename>/opt/postgres/cvs/</filename>. If you intend to keep your
|
<filename>/opt/postgres/cvs/</filename>. If you intend to keep your
|
||||||
repository in <filename>/home/cvs/</filename>, then put
|
repository in <filename>/home/cvs/</filename>, then put
|
||||||
|
|
||||||
<programlisting>
|
<programlisting>
|
||||||
setenv CVSROOT /home/cvs
|
setenv CVSROOT /home/cvs
|
||||||
</programlisting>
|
</programlisting>
|
||||||
|
|
||||||
in your <filename>.cshrc</filename> file, or a similar line in
|
in your <filename>.cshrc</filename> file, or a similar line in
|
||||||
your <filename>.bashrc</filename> or
|
your <filename>.bashrc</filename> or
|
||||||
@ -347,18 +347,18 @@ setenv CVSROOT /home/cvs
|
|||||||
Once <envar>CVSROOT</envar> is set, then this can be done with a
|
Once <envar>CVSROOT</envar> is set, then this can be done with a
|
||||||
single command:
|
single command:
|
||||||
|
|
||||||
<programlisting>
|
<programlisting>
|
||||||
$ cvs init
|
cvs init
|
||||||
</programlisting>
|
</programlisting>
|
||||||
|
|
||||||
after which you should see at least a directory named
|
after which you should see at least a directory named
|
||||||
<filename>CVSROOT</filename> when listing the
|
<filename>CVSROOT</filename> when listing the
|
||||||
<envar>CVSROOT</envar> directory:
|
<envar>CVSROOT</envar> directory:
|
||||||
|
|
||||||
<programlisting>
|
<programlisting>
|
||||||
$ ls $CVSROOT
|
$ ls $CVSROOT
|
||||||
CVSROOT/
|
CVSROOT/
|
||||||
</programlisting>
|
</programlisting>
|
||||||
</para>
|
</para>
|
||||||
</sect2>
|
</sect2>
|
||||||
|
|
||||||
@ -370,16 +370,16 @@ CVSROOT/
|
|||||||
<application>cvsup</application> is in your path; on most systems
|
<application>cvsup</application> is in your path; on most systems
|
||||||
you can do this by typing
|
you can do this by typing
|
||||||
|
|
||||||
<programlisting>
|
<programlisting>
|
||||||
which cvsup
|
which cvsup
|
||||||
</programlisting>
|
</programlisting>
|
||||||
|
|
||||||
Then, simply run
|
Then, simply run
|
||||||
<application>cvsup</application> using:
|
<application>cvsup</application> using:
|
||||||
|
|
||||||
<programlisting>
|
<programlisting>
|
||||||
$ cvsup -L 2 <replaceable class="parameter">postgres.cvsup</replaceable>
|
cvsup -L 2 <replaceable class="parameter">postgres.cvsup</replaceable>
|
||||||
</programlisting>
|
</programlisting>
|
||||||
|
|
||||||
where <option>-L 2</option> enables some status messages so you
|
where <option>-L 2</option> enables some status messages so you
|
||||||
can monitor the progress of the update,
|
can monitor the progress of the update,
|
||||||
@ -393,7 +393,7 @@ $ cvsup -L 2 <replaceable class="parameter">postgres.cvsup</replaceable>
|
|||||||
modified for a specific installation, and which maintains a full
|
modified for a specific installation, and which maintains a full
|
||||||
local <productname>CVS</productname> repository:
|
local <productname>CVS</productname> repository:
|
||||||
|
|
||||||
<programlisting>
|
<programlisting>
|
||||||
# This file represents the standard CVSup distribution file
|
# This file represents the standard CVSup distribution file
|
||||||
# for the <productname>PostgreSQL</> ORDBMS project
|
# for the <productname>PostgreSQL</> ORDBMS project
|
||||||
# Modified by lockhart@fourpalms.org 1997-08-28
|
# Modified by lockhart@fourpalms.org 1997-08-28
|
||||||
@ -426,8 +426,7 @@ pgsql
|
|||||||
# pgsql-doc
|
# pgsql-doc
|
||||||
# pgsql-perl5
|
# pgsql-perl5
|
||||||
# pgsql-src
|
# pgsql-src
|
||||||
|
</programlisting>
|
||||||
</programlisting>
|
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
<para>
|
<para>
|
||||||
@ -454,7 +453,7 @@ CVSROOT/loginfo*
|
|||||||
ftp site</ulink>
|
ftp site</ulink>
|
||||||
which will fetch the current snapshot only:
|
which will fetch the current snapshot only:
|
||||||
|
|
||||||
<programlisting>
|
<programlisting>
|
||||||
# This file represents the standard CVSup distribution file
|
# This file represents the standard CVSup distribution file
|
||||||
# for the <productname>PostgreSQL</> ORDBMS project
|
# for the <productname>PostgreSQL</> ORDBMS project
|
||||||
#
|
#
|
||||||
@ -478,8 +477,7 @@ pgsql
|
|||||||
# pgsql-doc
|
# pgsql-doc
|
||||||
# pgsql-perl5
|
# pgsql-perl5
|
||||||
# pgsql-src
|
# pgsql-src
|
||||||
|
</programlisting>
|
||||||
</programlisting>
|
|
||||||
</para>
|
</para>
|
||||||
</sect2>
|
</sect2>
|
||||||
|
|
||||||
@ -563,11 +561,11 @@ pgsql
|
|||||||
If the binary is in the top level of the tar file, then simply
|
If the binary is in the top level of the tar file, then simply
|
||||||
unpack the tar file into your target directory:
|
unpack the tar file into your target directory:
|
||||||
|
|
||||||
<programlisting>
|
<programlisting>
|
||||||
$ cd /usr/local/bin
|
cd /usr/local/bin
|
||||||
$ tar zxvf /usr/local/src/cvsup-16.0-linux-i386.tar.gz
|
tar zxvf /usr/local/src/cvsup-16.0-linux-i386.tar.gz
|
||||||
$ mv cvsup.1 ../doc/man/man1/
|
mv cvsup.1 ../doc/man/man1/
|
||||||
</programlisting>
|
</programlisting>
|
||||||
</para>
|
</para>
|
||||||
</step>
|
</step>
|
||||||
|
|
||||||
@ -585,13 +583,13 @@ $ mv cvsup.1 ../doc/man/man1/
|
|||||||
<para>
|
<para>
|
||||||
Ensure that the new binaries are in your path.
|
Ensure that the new binaries are in your path.
|
||||||
|
|
||||||
<programlisting>
|
<programlisting>
|
||||||
$ rehash
|
$ rehash
|
||||||
$ which cvsup
|
$ which cvsup
|
||||||
$ set path=(<replaceable>path to cvsup</replaceable> $path)
|
$ set path=(<replaceable>path to cvsup</replaceable> $path)
|
||||||
$ which cvsup
|
$ which cvsup
|
||||||
/usr/local/bin/cvsup
|
/usr/local/bin/cvsup
|
||||||
</programlisting>
|
</programlisting>
|
||||||
</para>
|
</para>
|
||||||
</step>
|
</step>
|
||||||
</procedure>
|
</procedure>
|
||||||
@ -651,9 +649,9 @@ $ which cvsup
|
|||||||
<para>
|
<para>
|
||||||
Install the Modula-3 rpms:
|
Install the Modula-3 rpms:
|
||||||
|
|
||||||
<programlisting>
|
<programlisting>
|
||||||
# rpm -Uvh pm3*.rpm
|
# rpm -Uvh pm3*.rpm
|
||||||
</programlisting>
|
</programlisting>
|
||||||
</para>
|
</para>
|
||||||
</step>
|
</step>
|
||||||
</substeps>
|
</substeps>
|
||||||
@ -663,10 +661,10 @@ $ which cvsup
|
|||||||
<para>
|
<para>
|
||||||
Unpack the cvsup distribution:
|
Unpack the cvsup distribution:
|
||||||
|
|
||||||
<programlisting>
|
<programlisting>
|
||||||
# cd /usr/local/src
|
# cd /usr/local/src
|
||||||
# tar zxf cvsup-16.0.tar.gz
|
# tar zxf cvsup-16.0.tar.gz
|
||||||
</programlisting>
|
</programlisting>
|
||||||
</para>
|
</para>
|
||||||
</step>
|
</step>
|
||||||
|
|
||||||
@ -675,16 +673,16 @@ $ which cvsup
|
|||||||
Build the cvsup distribution, suppressing the GUI interface
|
Build the cvsup distribution, suppressing the GUI interface
|
||||||
feature to avoid requiring X11 libraries:
|
feature to avoid requiring X11 libraries:
|
||||||
|
|
||||||
<programlisting>
|
<programlisting>
|
||||||
# make M3FLAGS="-DNOGUI"
|
# make M3FLAGS="-DNOGUI"
|
||||||
</programlisting>
|
</programlisting>
|
||||||
|
|
||||||
and if you want to build a static binary to move to systems
|
and if you want to build a static binary to move to systems
|
||||||
that may not have Modula-3 installed, try:
|
that may not have Modula-3 installed, try:
|
||||||
|
|
||||||
<programlisting>
|
<programlisting>
|
||||||
# make M3FLAGS="-DNOGUI -DSTATIC"
|
# make M3FLAGS="-DNOGUI -DSTATIC"
|
||||||
</programlisting>
|
</programlisting>
|
||||||
</para>
|
</para>
|
||||||
</step>
|
</step>
|
||||||
|
|
||||||
@ -692,29 +690,12 @@ $ which cvsup
|
|||||||
<para>
|
<para>
|
||||||
Install the built binary:
|
Install the built binary:
|
||||||
|
|
||||||
<programlisting>
|
<programlisting>
|
||||||
# make M3FLAGS="-DNOGUI -DSTATIC" install
|
# make M3FLAGS="-DNOGUI -DSTATIC" install
|
||||||
</programlisting>
|
</programlisting>
|
||||||
</para>
|
</para>
|
||||||
</step>
|
</step>
|
||||||
</procedure>
|
</procedure>
|
||||||
</sect2>
|
</sect2>
|
||||||
</sect1>
|
</sect1>
|
||||||
</appendix>
|
</appendix>
|
||||||
|
|
||||||
<!-- Keep this comment at the end of the file
|
|
||||||
Local variables:
|
|
||||||
mode:sgml
|
|
||||||
sgml-omittag:nil
|
|
||||||
sgml-shorttag:t
|
|
||||||
sgml-minimize-attributes:nil
|
|
||||||
sgml-always-quote-attributes:t
|
|
||||||
sgml-indent-step:1
|
|
||||||
sgml-indent-data:t
|
|
||||||
sgml-parent-document:nil
|
|
||||||
sgml-default-dtd-file:"./reference.ced"
|
|
||||||
sgml-exposed-tags:nil
|
|
||||||
sgml-local-catalogs:("/usr/lib/sgml/catalog")
|
|
||||||
sgml-local-ecat-files:nil
|
|
||||||
End:
|
|
||||||
-->
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
<!-- $PostgreSQL: pgsql/doc/src/sgml/ddl.sgml,v 1.48 2005/11/04 02:56:30 tgl Exp $ -->
|
<!-- $PostgreSQL: pgsql/doc/src/sgml/ddl.sgml,v 1.49 2005/11/04 23:13:59 petere Exp $ -->
|
||||||
|
|
||||||
<chapter id="ddl">
|
<chapter id="ddl">
|
||||||
<title>Data Definition</title>
|
<title>Data Definition</title>
|
||||||
@ -202,7 +202,7 @@ CREATE TABLE products (
|
|||||||
The default value may be an expression, which will be
|
The default value may be an expression, which will be
|
||||||
evaluated whenever the default value is inserted
|
evaluated whenever the default value is inserted
|
||||||
(<emphasis>not</emphasis> when the table is created). A common example
|
(<emphasis>not</emphasis> when the table is created). A common example
|
||||||
is that a timestamp column may have a default of <literal>now()</>,
|
is that a <type>timestamp</type> column may have a default of <literal>now()</>,
|
||||||
so that it gets set to the time of row insertion. Another common
|
so that it gets set to the time of row insertion. Another common
|
||||||
example is generating a <quote>serial number</> for each row.
|
example is generating a <quote>serial number</> for each row.
|
||||||
In <productname>PostgreSQL</productname> this is typically done by
|
In <productname>PostgreSQL</productname> this is typically done by
|
||||||
@ -1157,7 +1157,7 @@ SELECT name, altitude
|
|||||||
</note>
|
</note>
|
||||||
|
|
||||||
<para>
|
<para>
|
||||||
Inheritance does not automatically propogate data from
|
Inheritance does not automatically propagate data from
|
||||||
<command>INSERT</command> or <command>COPY</command> commands to
|
<command>INSERT</command> or <command>COPY</command> commands to
|
||||||
other tables in the inheritance hierarchy. In our example, the
|
other tables in the inheritance hierarchy. In our example, the
|
||||||
following <command>INSERT</command> statement will fail:
|
following <command>INSERT</command> statement will fail:
|
||||||
@ -1221,12 +1221,12 @@ WHERE c.altitude > 500 and c.tableoid = p.oid;
|
|||||||
<para>
|
<para>
|
||||||
As shown above, a child table may locally define columns as well as
|
As shown above, a child table may locally define columns as well as
|
||||||
inheriting them from their parents. However, a locally defined
|
inheriting them from their parents. However, a locally defined
|
||||||
column cannot override the datatype of an inherited column of the
|
column cannot override the data type of an inherited column of the
|
||||||
same name. A table can inherit from a table that has itself
|
same name. A table can inherit from a table that has itself
|
||||||
inherited from other tables. A table can also inherit from more
|
inherited from other tables. A table can also inherit from more
|
||||||
than one parent table, in which case it inherits the union of the
|
than one parent table, in which case it inherits the union of the
|
||||||
columns defined by the parent tables. Inherited columns with
|
columns defined by the parent tables. Inherited columns with
|
||||||
duplicate names and datatypes will be merged so that only a single
|
duplicate names and data types will be merged so that only a single
|
||||||
column is stored.
|
column is stored.
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
@ -1498,7 +1498,7 @@ CHECK ( county IN ( 'Oxfordshire','Buckinghamshire','Warwickshire' ))
|
|||||||
CHECK ( outletID BETWEEN 1 AND 99 )
|
CHECK ( outletID BETWEEN 1 AND 99 )
|
||||||
</programlisting>
|
</programlisting>
|
||||||
|
|
||||||
These can be linked together with the boolean operators
|
These can be linked together with the Boolean operators
|
||||||
<literal>AND</literal> and <literal>OR</literal> to form
|
<literal>AND</literal> and <literal>OR</literal> to form
|
||||||
complex constraints. Note that there is no difference in
|
complex constraints. Note that there is no difference in
|
||||||
syntax between range and list partitioning; those terms are
|
syntax between range and list partitioning; those terms are
|
||||||
@ -1722,10 +1722,10 @@ DO INSTEAD
|
|||||||
|
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>
|
<para>
|
||||||
For some datatypes you must explicitly coerce the constant
|
For some data types you must explicitly coerce the constant
|
||||||
values into the datatype of the column. The following constraint
|
values into the data type of the column. The following constraint
|
||||||
will work if <varname>x</varname> is an <type>integer</type>
|
will work if <varname>x</varname> is an <type>integer</type>
|
||||||
datatype, but not if <varname>x</varname> is a
|
data type, but not if <varname>x</varname> is a
|
||||||
<type>bigint</type>:
|
<type>bigint</type>:
|
||||||
<programlisting>
|
<programlisting>
|
||||||
CHECK ( x = 1 )
|
CHECK ( x = 1 )
|
||||||
@ -1734,9 +1734,9 @@ CHECK ( x = 1 )
|
|||||||
<programlisting>
|
<programlisting>
|
||||||
CHECK ( x = 1::bigint )
|
CHECK ( x = 1::bigint )
|
||||||
</programlisting>
|
</programlisting>
|
||||||
The problem is not limited to the <type>bigint</type> datatype
|
The problem is not limited to the <type>bigint</type> data type
|
||||||
— it can occur whenever the default datatype of the
|
— it can occur whenever the default data type of the
|
||||||
constant does not match the datatype of the column to which it
|
constant does not match the data type of the column to which it
|
||||||
is being compared.
|
is being compared.
|
||||||
</para>
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
@ -1849,7 +1849,7 @@ ANALYZE measurement;
|
|||||||
<listitem>
|
<listitem>
|
||||||
<para>
|
<para>
|
||||||
Constraint exclusion only works when the query directly matches
|
Constraint exclusion only works when the query directly matches
|
||||||
a constant. A constant bound to a parameterised query will not
|
a constant. A constant bound to a parameterized query will not
|
||||||
work in the same way since the plan is fixed and would need to
|
work in the same way since the plan is fixed and would need to
|
||||||
vary with each execution. Also, stable constants such as
|
vary with each execution. Also, stable constants such as
|
||||||
<literal>CURRENT_DATE</literal> may not be used, since these are
|
<literal>CURRENT_DATE</literal> may not be used, since these are
|
||||||
@ -1860,8 +1860,8 @@ ANALYZE measurement;
|
|||||||
|
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>
|
<para>
|
||||||
UPDATEs and DELETEs against the master table do not perform
|
<command>UPDATE</command> and <command>DELETE</command> commands
|
||||||
constraint exclusion.
|
against the master table do not perform constraint exclusion.
|
||||||
</para>
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<!--
|
<!--
|
||||||
$PostgreSQL: pgsql/doc/src/sgml/ecpg.sgml,v 1.70 2005/11/04 02:56:30 tgl Exp $
|
$PostgreSQL: pgsql/doc/src/sgml/ecpg.sgml,v 1.71 2005/11/04 23:13:59 petere Exp $
|
||||||
-->
|
-->
|
||||||
|
|
||||||
<chapter id="ecpg">
|
<chapter id="ecpg">
|
||||||
@ -1609,11 +1609,11 @@ ECPG = ecpg
|
|||||||
</para>
|
</para>
|
||||||
<note>
|
<note>
|
||||||
<para>
|
<para>
|
||||||
On Win32, if the <application>ecpg</> libraries and an application are
|
On Windows, if the <application>ecpg</> libraries and an application are
|
||||||
compiled with different flags, this function call will crash the
|
compiled with different flags, this function call will crash the
|
||||||
application because the internal representation of the
|
application because the internal representation of the
|
||||||
<literal>FILE</> pointers differ. Specifically,
|
<literal>FILE</> pointers differ. Specifically,
|
||||||
multi-threaded/single-threaded, release/debug, and static/dynamic
|
multithreaded/single-threaded, release/debug, and static/dynamic
|
||||||
flags should be the same for the library and all applications using
|
flags should be the same for the library and all applications using
|
||||||
that library.
|
that library.
|
||||||
</para>
|
</para>
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<!--
|
<!--
|
||||||
$PostgreSQL: pgsql/doc/src/sgml/func.sgml,v 1.290 2005/11/04 02:56:30 tgl Exp $
|
$PostgreSQL: pgsql/doc/src/sgml/func.sgml,v 1.291 2005/11/04 23:13:59 petere Exp $
|
||||||
PostgreSQL documentation
|
PostgreSQL documentation
|
||||||
-->
|
-->
|
||||||
|
|
||||||
@ -3430,7 +3430,7 @@ regexp_replace('foobarbaz', 'b(..)', 'X\\1Y', 'g')
|
|||||||
|
|
||||||
<note>
|
<note>
|
||||||
<para>
|
<para>
|
||||||
<productname>PostgreSQL</> currently has no multi-character collating
|
<productname>PostgreSQL</> currently has no multicharacter collating
|
||||||
elements. This information describes possible future behavior.
|
elements. This information describes possible future behavior.
|
||||||
</para>
|
</para>
|
||||||
</note>
|
</note>
|
||||||
@ -3820,7 +3820,7 @@ regexp_replace('foobarbaz', 'b(..)', 'X\\1Y', 'g')
|
|||||||
A leading zero always indicates an octal escape.
|
A leading zero always indicates an octal escape.
|
||||||
A single non-zero digit, not followed by another digit,
|
A single non-zero digit, not followed by another digit,
|
||||||
is always taken as a back reference.
|
is always taken as a back reference.
|
||||||
A multi-digit sequence not starting with a zero is taken as a back
|
A multidigit sequence not starting with a zero is taken as a back
|
||||||
reference if it comes after a suitable subexpression
|
reference if it comes after a suitable subexpression
|
||||||
(i.e. the number is in the legal range for a back reference),
|
(i.e. the number is in the legal range for a back reference),
|
||||||
and otherwise is taken as octal.
|
and otherwise is taken as octal.
|
||||||
@ -3970,7 +3970,7 @@ regexp_replace('foobarbaz', 'b(..)', 'X\\1Y', 'g')
|
|||||||
</listitem>
|
</listitem>
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>
|
<para>
|
||||||
white space and comments cannot appear within multi-character symbols,
|
white space and comments cannot appear within multicharacter symbols,
|
||||||
such as <literal>(?:</>
|
such as <literal>(?:</>
|
||||||
</para>
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
@ -3986,7 +3986,7 @@ regexp_replace('foobarbaz', 'b(..)', 'X\\1Y', 'g')
|
|||||||
(where <replaceable>ttt</> is any text not containing a <literal>)</>)
|
(where <replaceable>ttt</> is any text not containing a <literal>)</>)
|
||||||
is a comment, completely ignored.
|
is a comment, completely ignored.
|
||||||
Again, this is not allowed between the characters of
|
Again, this is not allowed between the characters of
|
||||||
multi-character symbols, like <literal>(?:</>.
|
multicharacter symbols, like <literal>(?:</>.
|
||||||
Such comments are more a historical artifact than a useful facility,
|
Such comments are more a historical artifact than a useful facility,
|
||||||
and their use is deprecated; use the expanded syntax instead.
|
and their use is deprecated; use the expanded syntax instead.
|
||||||
</para>
|
</para>
|
||||||
@ -5954,7 +5954,7 @@ SELECT date_trunc('year', TIMESTAMP '2001-02-16 20:38:40');
|
|||||||
<literal><type>timestamp without time zone</type> AT TIME ZONE <replaceable>zone</></literal>
|
<literal><type>timestamp without time zone</type> AT TIME ZONE <replaceable>zone</></literal>
|
||||||
</entry>
|
</entry>
|
||||||
<entry><type>timestamp with time zone</type></entry>
|
<entry><type>timestamp with time zone</type></entry>
|
||||||
<entry>Treat given timestamp <emphasis>without time zone</> as located in the specified time zone</entry>
|
<entry>Treat given time stamp <emphasis>without time zone</> as located in the specified time zone</entry>
|
||||||
</row>
|
</row>
|
||||||
|
|
||||||
<row>
|
<row>
|
||||||
@ -5962,7 +5962,7 @@ SELECT date_trunc('year', TIMESTAMP '2001-02-16 20:38:40');
|
|||||||
<literal><type>timestamp with time zone</type> AT TIME ZONE <replaceable>zone</></literal>
|
<literal><type>timestamp with time zone</type> AT TIME ZONE <replaceable>zone</></literal>
|
||||||
</entry>
|
</entry>
|
||||||
<entry><type>timestamp without time zone</type></entry>
|
<entry><type>timestamp without time zone</type></entry>
|
||||||
<entry>Convert given timestamp <emphasis>with time zone</> to the new time zone</entry>
|
<entry>Convert given time stamp <emphasis>with time zone</> to the new time zone</entry>
|
||||||
</row>
|
</row>
|
||||||
|
|
||||||
<row>
|
<row>
|
||||||
@ -6568,7 +6568,7 @@ SELECT TIMESTAMP 'now'; -- incorrect for use with DEFAULT
|
|||||||
<row>
|
<row>
|
||||||
<entry><literal><function>point</function>(<type>lseg</type>)</literal></entry>
|
<entry><literal><function>point</function>(<type>lseg</type>)</literal></entry>
|
||||||
<entry><type>point</type></entry>
|
<entry><type>point</type></entry>
|
||||||
<entry>center of lseg</entry>
|
<entry>center of line segment</entry>
|
||||||
<entry><literal>point(lseg '((-1,0),(1,0))')</literal></entry>
|
<entry><literal>point(lseg '((-1,0),(1,0))')</literal></entry>
|
||||||
</row>
|
</row>
|
||||||
<row>
|
<row>
|
||||||
@ -6929,7 +6929,7 @@ SELECT TIMESTAMP 'now'; -- incorrect for use with DEFAULT
|
|||||||
The sequence to be operated on by a sequence-function call is specified by
|
The sequence to be operated on by a sequence-function call is specified by
|
||||||
a <type>regclass</> argument, which is just the OID of the sequence in the
|
a <type>regclass</> argument, which is just the OID of the sequence in the
|
||||||
<structname>pg_class</> system catalog. You do not have to look up the
|
<structname>pg_class</> system catalog. You do not have to look up the
|
||||||
OID by hand, however, since the <type>regclass</> datatype's input
|
OID by hand, however, since the <type>regclass</> data type's input
|
||||||
converter will do the work for you. Just write the sequence name enclosed
|
converter will do the work for you. Just write the sequence name enclosed
|
||||||
in single quotes, so that it looks like a literal constant. To
|
in single quotes, so that it looks like a literal constant. To
|
||||||
achieve some compatibility with the handling of ordinary
|
achieve some compatibility with the handling of ordinary
|
||||||
@ -6955,7 +6955,7 @@ nextval('foo') <lineannotation>searches search path for <literal>fo
|
|||||||
Before <productname>PostgreSQL</productname> 8.1, the arguments of the
|
Before <productname>PostgreSQL</productname> 8.1, the arguments of the
|
||||||
sequence functions were of type <type>text</>, not <type>regclass</>, and
|
sequence functions were of type <type>text</>, not <type>regclass</>, and
|
||||||
the above-described conversion from a text string to an OID value would
|
the above-described conversion from a text string to an OID value would
|
||||||
happen at runtime during each call. For backwards compatibility, this
|
happen at run time during each call. For backwards compatibility, this
|
||||||
facility still exists, but internally it is now handled as an implicit
|
facility still exists, but internally it is now handled as an implicit
|
||||||
coercion from <type>text</> to <type>regclass</> before the function is
|
coercion from <type>text</> to <type>regclass</> before the function is
|
||||||
invoked.
|
invoked.
|
||||||
@ -6969,7 +6969,7 @@ nextval('foo') <lineannotation>searches search path for <literal>fo
|
|||||||
etc. This <quote>early binding</> behavior is usually desirable for
|
etc. This <quote>early binding</> behavior is usually desirable for
|
||||||
sequence references in column defaults and views. But sometimes you will
|
sequence references in column defaults and views. But sometimes you will
|
||||||
want <quote>late binding</> where the sequence reference is resolved
|
want <quote>late binding</> where the sequence reference is resolved
|
||||||
at runtime. To get late-binding behavior, force the constant to be
|
at run time. To get late-binding behavior, force the constant to be
|
||||||
stored as a <type>text</> constant instead of <type>regclass</>:
|
stored as a <type>text</> constant instead of <type>regclass</>:
|
||||||
<programlisting>
|
<programlisting>
|
||||||
nextval('foo'::text) <lineannotation><literal>foo</literal> is looked up at runtime</>
|
nextval('foo'::text) <lineannotation><literal>foo</literal> is looked up at runtime</>
|
||||||
@ -9444,7 +9444,7 @@ SELECT set_config('log_statement_stats', 'off', false);
|
|||||||
<literal><function>pg_rotate_logfile</function>()</literal>
|
<literal><function>pg_rotate_logfile</function>()</literal>
|
||||||
</entry>
|
</entry>
|
||||||
<entry><type>boolean</type></entry>
|
<entry><type>boolean</type></entry>
|
||||||
<entry>Rotate server's logfile</entry>
|
<entry>Rotate server's log file</entry>
|
||||||
</row>
|
</row>
|
||||||
</tbody>
|
</tbody>
|
||||||
</tgroup>
|
</tgroup>
|
||||||
@ -9472,10 +9472,10 @@ SELECT set_config('log_statement_stats', 'off', false);
|
|||||||
</para>
|
</para>
|
||||||
|
|
||||||
<para>
|
<para>
|
||||||
<function>pg_rotate_logfile</> signals the logfile manager to switch
|
<function>pg_rotate_logfile</> signals the log-file manager to switch
|
||||||
to a new output file immediately. This works only when
|
to a new output file immediately. This works only when
|
||||||
<varname>redirect_stderr</> is used for logging, since otherwise there
|
<varname>redirect_stderr</> is used for logging, since otherwise there
|
||||||
is no logfile manager subprocess.
|
is no log-file manager subprocess.
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
<indexterm zone="functions-admin">
|
<indexterm zone="functions-admin">
|
||||||
@ -9757,9 +9757,9 @@ SELECT set_config('log_statement_stats', 'off', false);
|
|||||||
</indexterm>
|
</indexterm>
|
||||||
<para>
|
<para>
|
||||||
<function>pg_stat_file</> returns a record containing the file
|
<function>pg_stat_file</> returns a record containing the file
|
||||||
size, last accessed timestamp, last modified timestamp,
|
size, last accessed time stamp, last modified time stamp,
|
||||||
last file status change timestamp (Unix platforms only),
|
last file status change time stamp (Unix platforms only),
|
||||||
file creation timestamp (Win32 only), and a boolean indicating
|
file creation timestamp (Windows only), and a <type>boolean</type> indicating
|
||||||
if it is a directory. Typical usages include:
|
if it is a directory. Typical usages include:
|
||||||
<programlisting>
|
<programlisting>
|
||||||
SELECT * FROM pg_stat_file('filename');
|
SELECT * FROM pg_stat_file('filename');
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<!--
|
<!--
|
||||||
$PostgreSQL: pgsql/doc/src/sgml/gist.sgml,v 1.23 2005/10/21 13:59:05 tgl Exp $
|
$PostgreSQL: pgsql/doc/src/sgml/gist.sgml,v 1.24 2005/11/04 23:14:00 petere Exp $
|
||||||
-->
|
-->
|
||||||
|
|
||||||
<chapter id="GiST">
|
<chapter id="GiST">
|
||||||
@ -52,7 +52,7 @@ $PostgreSQL: pgsql/doc/src/sgml/gist.sgml,v 1.23 2005/10/21 13:59:05 tgl Exp $
|
|||||||
difficult work. It was necessary to understand the inner workings of the
|
difficult work. It was necessary to understand the inner workings of the
|
||||||
database, such as the lock manager and Write-Ahead Log. The
|
database, such as the lock manager and Write-Ahead Log. The
|
||||||
<acronym>GiST</acronym> interface has a high level of abstraction,
|
<acronym>GiST</acronym> interface has a high level of abstraction,
|
||||||
requiring the access method implementor to only implement the semantics of
|
requiring the access method implementer to only implement the semantics of
|
||||||
the data type being accessed. The <acronym>GiST</acronym> layer itself
|
the data type being accessed. The <acronym>GiST</acronym> layer itself
|
||||||
takes care of concurrency, logging and searching the tree structure.
|
takes care of concurrency, logging and searching the tree structure.
|
||||||
</para>
|
</para>
|
||||||
@ -187,7 +187,7 @@ $PostgreSQL: pgsql/doc/src/sgml/gist.sgml,v 1.23 2005/10/21 13:59:05 tgl Exp $
|
|||||||
The <productname>PostgreSQL</productname> source distribution includes
|
The <productname>PostgreSQL</productname> source distribution includes
|
||||||
several examples of index methods implemented using
|
several examples of index methods implemented using
|
||||||
<acronym>GiST</acronym>. The core system currently provides R-Tree
|
<acronym>GiST</acronym>. The core system currently provides R-Tree
|
||||||
equivalent functionality for some of the built-in geometric datatypes
|
equivalent functionality for some of the built-in geometric data types
|
||||||
(see <filename>src/backend/access/gist/gistproc.c</>). The following
|
(see <filename>src/backend/access/gist/gistproc.c</>). The following
|
||||||
<filename>contrib</> modules also contain <acronym>GiST</acronym>
|
<filename>contrib</> modules also contain <acronym>GiST</acronym>
|
||||||
operator classes:
|
operator classes:
|
||||||
@ -197,7 +197,7 @@ $PostgreSQL: pgsql/doc/src/sgml/gist.sgml,v 1.23 2005/10/21 13:59:05 tgl Exp $
|
|||||||
<varlistentry>
|
<varlistentry>
|
||||||
<term>btree_gist</term>
|
<term>btree_gist</term>
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>B-Tree equivalent functionality for several datatypes</para>
|
<para>B-Tree equivalent functionality for several data types</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<!--
|
<!--
|
||||||
$PostgreSQL: pgsql/doc/src/sgml/indexam.sgml,v 2.6 2005/06/13 23:14:47 tgl Exp $
|
$PostgreSQL: pgsql/doc/src/sgml/indexam.sgml,v 2.7 2005/11/04 23:14:00 petere Exp $
|
||||||
-->
|
-->
|
||||||
|
|
||||||
<chapter id="indexam">
|
<chapter id="indexam">
|
||||||
@ -56,7 +56,7 @@ $PostgreSQL: pgsql/doc/src/sgml/indexam.sgml,v 2.6 2005/06/13 23:14:47 tgl Exp $
|
|||||||
functions supplied by the access method. The APIs for these functions
|
functions supplied by the access method. The APIs for these functions
|
||||||
are defined later in this chapter. In addition, the
|
are defined later in this chapter. In addition, the
|
||||||
<structname>pg_am</structname> row specifies a few fixed properties of
|
<structname>pg_am</structname> row specifies a few fixed properties of
|
||||||
the access method, such as whether it can support multi-column indexes.
|
the access method, such as whether it can support multicolumn indexes.
|
||||||
There is not currently any special support
|
There is not currently any special support
|
||||||
for creating or deleting <structname>pg_am</structname> entries;
|
for creating or deleting <structname>pg_am</structname> entries;
|
||||||
anyone able to write a new access method is expected to be competent
|
anyone able to write a new access method is expected to be competent
|
||||||
@ -99,7 +99,7 @@ $PostgreSQL: pgsql/doc/src/sgml/indexam.sgml,v 2.6 2005/06/13 23:14:47 tgl Exp $
|
|||||||
are discussed in <xref linkend="index-unique-checks">, and those of
|
are discussed in <xref linkend="index-unique-checks">, and those of
|
||||||
<structfield>amconcurrent</structfield> in <xref linkend="index-locking">.
|
<structfield>amconcurrent</structfield> in <xref linkend="index-locking">.
|
||||||
The <structfield>amcanmulticol</structfield> flag asserts that the
|
The <structfield>amcanmulticol</structfield> flag asserts that the
|
||||||
access method supports multi-column indexes, while
|
access method supports multicolumn indexes, while
|
||||||
<structfield>amoptionalkey</structfield> asserts that it allows scans
|
<structfield>amoptionalkey</structfield> asserts that it allows scans
|
||||||
where no indexable restriction clause is given for the first index column.
|
where no indexable restriction clause is given for the first index column.
|
||||||
When <structfield>amcanmulticol</structfield> is false,
|
When <structfield>amcanmulticol</structfield> is false,
|
||||||
@ -113,7 +113,7 @@ $PostgreSQL: pgsql/doc/src/sgml/indexam.sgml,v 2.6 2005/06/13 23:14:47 tgl Exp $
|
|||||||
<structfield>amindexnulls</structfield> asserts that index entries are
|
<structfield>amindexnulls</structfield> asserts that index entries are
|
||||||
created for NULL key values. Since most indexable operators are
|
created for NULL key values. Since most indexable operators are
|
||||||
strict and hence cannot return TRUE for NULL inputs,
|
strict and hence cannot return TRUE for NULL inputs,
|
||||||
it is at first sight attractive to not store index entries for NULLs:
|
it is at first sight attractive to not store index entries for null values:
|
||||||
they could never be returned by an index scan anyway. However, this
|
they could never be returned by an index scan anyway. However, this
|
||||||
argument fails when an index scan has no restriction clause for a given
|
argument fails when an index scan has no restriction clause for a given
|
||||||
index column. In practice this means that
|
index column. In practice this means that
|
||||||
@ -242,7 +242,7 @@ ambeginscan (Relation indexRelation,
|
|||||||
<emphasis>must</> create this struct by calling
|
<emphasis>must</> create this struct by calling
|
||||||
<function>RelationGetIndexScan()</>. In most cases
|
<function>RelationGetIndexScan()</>. In most cases
|
||||||
<function>ambeginscan</> itself does little beyond making that call;
|
<function>ambeginscan</> itself does little beyond making that call;
|
||||||
the interesting parts of indexscan startup are in <function>amrescan</>.
|
the interesting parts of index-scan startup are in <function>amrescan</>.
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
<para>
|
<para>
|
||||||
@ -291,11 +291,11 @@ amrescan (IndexScanDesc scan,
|
|||||||
Restart the given scan, possibly with new scan keys (to continue using
|
Restart the given scan, possibly with new scan keys (to continue using
|
||||||
the old keys, NULL is passed for <literal>key</>). Note that it is not
|
the old keys, NULL is passed for <literal>key</>). Note that it is not
|
||||||
possible for the number of keys to be changed. In practice the restart
|
possible for the number of keys to be changed. In practice the restart
|
||||||
feature is used when a new outer tuple is selected by a nestloop join
|
feature is used when a new outer tuple is selected by a nested-loop join
|
||||||
and so a new key comparison value is needed, but the scan key structure
|
and so a new key comparison value is needed, but the scan key structure
|
||||||
remains the same. This function is also called by
|
remains the same. This function is also called by
|
||||||
<function>RelationGetIndexScan()</>, so it is used for initial setup
|
<function>RelationGetIndexScan()</>, so it is used for initial setup
|
||||||
of an indexscan as well as rescanning.
|
of an index scan as well as rescanning.
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
<para>
|
<para>
|
||||||
@ -377,7 +377,7 @@ amcostestimate (PlannerInfo *root,
|
|||||||
The operator class may indicate that the index is <firstterm>lossy</> for a
|
The operator class may indicate that the index is <firstterm>lossy</> for a
|
||||||
particular operator; this implies that the index scan will return all the
|
particular operator; this implies that the index scan will return all the
|
||||||
entries that pass the scan key, plus possibly additional entries that do
|
entries that pass the scan key, plus possibly additional entries that do
|
||||||
not. The core system's indexscan machinery will then apply that operator
|
not. The core system's index-scan machinery will then apply that operator
|
||||||
again to the heap tuple to verify whether or not it really should be
|
again to the heap tuple to verify whether or not it really should be
|
||||||
selected. For non-lossy operators, the index scan must return exactly the
|
selected. For non-lossy operators, the index scan must return exactly the
|
||||||
set of matching entries, as there is no recheck.
|
set of matching entries, as there is no recheck.
|
||||||
@ -524,7 +524,7 @@ amcostestimate (PlannerInfo *root,
|
|||||||
</listitem>
|
</listitem>
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>
|
<para>
|
||||||
For concurrent index types, an indexscan must maintain a pin
|
For concurrent index types, an index scan must maintain a pin
|
||||||
on the index page holding the item last returned by
|
on the index page holding the item last returned by
|
||||||
<function>amgettuple</>, and <function>ambulkdelete</> cannot delete
|
<function>amgettuple</>, and <function>ambulkdelete</> cannot delete
|
||||||
entries from pages that are pinned by other backends. The need
|
entries from pages that are pinned by other backends. The need
|
||||||
@ -553,7 +553,7 @@ amcostestimate (PlannerInfo *root,
|
|||||||
may still be <quote>in flight</> from the index entry to the matching
|
may still be <quote>in flight</> from the index entry to the matching
|
||||||
heap entry. Making <function>ambulkdelete</> block on such a pin ensures
|
heap entry. Making <function>ambulkdelete</> block on such a pin ensures
|
||||||
that <command>VACUUM</> cannot delete the heap entry before the reader
|
that <command>VACUUM</> cannot delete the heap entry before the reader
|
||||||
is done with it. This solution costs little in runtime, and adds blocking
|
is done with it. This solution costs little in run time, and adds blocking
|
||||||
overhead only in the rare cases where there actually is a conflict.
|
overhead only in the rare cases where there actually is a conflict.
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
<!-- $PostgreSQL: pgsql/doc/src/sgml/indices.sgml,v 1.53 2005/10/21 01:41:28 tgl Exp $ -->
|
<!-- $PostgreSQL: pgsql/doc/src/sgml/indices.sgml,v 1.54 2005/11/04 23:14:00 petere Exp $ -->
|
||||||
|
|
||||||
<chapter id="indexes">
|
<chapter id="indexes">
|
||||||
<title id="indexes-title">Indexes</title>
|
<title id="indexes-title">Indexes</title>
|
||||||
@ -235,7 +235,7 @@ CREATE INDEX <replaceable>name</replaceable> ON <replaceable>table</replaceable>
|
|||||||
Similarly, R-tree indexes do not seem to have any performance
|
Similarly, R-tree indexes do not seem to have any performance
|
||||||
advantages compared to the equivalent operations of GiST indexes.
|
advantages compared to the equivalent operations of GiST indexes.
|
||||||
Like hash indexes, they are not WAL-logged and may need
|
Like hash indexes, they are not WAL-logged and may need
|
||||||
<command>REINDEX</>ing after a database crash.
|
reindexing after a database crash.
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
<para>
|
<para>
|
||||||
@ -389,7 +389,7 @@ CREATE INDEX test2_mm_idx ON test2 (major, minor);
|
|||||||
<para>
|
<para>
|
||||||
In all but the simplest applications, there are various combinations of
|
In all but the simplest applications, there are various combinations of
|
||||||
indexes that may be useful, and the database developer must make
|
indexes that may be useful, and the database developer must make
|
||||||
tradeoffs to decide which indexes to provide. Sometimes multicolumn
|
trade-offs to decide which indexes to provide. Sometimes multicolumn
|
||||||
indexes are best, but sometimes it's better to create separate indexes
|
indexes are best, but sometimes it's better to create separate indexes
|
||||||
and rely on the index-combination feature. For example, if your
|
and rely on the index-combination feature. For example, if your
|
||||||
workload includes a mix of queries that sometimes involve only column
|
workload includes a mix of queries that sometimes involve only column
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<!--
|
<!--
|
||||||
$PostgreSQL: pgsql/doc/src/sgml/libpq.sgml,v 1.198 2005/10/27 13:53:41 momjian Exp $
|
$PostgreSQL: pgsql/doc/src/sgml/libpq.sgml,v 1.199 2005/11/04 23:14:00 petere Exp $
|
||||||
-->
|
-->
|
||||||
|
|
||||||
<chapter id="libpq">
|
<chapter id="libpq">
|
||||||
@ -3539,10 +3539,10 @@ void PQtrace(PGconn *conn, FILE *stream);
|
|||||||
</para>
|
</para>
|
||||||
<note>
|
<note>
|
||||||
<para>
|
<para>
|
||||||
On Win32, if the <application>libpq</> library and an application are
|
On Windows, if the <application>libpq</> library and an application are
|
||||||
compiled with different flags, this function call will crash the
|
compiled with different flags, this function call will crash the
|
||||||
application because the internal representation of the <literal>FILE</>
|
application because the internal representation of the <literal>FILE</>
|
||||||
pointers differ. Specifically, multi-threaded/single-threaded,
|
pointers differ. Specifically, multithreaded/single-threaded,
|
||||||
release/debug, and static/dynamic flags should be the same for the
|
release/debug, and static/dynamic flags should be the same for the
|
||||||
library and all applications using that library.
|
library and all applications using that library.
|
||||||
</para>
|
</para>
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<!--
|
<!--
|
||||||
$PostgreSQL: pgsql/doc/src/sgml/maintenance.sgml,v 1.50 2005/11/01 21:09:49 tgl Exp $
|
$PostgreSQL: pgsql/doc/src/sgml/maintenance.sgml,v 1.51 2005/11/04 23:14:00 petere Exp $
|
||||||
-->
|
-->
|
||||||
|
|
||||||
<chapter id="maintenance">
|
<chapter id="maintenance">
|
||||||
@ -593,7 +593,7 @@ analyze threshold = analyze base threshold + analyze scale factor * number of tu
|
|||||||
<para>
|
<para>
|
||||||
In <productname>PostgreSQL</> releases before 7.4, periodic reindexing
|
In <productname>PostgreSQL</> releases before 7.4, periodic reindexing
|
||||||
was frequently necessary to avoid <quote>index bloat</>, due to lack of
|
was frequently necessary to avoid <quote>index bloat</>, due to lack of
|
||||||
internal space reclamation in btree indexes. Any situation in which the
|
internal space reclamation in B-tree indexes. Any situation in which the
|
||||||
range of index keys changed over time — for example, an index on
|
range of index keys changed over time — for example, an index on
|
||||||
timestamps in a table where old entries are eventually deleted —
|
timestamps in a table where old entries are eventually deleted —
|
||||||
would result in bloat, because index pages for no-longer-needed portions
|
would result in bloat, because index pages for no-longer-needed portions
|
||||||
@ -613,16 +613,16 @@ analyze threshold = analyze base threshold + analyze scale factor * number of tu
|
|||||||
</para>
|
</para>
|
||||||
|
|
||||||
<para>
|
<para>
|
||||||
The potential for bloat in non-btree indexes has not been well
|
The potential for bloat in non-B-tree indexes has not been well
|
||||||
characterized. It is a good idea to keep an eye on the index's physical
|
characterized. It is a good idea to keep an eye on the index's physical
|
||||||
size when using any non-btree index type.
|
size when using any non-B-tree index type.
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
<para>
|
<para>
|
||||||
Also, for btree indexes a freshly-constructed index is somewhat faster to
|
Also, for B-tree indexes a freshly-constructed index is somewhat faster to
|
||||||
access than one that has been updated many times, because logically
|
access than one that has been updated many times, because logically
|
||||||
adjacent pages are usually also physically adjacent in a newly built index.
|
adjacent pages are usually also physically adjacent in a newly built index.
|
||||||
(This consideration does not currently apply to non-btree indexes.) It
|
(This consideration does not currently apply to non-B-tree indexes.) It
|
||||||
might be worthwhile to reindex periodically just to improve access speed.
|
might be worthwhile to reindex periodically just to improve access speed.
|
||||||
</para>
|
</para>
|
||||||
</sect1>
|
</sect1>
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<!--
|
<!--
|
||||||
$PostgreSQL: pgsql/doc/src/sgml/nls.sgml,v 1.12 2005/04/09 03:52:43 momjian Exp $
|
$PostgreSQL: pgsql/doc/src/sgml/nls.sgml,v 1.13 2005/11/04 23:14:00 petere Exp $
|
||||||
-->
|
-->
|
||||||
|
|
||||||
<chapter id="nls">
|
<chapter id="nls">
|
||||||
@ -458,7 +458,7 @@ printf("Files were %s.\n", flag ? "copied" : "removed");
|
|||||||
fragment, the fragments may not translate well separately. It's
|
fragment, the fragments may not translate well separately. It's
|
||||||
better to duplicate a little code so that each message to be
|
better to duplicate a little code so that each message to be
|
||||||
translated is a coherent whole. Only numbers, file names, and
|
translated is a coherent whole. Only numbers, file names, and
|
||||||
such-like run-time variables should be inserted at runtime into
|
such-like run-time variables should be inserted at run time into
|
||||||
a message text.
|
a message text.
|
||||||
</para>
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<!--
|
<!--
|
||||||
$PostgreSQL: pgsql/doc/src/sgml/perform.sgml,v 1.53 2005/09/02 03:19:53 tgl Exp $
|
$PostgreSQL: pgsql/doc/src/sgml/perform.sgml,v 1.54 2005/11/04 23:14:00 petere Exp $
|
||||||
-->
|
-->
|
||||||
|
|
||||||
<chapter id="performance-tips">
|
<chapter id="performance-tips">
|
||||||
@ -826,7 +826,7 @@ SELECT * FROM x, y, a, b, c WHERE something AND somethingelse;
|
|||||||
Just as with indexes, a foreign key constraint can be checked
|
Just as with indexes, a foreign key constraint can be checked
|
||||||
<quote>in bulk</> more efficiently than row-by-row. So it may be
|
<quote>in bulk</> more efficiently than row-by-row. So it may be
|
||||||
useful to drop foreign key constraints, load data, and re-create
|
useful to drop foreign key constraints, load data, and re-create
|
||||||
the constraints. Again, there is a tradeoff between data load
|
the constraints. Again, there is a trade-off between data load
|
||||||
speed and loss of error checking while the constraint is missing.
|
speed and loss of error checking while the constraint is missing.
|
||||||
</para>
|
</para>
|
||||||
</sect2>
|
</sect2>
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<!--
|
<!--
|
||||||
$PostgreSQL: pgsql/doc/src/sgml/planstats.sgml,v 1.4 2005/10/15 20:12:32 neilc Exp $
|
$PostgreSQL: pgsql/doc/src/sgml/planstats.sgml,v 1.5 2005/11/04 23:14:00 petere Exp $
|
||||||
-->
|
-->
|
||||||
|
|
||||||
<chapter id="planner-stats-details">
|
<chapter id="planner-stats-details">
|
||||||
@ -327,7 +327,7 @@ selectivity = (1 - null_frac1) * (1 - null_frac2) * min(1/num_distinct1, 1/num_d
|
|||||||
This is, subtract the null fraction from one for each of the relations,
|
This is, subtract the null fraction from one for each of the relations,
|
||||||
and divide by the maximum of the two distinct values. The number of rows
|
and divide by the maximum of the two distinct values. The number of rows
|
||||||
that the join is likely to emit is calculated as the cardinality of
|
that the join is likely to emit is calculated as the cardinality of
|
||||||
cartesian product of the two nodes in the nested-loop, multiplied by the
|
Cartesian product of the two nodes in the nested-loop, multiplied by the
|
||||||
selectivity:
|
selectivity:
|
||||||
|
|
||||||
<programlisting>
|
<programlisting>
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<!--
|
<!--
|
||||||
$PostgreSQL: pgsql/doc/src/sgml/plperl.sgml,v 2.48 2005/10/24 15:39:50 adunstan Exp $
|
$PostgreSQL: pgsql/doc/src/sgml/plperl.sgml,v 2.49 2005/11/04 23:14:00 petere Exp $
|
||||||
-->
|
-->
|
||||||
|
|
||||||
<chapter id="plperl">
|
<chapter id="plperl">
|
||||||
@ -313,7 +313,7 @@ BEGIN { strict->import(); }
|
|||||||
<listitem>
|
<listitem>
|
||||||
<para>
|
<para>
|
||||||
<literal>spi_exec_query</literal> executes an SQL command and
|
<literal>spi_exec_query</literal> executes an SQL command and
|
||||||
returns the entire rowset as a reference to an array of hash
|
returns the entire row set as a reference to an array of hash
|
||||||
references. <emphasis>You should only use this command when you know
|
references. <emphasis>You should only use this command when you know
|
||||||
that the result set will be relatively small.</emphasis> Here is an
|
that the result set will be relatively small.</emphasis> Here is an
|
||||||
example of a query (<command>SELECT</command> command) with the
|
example of a query (<command>SELECT</command> command) with the
|
||||||
@ -384,7 +384,7 @@ SELECT * FROM test_munge();
|
|||||||
</para>
|
</para>
|
||||||
<para>
|
<para>
|
||||||
<literal>spi_query</literal> and <literal>spi_fetchrow</literal>
|
<literal>spi_query</literal> and <literal>spi_fetchrow</literal>
|
||||||
work together as a pair for rowsets which may be large, or for cases
|
work together as a pair for row sets which may be large, or for cases
|
||||||
where you wish to return rows as they arrive.
|
where you wish to return rows as they arrive.
|
||||||
<literal>spi_fetchrow</literal> works <emphasis>only</emphasis> with
|
<literal>spi_fetchrow</literal> works <emphasis>only</emphasis> with
|
||||||
<literal>spi_query</literal>. The following example illustrates how
|
<literal>spi_query</literal>. The following example illustrates how
|
||||||
@ -687,7 +687,7 @@ $$ LANGUAGE plperl;
|
|||||||
<term><literal>@{$_TD->{args}}</literal></term>
|
<term><literal>@{$_TD->{args}}</literal></term>
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>
|
<para>
|
||||||
Arguments of the trigger function. Does not exist if $_TD->{argc} is 0.
|
Arguments of the trigger function. Does not exist if <literal>$_TD->{argc}</literal> is 0.
|
||||||
</para>
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
@ -787,7 +787,7 @@ CREATE TRIGGER test_valid_id_trig
|
|||||||
</para>
|
</para>
|
||||||
<para>
|
<para>
|
||||||
A similar problem occurs if a set-returning function passes a
|
A similar problem occurs if a set-returning function passes a
|
||||||
large set of rows back to postgres via <literal>return</literal>. You
|
large set of rows back to PostgreSQL via <literal>return</literal>. You
|
||||||
can avoid this problem too by instead using
|
can avoid this problem too by instead using
|
||||||
<literal>return_next</literal> for each row returned, as shown
|
<literal>return_next</literal> for each row returned, as shown
|
||||||
previously.
|
previously.
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<!--
|
<!--
|
||||||
$PostgreSQL: pgsql/doc/src/sgml/plpgsql.sgml,v 1.79 2005/10/21 05:11:23 neilc Exp $
|
$PostgreSQL: pgsql/doc/src/sgml/plpgsql.sgml,v 1.80 2005/11/04 23:14:00 petere Exp $
|
||||||
-->
|
-->
|
||||||
|
|
||||||
<chapter id="plpgsql">
|
<chapter id="plpgsql">
|
||||||
@ -986,7 +986,7 @@ $$ LANGUAGE plpgsql;
|
|||||||
<application>PL/pgSQL</application> interpreter casts this
|
<application>PL/pgSQL</application> interpreter casts this
|
||||||
string to the <type>timestamp</type> type by calling the
|
string to the <type>timestamp</type> type by calling the
|
||||||
<function>text_out</function> and <function>timestamp_in</function>
|
<function>text_out</function> and <function>timestamp_in</function>
|
||||||
functions for the conversion. So, the computed timestamp is updated
|
functions for the conversion. So, the computed time stamp is updated
|
||||||
on each execution as the programmer expects.
|
on each execution as the programmer expects.
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<!--
|
<!--
|
||||||
$PostgreSQL: pgsql/doc/src/sgml/ref/create_aggregate.sgml,v 1.32 2005/04/12 04:26:15 tgl Exp $
|
$PostgreSQL: pgsql/doc/src/sgml/ref/create_aggregate.sgml,v 1.33 2005/11/04 23:14:02 petere Exp $
|
||||||
PostgreSQL documentation
|
PostgreSQL documentation
|
||||||
-->
|
-->
|
||||||
|
|
||||||
@ -143,11 +143,11 @@ SELECT col FROM tab ORDER BY col USING sortop LIMIT 1;
|
|||||||
</programlisting>
|
</programlisting>
|
||||||
Further assumptions are that the aggregate ignores null inputs, and that
|
Further assumptions are that the aggregate ignores null inputs, and that
|
||||||
it delivers a null result if and only if there were no non-null inputs.
|
it delivers a null result if and only if there were no non-null inputs.
|
||||||
Ordinarily, a datatype's <literal><</> operator is the proper sort
|
Ordinarily, a data type's <literal><</> operator is the proper sort
|
||||||
operator for <function>MIN</>, and <literal>></> is the proper sort
|
operator for <function>MIN</>, and <literal>></> is the proper sort
|
||||||
operator for <function>MAX</>. Note that the optimization will never
|
operator for <function>MAX</>. Note that the optimization will never
|
||||||
actually take effect unless the specified operator is the LessThan or
|
actually take effect unless the specified operator is the <quote>less than</quote> or
|
||||||
GreaterThan strategy member of a btree index opclass.
|
<quote>greater than</quote> strategy member of a B-tree index operator class.
|
||||||
</para>
|
</para>
|
||||||
</refsect1>
|
</refsect1>
|
||||||
|
|
||||||
@ -243,7 +243,7 @@ SELECT col FROM tab ORDER BY col USING sortop LIMIT 1;
|
|||||||
The associated sort operator for a <function>MIN</>- or
|
The associated sort operator for a <function>MIN</>- or
|
||||||
<function>MAX</>-like aggregate.
|
<function>MAX</>-like aggregate.
|
||||||
This is just an operator name (possibly schema-qualified).
|
This is just an operator name (possibly schema-qualified).
|
||||||
The operator is assumed to have the same input datatypes as
|
The operator is assumed to have the same input data types as
|
||||||
the aggregate.
|
the aggregate.
|
||||||
</para>
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<!--
|
<!--
|
||||||
$PostgreSQL: pgsql/doc/src/sgml/ref/create_domain.sgml,v 1.25 2005/11/01 21:09:50 tgl Exp $
|
$PostgreSQL: pgsql/doc/src/sgml/ref/create_domain.sgml,v 1.26 2005/11/04 23:14:02 petere Exp $
|
||||||
PostgreSQL documentation
|
PostgreSQL documentation
|
||||||
-->
|
-->
|
||||||
|
|
||||||
@ -58,7 +58,7 @@ where <replaceable class="PARAMETER">constraint</replaceable> is:
|
|||||||
<caution>
|
<caution>
|
||||||
<para>
|
<para>
|
||||||
At present, declaring a function result value as a domain
|
At present, declaring a function result value as a domain
|
||||||
is pretty dangerous, because none of the PLs enforce domain constraints
|
is pretty dangerous, because none of the procedural languages enforce domain constraints
|
||||||
on their results. You'll need to make sure that the function code itself
|
on their results. You'll need to make sure that the function code itself
|
||||||
respects the constraints. In <application>PL/pgSQL</>, one possible
|
respects the constraints. In <application>PL/pgSQL</>, one possible
|
||||||
workaround is to explicitly cast the result value to the domain type
|
workaround is to explicitly cast the result value to the domain type
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<!--
|
<!--
|
||||||
$PostgreSQL: pgsql/doc/src/sgml/ref/pg_ctl-ref.sgml,v 1.31 2005/02/21 02:13:26 neilc Exp $
|
$PostgreSQL: pgsql/doc/src/sgml/ref/pg_ctl-ref.sgml,v 1.32 2005/11/04 23:14:02 petere Exp $
|
||||||
PostgreSQL documentation
|
PostgreSQL documentation
|
||||||
-->
|
-->
|
||||||
|
|
||||||
@ -308,7 +308,7 @@ PostgreSQL documentation
|
|||||||
<term><option>-U <replaceable class="parameter">username</replaceable></option></term>
|
<term><option>-U <replaceable class="parameter">username</replaceable></option></term>
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>
|
<para>
|
||||||
Username for the user to start the service. For domain users, use the
|
User name for the user to start the service. For domain users, use the
|
||||||
format <literal>DOMAIN\username</literal>.
|
format <literal>DOMAIN\username</literal>.
|
||||||
</para>
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<!--
|
<!--
|
||||||
$PostgreSQL: pgsql/doc/src/sgml/ref/pg_resetxlog.sgml,v 1.11 2005/06/08 15:50:21 tgl Exp $
|
$PostgreSQL: pgsql/doc/src/sgml/ref/pg_resetxlog.sgml,v 1.12 2005/11/04 23:14:02 petere Exp $
|
||||||
PostgreSQL documentation
|
PostgreSQL documentation
|
||||||
-->
|
-->
|
||||||
|
|
||||||
@ -61,7 +61,7 @@ PostgreSQL documentation
|
|||||||
by specifying the <literal>-f</> (force) switch. In this case plausible
|
by specifying the <literal>-f</> (force) switch. In this case plausible
|
||||||
values will be substituted for the missing data. Most of the fields can be
|
values will be substituted for the missing data. Most of the fields can be
|
||||||
expected to match, but manual assistance may be needed for the next OID,
|
expected to match, but manual assistance may be needed for the next OID,
|
||||||
next transaction ID, next multi-transaction ID and offset,
|
next transaction ID, next multitransaction ID and offset,
|
||||||
WAL starting address, and database locale fields.
|
WAL starting address, and database locale fields.
|
||||||
The first five of these can be set using the switches discussed below.
|
The first five of these can be set using the switches discussed below.
|
||||||
<command>pg_resetxlog</command>'s own environment is the source for its
|
<command>pg_resetxlog</command>'s own environment is the source for its
|
||||||
@ -78,8 +78,8 @@ PostgreSQL documentation
|
|||||||
<para>
|
<para>
|
||||||
The <literal>-o</>, <literal>-x</>, <literal>-m</>, <literal>-O</>,
|
The <literal>-o</>, <literal>-x</>, <literal>-m</>, <literal>-O</>,
|
||||||
and <literal>-l</>
|
and <literal>-l</>
|
||||||
switches allow the next OID, next transaction ID, next multi-transaction
|
switches allow the next OID, next transaction ID, next multitransaction
|
||||||
ID, next multi-transaction offset, and WAL starting address values to
|
ID, next multitransaction offset, and WAL starting address values to
|
||||||
be set manually. These are only needed when
|
be set manually. These are only needed when
|
||||||
<command>pg_resetxlog</command> is unable to determine appropriate values
|
<command>pg_resetxlog</command> is unable to determine appropriate values
|
||||||
by reading <filename>pg_control</>. Safe values may be determined as
|
by reading <filename>pg_control</>. Safe values may be determined as
|
||||||
@ -102,7 +102,7 @@ PostgreSQL documentation
|
|||||||
|
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>
|
<para>
|
||||||
A safe value for the next multi-transaction ID (<literal>-m</>)
|
A safe value for the next multitransaction ID (<literal>-m</>)
|
||||||
may be determined by looking for the numerically largest
|
may be determined by looking for the numerically largest
|
||||||
file name in the directory <filename>pg_multixact/offsets</> under the
|
file name in the directory <filename>pg_multixact/offsets</> under the
|
||||||
data directory, adding one, and then multiplying by 65536. As above,
|
data directory, adding one, and then multiplying by 65536. As above,
|
||||||
@ -113,7 +113,7 @@ PostgreSQL documentation
|
|||||||
|
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>
|
<para>
|
||||||
A safe value for the next multi-transaction offset (<literal>-O</>)
|
A safe value for the next multitransaction offset (<literal>-O</>)
|
||||||
may be determined by looking for the numerically largest
|
may be determined by looking for the numerically largest
|
||||||
file name in the directory <filename>pg_multixact/members</> under the
|
file name in the directory <filename>pg_multixact/members</> under the
|
||||||
data directory, adding one, and then multiplying by 65536. As above,
|
data directory, adding one, and then multiplying by 65536. As above,
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<!--
|
<!--
|
||||||
$PostgreSQL: pgsql/doc/src/sgml/ref/psql-ref.sgml,v 1.153 2005/11/01 21:09:50 tgl Exp $
|
$PostgreSQL: pgsql/doc/src/sgml/ref/psql-ref.sgml,v 1.154 2005/11/04 23:14:02 petere Exp $
|
||||||
PostgreSQL documentation
|
PostgreSQL documentation
|
||||||
-->
|
-->
|
||||||
|
|
||||||
@ -2015,7 +2015,7 @@ bar
|
|||||||
<term><varname>HISTFILE</varname></term>
|
<term><varname>HISTFILE</varname></term>
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>
|
<para>
|
||||||
The filename that will be used to store the history list. The default
|
The file name that will be used to store the history list. The default
|
||||||
value is <filename>~/.psql_history</filename>. For example, putting
|
value is <filename>~/.psql_history</filename>. For example, putting
|
||||||
<programlisting>
|
<programlisting>
|
||||||
\set HISTFILE ~/.psql_history- :DBNAME
|
\set HISTFILE ~/.psql_history- :DBNAME
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<!--
|
<!--
|
||||||
$PostgreSQL: pgsql/doc/src/sgml/release.sgml,v 1.399 2005/11/04 22:21:33 momjian Exp $
|
$PostgreSQL: pgsql/doc/src/sgml/release.sgml,v 1.400 2005/11/04 23:14:00 petere Exp $
|
||||||
|
|
||||||
Typical markup:
|
Typical markup:
|
||||||
|
|
||||||
@ -285,7 +285,8 @@ pg_[A-Za-z0-9_] <application>
|
|||||||
|
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>
|
<para>
|
||||||
Cause input of a zero-length string ('') for float4/float8/oid
|
Cause input of a zero-length string (<literal>''</literal>) for
|
||||||
|
<type>float4</type>/<type>float8</type>/<type>oid</type>
|
||||||
to throw an error, rather than treating it as a zero (Neil)
|
to throw an error, rather than treating it as a zero (Neil)
|
||||||
</para>
|
</para>
|
||||||
<para>
|
<para>
|
||||||
@ -321,7 +322,7 @@ pg_[A-Za-z0-9_] <application>
|
|||||||
backslash in a string literal as introducing a special escape sequence,
|
backslash in a string literal as introducing a special escape sequence,
|
||||||
e.g. <literal>\n</> or <literal>\010</>.
|
e.g. <literal>\n</> or <literal>\010</>.
|
||||||
While this allows easy entry of special values, it is
|
While this allows easy entry of special values, it is
|
||||||
non-standard and makes porting of applications from other
|
nonstandard and makes porting of applications from other
|
||||||
databases more difficult. For this reason, the
|
databases more difficult. For this reason, the
|
||||||
<productname>PostgreSQL</productname> project is planning to
|
<productname>PostgreSQL</productname> project is planning to
|
||||||
remove the special meaning of backslashes in strings. For
|
remove the special meaning of backslashes in strings. For
|
||||||
@ -538,7 +539,7 @@ psql -t -f fixseq.sql db1 | psql -e db1
|
|||||||
|
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>
|
<para>
|
||||||
Improve GiST and rtree index performance (Neil)
|
Improve GiST and R-tree index performance (Neil)
|
||||||
</para>
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
|
|
||||||
@ -579,7 +580,7 @@ psql -t -f fixseq.sql db1 | psql -e db1
|
|||||||
|
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>
|
<para>
|
||||||
Allow non-consecutive index columns to be used in a multi-column
|
Allow nonconsecutive index columns to be used in a multicolumn
|
||||||
index (Tom)
|
index (Tom)
|
||||||
</para>
|
</para>
|
||||||
<para>
|
<para>
|
||||||
@ -733,7 +734,7 @@ psql -t -f fixseq.sql db1 | psql -e db1
|
|||||||
<listitem>
|
<listitem>
|
||||||
<para>
|
<para>
|
||||||
Add configuration parameter <varname>krb_server_hostname</> so
|
Add configuration parameter <varname>krb_server_hostname</> so
|
||||||
that the server hostname can be specified as part of service
|
that the server host name can be specified as part of service
|
||||||
principal (Todd Kover)
|
principal (Todd Kover)
|
||||||
</para>
|
</para>
|
||||||
<para>
|
<para>
|
||||||
@ -1639,7 +1640,7 @@ psql -t -f fixseq.sql db1 | psql -e db1
|
|||||||
|
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>
|
<para>
|
||||||
Allow Perl non-fatal warnings to generate <command>NOTICE</>
|
Allow Perl nonfatal warnings to generate <command>NOTICE</>
|
||||||
messages (Andrew)
|
messages (Andrew)
|
||||||
</para>
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
@ -1962,7 +1963,7 @@ psql -t -f fixseq.sql db1 | psql -e db1
|
|||||||
|
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>
|
<para>
|
||||||
Allow IPv6 connections to be used on Win32 (Andrew)
|
Allow IPv6 connections to be used on Windows (Andrew)
|
||||||
</para>
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
|
|
||||||
@ -2711,7 +2712,7 @@ typedefs (Michael)</para></listitem>
|
|||||||
<para>
|
<para>
|
||||||
<command>COPY</command> can now read and write
|
<command>COPY</command> can now read and write
|
||||||
comma-separated-value files. It has the flexibility to
|
comma-separated-value files. It has the flexibility to
|
||||||
interpret non-standard quoting and separation characters too.
|
interpret nonstandard quoting and separation characters too.
|
||||||
</para>
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
@ -2756,7 +2757,7 @@ typedefs (Michael)</para></listitem>
|
|||||||
|
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>
|
<para>
|
||||||
Non-deferred <option>AFTER</> triggers are now fired immediately
|
Nondeferred <option>AFTER</> triggers are now fired immediately
|
||||||
after completion of the triggering query, rather than upon
|
after completion of the triggering query, rather than upon
|
||||||
finishing the current interactive command. This makes a
|
finishing the current interactive command. This makes a
|
||||||
difference when the triggering query occurred within a function:
|
difference when the triggering query occurred within a function:
|
||||||
@ -2838,7 +2839,7 @@ typedefs (Michael)</para></listitem>
|
|||||||
<listitem>
|
<listitem>
|
||||||
<para>
|
<para>
|
||||||
Updating an element or slice of a NULL array value now produces
|
Updating an element or slice of a NULL array value now produces
|
||||||
a non-NULL array result, namely an array containing
|
a nonnull array result, namely an array containing
|
||||||
just the assigned-to positions.
|
just the assigned-to positions.
|
||||||
</para>
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
@ -2881,7 +2882,7 @@ typedefs (Michael)</para></listitem>
|
|||||||
|
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>
|
<para>
|
||||||
<type>CIDR</> values now must have their non-masked bits be zero.
|
<type>CIDR</> values now must have their nonmasked bits be zero.
|
||||||
For example, we no longer allow
|
For example, we no longer allow
|
||||||
<literal>204.248.199.1/31</literal> as a <type>CIDR</> value. Such
|
<literal>204.248.199.1/31</literal> as a <type>CIDR</> value. Such
|
||||||
values should never have been accepted by
|
values should never have been accepted by
|
||||||
@ -3168,7 +3169,7 @@ typedefs (Michael)</para></listitem>
|
|||||||
</para>
|
</para>
|
||||||
<para>
|
<para>
|
||||||
This feature allows more flexibility in generating statistics
|
This feature allows more flexibility in generating statistics
|
||||||
for non-standard data types.
|
for nonstandard data types.
|
||||||
</para>
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
|
|
||||||
@ -3920,7 +3921,7 @@ typedefs (Michael)</para></listitem>
|
|||||||
|
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>
|
<para>
|
||||||
Reject non-rectangular array values as erroneous (Joe)
|
Reject nonrectangular array values as erroneous (Joe)
|
||||||
</para>
|
</para>
|
||||||
<para>
|
<para>
|
||||||
Formerly, <function>array_in</> would silently build a
|
Formerly, <function>array_in</> would silently build a
|
||||||
@ -4182,7 +4183,7 @@ typedefs (Michael)</para></listitem>
|
|||||||
|
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>
|
<para>
|
||||||
Require <type>CIDR</> values to have all non-masked bits be zero
|
Require <type>CIDR</> values to have all nonmasked bits be zero
|
||||||
(Kevin Brintnall)
|
(Kevin Brintnall)
|
||||||
</para>
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
@ -4219,13 +4220,13 @@ typedefs (Michael)</para></listitem>
|
|||||||
|
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>
|
<para>
|
||||||
Non-deferred <option>AFTER</> triggers are now fired immediately
|
Nondeferred <option>AFTER</> triggers are now fired immediately
|
||||||
after completion of the triggering query, rather than upon
|
after completion of the triggering query, rather than upon
|
||||||
finishing the current interactive command. This makes a difference
|
finishing the current interactive command. This makes a difference
|
||||||
when the triggering query occurred within a function: the trigger
|
when the triggering query occurred within a function: the trigger
|
||||||
is invoked before the function proceeds to its next operation. For
|
is invoked before the function proceeds to its next operation. For
|
||||||
example, if a function inserts a new row into a table, any
|
example, if a function inserts a new row into a table, any
|
||||||
non-deferred foreign key checks occur before proceeding with the
|
nondeferred foreign key checks occur before proceeding with the
|
||||||
function.
|
function.
|
||||||
</para>
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
@ -4758,7 +4759,7 @@ typedefs (Michael)</para></listitem>
|
|||||||
backend executables too (Bruce)
|
backend executables too (Bruce)
|
||||||
</para>
|
</para>
|
||||||
<para>
|
<para>
|
||||||
Unixware cannot mix threaded and non-threaded object files in the
|
Unixware cannot mix threaded and nonthreaded object files in the
|
||||||
same executable, so everything must be compiled as threaded.
|
same executable, so everything must be compiled as threaded.
|
||||||
</para>
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
<!-- $PostgreSQL: pgsql/doc/src/sgml/rowtypes.sgml,v 2.5 2005/01/22 22:56:36 momjian Exp $ -->
|
<!-- $PostgreSQL: pgsql/doc/src/sgml/rowtypes.sgml,v 2.6 2005/11/04 23:14:01 petere Exp $ -->
|
||||||
|
|
||||||
<sect1 id="rowtypes">
|
<sect1 id="rowtypes">
|
||||||
<title>Composite Types</title>
|
<title>Composite Types</title>
|
||||||
@ -175,7 +175,7 @@ SELECT item.name FROM on_hand WHERE item.price > 9.99;
|
|||||||
SELECT (item).name FROM on_hand WHERE (item).price > 9.99;
|
SELECT (item).name FROM on_hand WHERE (item).price > 9.99;
|
||||||
</programlisting>
|
</programlisting>
|
||||||
|
|
||||||
or if you need to use the table name as well (for instance in a multi-table
|
or if you need to use the table name as well (for instance in a multitable
|
||||||
query), like this:
|
query), like this:
|
||||||
|
|
||||||
<programlisting>
|
<programlisting>
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<!--
|
<!--
|
||||||
$PostgreSQL: pgsql/doc/src/sgml/runtime.sgml,v 1.356 2005/10/26 12:55:07 momjian Exp $
|
$PostgreSQL: pgsql/doc/src/sgml/runtime.sgml,v 1.357 2005/11/04 23:14:01 petere Exp $
|
||||||
-->
|
-->
|
||||||
|
|
||||||
<chapter Id="runtime">
|
<chapter Id="runtime">
|
||||||
@ -854,7 +854,7 @@ options SEMMAP=256
|
|||||||
<para>
|
<para>
|
||||||
Older distributions may not have the <command>sysctl</command> program,
|
Older distributions may not have the <command>sysctl</command> program,
|
||||||
but equivalent changes can be made by manipulating the
|
but equivalent changes can be made by manipulating the
|
||||||
<filename>/proc</filename> filesystem:
|
<filename>/proc</filename> file system:
|
||||||
<screen>
|
<screen>
|
||||||
<prompt>$</prompt> <userinput>echo 134217728 >/proc/sys/kernel/shmmax</userinput>
|
<prompt>$</prompt> <userinput>echo 134217728 >/proc/sys/kernel/shmmax</userinput>
|
||||||
<prompt>$</prompt> <userinput>echo 2097152 >/proc/sys/kernel/shmall</userinput>
|
<prompt>$</prompt> <userinput>echo 2097152 >/proc/sys/kernel/shmall</userinput>
|
||||||
@ -1357,19 +1357,19 @@ $ <userinput>kill -INT `head -1 /usr/local/pgsql/data/postmaster.pid`</userinput
|
|||||||
|
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>
|
<para>
|
||||||
On Linux, encryption can be layered on top of a filesystem mount
|
On Linux, encryption can be layered on top of a file system mount
|
||||||
using a <quote>loopback device</quote>. This allows an entire
|
using a <quote>loopback device</quote>. This allows an entire
|
||||||
filesystem partition be encrypted on disk, and decrypted by the
|
file system partition be encrypted on disk, and decrypted by the
|
||||||
operating system. On FreeBSD, the equivalent facility is called
|
operating system. On FreeBSD, the equivalent facility is called
|
||||||
GEOM Based Disk Encryption, or <acronym>gbde</acronym>.
|
GEOM Based Disk Encryption, or <acronym>gbde</acronym>.
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
<para>
|
<para>
|
||||||
This mechanism prevents unecrypted data from being read from the
|
This mechanism prevents unencrypted data from being read from the
|
||||||
drives if the drives or the entire computer is stolen. This does
|
drives if the drives or the entire computer is stolen. This does
|
||||||
not protect against attacks while the filesystem is mounted,
|
not protect against attacks while the file system is mounted,
|
||||||
because when mounted, the operating system provides an unencrypted
|
because when mounted, the operating system provides an unencrypted
|
||||||
view of the data. However, to mount the filesystem, you need some
|
view of the data. However, to mount the file system, you need some
|
||||||
way for the encryption key to be passed to the operating system,
|
way for the encryption key to be passed to the operating system,
|
||||||
and sometimes the key is stored somewhere on the host that mounts
|
and sometimes the key is stored somewhere on the host that mounts
|
||||||
the disk.
|
the disk.
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<!--
|
<!--
|
||||||
$PostgreSQL: pgsql/doc/src/sgml/storage.sgml,v 1.7 2005/09/01 20:01:53 tgl Exp $
|
$PostgreSQL: pgsql/doc/src/sgml/storage.sgml,v 1.8 2005/11/04 23:14:02 petere Exp $
|
||||||
-->
|
-->
|
||||||
|
|
||||||
<chapter id="storage">
|
<chapter id="storage">
|
||||||
@ -75,7 +75,7 @@ Item
|
|||||||
|
|
||||||
<row>
|
<row>
|
||||||
<entry><filename>pg_multixact</></entry>
|
<entry><filename>pg_multixact</></entry>
|
||||||
<entry>Subdirectory containing multi-transaction status data
|
<entry>Subdirectory containing multitransaction status data
|
||||||
(used for shared row locks)</entry>
|
(used for shared row locks)</entry>
|
||||||
</row>
|
</row>
|
||||||
|
|
||||||
@ -331,7 +331,7 @@ more often be done entirely in memory. A little test showed that a table
|
|||||||
containing typical HTML pages and their URLs was stored in about half of the
|
containing typical HTML pages and their URLs was stored in about half of the
|
||||||
raw data size including the <acronym>TOAST</> table, and that the main table
|
raw data size including the <acronym>TOAST</> table, and that the main table
|
||||||
contained only about 10% of the entire data (the URLs and some small HTML
|
contained only about 10% of the entire data (the URLs and some small HTML
|
||||||
pages). There was no runtime difference compared to an un-<acronym>TOAST</>ed
|
pages). There was no run time difference compared to an un-<acronym>TOAST</>ed
|
||||||
comparison table, in which all the HTML pages were cut down to 7Kb to fit.
|
comparison table, in which all the HTML pages were cut down to 7Kb to fit.
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
@ -663,7 +663,7 @@ data. Empty in ordinary tables.</entry>
|
|||||||
<structfield>attlen</structfield> and <structfield>attalign</structfield>.
|
<structfield>attlen</structfield> and <structfield>attalign</structfield>.
|
||||||
There is no way to directly get a
|
There is no way to directly get a
|
||||||
particular attribute, except when there are only fixed width fields and no
|
particular attribute, except when there are only fixed width fields and no
|
||||||
NULLs. All this trickery is wrapped up in the functions
|
null values. All this trickery is wrapped up in the functions
|
||||||
<firstterm>heap_getattr</firstterm>, <firstterm>fastgetattr</firstterm>
|
<firstterm>heap_getattr</firstterm>, <firstterm>fastgetattr</firstterm>
|
||||||
and <firstterm>heap_getsysattr</firstterm>.
|
and <firstterm>heap_getsysattr</firstterm>.
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<!--
|
<!--
|
||||||
$PostgreSQL: pgsql/doc/src/sgml/syntax.sgml,v 1.104 2005/10/23 19:29:49 tgl Exp $
|
$PostgreSQL: pgsql/doc/src/sgml/syntax.sgml,v 1.105 2005/11/04 23:14:02 petere Exp $
|
||||||
-->
|
-->
|
||||||
|
|
||||||
<chapter id="sql-syntax">
|
<chapter id="sql-syntax">
|
||||||
@ -549,7 +549,7 @@ CAST ( '<replaceable>string</replaceable>' AS <replaceable>type</replaceable> )
|
|||||||
The <literal>CAST()</> syntax conforms to SQL. The
|
The <literal>CAST()</> syntax conforms to SQL. The
|
||||||
<literal><replaceable>type</replaceable> '<replaceable>string</replaceable>'</literal>
|
<literal><replaceable>type</replaceable> '<replaceable>string</replaceable>'</literal>
|
||||||
syntax is a generalization of the standard: SQL specifies this syntax only
|
syntax is a generalization of the standard: SQL specifies this syntax only
|
||||||
for a few datatypes, but <productname>PostgreSQL</productname> allows it
|
for a few data types, but <productname>PostgreSQL</productname> allows it
|
||||||
for all types. The syntax with
|
for all types. The syntax with
|
||||||
<literal>::</literal> is historical <productname>PostgreSQL</productname>
|
<literal>::</literal> is historical <productname>PostgreSQL</productname>
|
||||||
usage, as is the function-call syntax.
|
usage, as is the function-call syntax.
|
||||||
@ -1148,7 +1148,7 @@ CREATE FUNCTION dept(text) RETURNS dept
|
|||||||
parenthesized, but the parentheses may be omitted when the expression
|
parenthesized, but the parentheses may be omitted when the expression
|
||||||
to be subscripted is just a column reference or positional parameter.
|
to be subscripted is just a column reference or positional parameter.
|
||||||
Also, multiple subscripts can be concatenated when the original array
|
Also, multiple subscripts can be concatenated when the original array
|
||||||
is multi-dimensional.
|
is multidimensional.
|
||||||
For example,
|
For example,
|
||||||
|
|
||||||
<programlisting>
|
<programlisting>
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<!--
|
<!--
|
||||||
$PostgreSQL: pgsql/doc/src/sgml/trigger.sgml,v 1.44 2005/10/13 21:09:38 tgl Exp $
|
$PostgreSQL: pgsql/doc/src/sgml/trigger.sgml,v 1.45 2005/11/04 23:14:02 petere Exp $
|
||||||
-->
|
-->
|
||||||
|
|
||||||
<chapter id="triggers">
|
<chapter id="triggers">
|
||||||
@ -141,7 +141,7 @@ $PostgreSQL: pgsql/doc/src/sgml/trigger.sgml,v 1.44 2005/10/13 21:09:38 tgl Exp
|
|||||||
Typically, row before triggers are used for checking or
|
Typically, row before triggers are used for checking or
|
||||||
modifying the data that will be inserted or updated. For example,
|
modifying the data that will be inserted or updated. For example,
|
||||||
a before trigger might be used to insert the current time into a
|
a before trigger might be used to insert the current time into a
|
||||||
timestamp column, or to check that two elements of the row are
|
<type>timestamp</type> column, or to check that two elements of the row are
|
||||||
consistent. Row after triggers are most sensibly
|
consistent. Row after triggers are most sensibly
|
||||||
used to propagate the updates to other tables, or make consistency
|
used to propagate the updates to other tables, or make consistency
|
||||||
checks against other tables. The reason for this division of labor is
|
checks against other tables. The reason for this division of labor is
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<!--
|
<!--
|
||||||
$PostgreSQL: pgsql/doc/src/sgml/typeconv.sgml,v 1.44 2005/06/26 22:05:36 tgl Exp $
|
$PostgreSQL: pgsql/doc/src/sgml/typeconv.sgml,v 1.45 2005/11/04 23:14:02 petere Exp $
|
||||||
-->
|
-->
|
||||||
|
|
||||||
<chapter Id="typeconv">
|
<chapter Id="typeconv">
|
||||||
@ -738,7 +738,7 @@ into the destination column. The implementation function for such a cast
|
|||||||
always takes an extra parameter of type <type>integer</type>, which receives
|
always takes an extra parameter of type <type>integer</type>, which receives
|
||||||
the destination column's declared length (actually, its
|
the destination column's declared length (actually, its
|
||||||
<structfield>atttypmod</> value; the interpretation of
|
<structfield>atttypmod</> value; the interpretation of
|
||||||
<structfield>atttypmod</> varies for different datatypes). The cast function
|
<structfield>atttypmod</> varies for different data types). The cast function
|
||||||
is responsible for applying any length-dependent semantics such as size
|
is responsible for applying any length-dependent semantics such as size
|
||||||
checking or truncation.
|
checking or truncation.
|
||||||
</para>
|
</para>
|
||||||
|
@ -1,20 +1,29 @@
|
|||||||
<!-- $PostgreSQL: pgsql/doc/src/sgml/wal.sgml,v 1.37 2005/10/22 21:56:07 tgl Exp $ -->
|
<!-- $PostgreSQL: pgsql/doc/src/sgml/wal.sgml,v 1.38 2005/11/04 23:14:02 petere Exp $ -->
|
||||||
|
|
||||||
<chapter id="reliability">
|
<chapter id="wal">
|
||||||
<title>Reliability</title>
|
<title>Reliability and the Write-Ahead Log</title>
|
||||||
|
|
||||||
|
<para>
|
||||||
|
This chapter explain how the Write-Ahead Log is used to obtain
|
||||||
|
efficient, reliable operation.
|
||||||
|
</para>
|
||||||
|
|
||||||
|
<sect1 id="wal-reliability">
|
||||||
|
<title>Reliability</title>
|
||||||
|
|
||||||
<para>
|
<para>
|
||||||
Reliability is a major feature of any serious database system, and
|
Reliability is an important property of any serious database
|
||||||
<productname>PostgreSQL</> does everything possible to guarantee
|
system, and <productname>PostgreSQL</> does everything possible to
|
||||||
reliable operation. One aspect of reliable operation is that all data
|
guarantee reliable operation. One aspect of reliable operation is
|
||||||
recorded by a committed transaction should be stored in a non-volatile area
|
that all data recorded by a committed transaction should be stored
|
||||||
that is safe from power loss, operating system failure, and hardware
|
in a nonvolatile area that is safe from power loss, operating
|
||||||
failure (except failure of the non-volatile area itself, of course).
|
system failure, and hardware failure (except failure of the
|
||||||
Successfully writing the data to the computer's permanent storage
|
nonvolatile area itself, of course). Successfully writing the data
|
||||||
(disk drive or equivalent) ordinarily meets this requirement.
|
to the computer's permanent storage (disk drive or equivalent)
|
||||||
In fact, even if a computer is fatally damaged, if
|
ordinarily meets this requirement. In fact, even if a computer is
|
||||||
the disk drives survive they can be moved to another computer with
|
fatally damaged, if the disk drives survive they can be moved to
|
||||||
similar hardware and all committed transactions will remain intact.
|
another computer with similar hardware and all committed
|
||||||
|
transactions will remain intact.
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
<para>
|
<para>
|
||||||
@ -76,17 +85,13 @@
|
|||||||
permanent storage <emphasis>before</> modifying the actual page on
|
permanent storage <emphasis>before</> modifying the actual page on
|
||||||
disk. By doing this, during crash recovery <productname>PostgreSQL</> can
|
disk. By doing this, during crash recovery <productname>PostgreSQL</> can
|
||||||
restore partially-written pages. If you have a battery-backed disk
|
restore partially-written pages. If you have a battery-backed disk
|
||||||
controller or filesystem software (e.g., Reiser4) that prevents partial
|
controller or file-system software (e.g., Reiser4) that prevents partial
|
||||||
page writes, you can turn off this page imaging by using the
|
page writes, you can turn off this page imaging by using the
|
||||||
<xref linkend="guc-full-page-writes"> parameter.
|
<xref linkend="guc-full-page-writes"> parameter.
|
||||||
</para>
|
</para>
|
||||||
|
</sect1>
|
||||||
|
|
||||||
<para>
|
<sect1 id="wal-intro">
|
||||||
The following sections explain how the Write-Ahead Log is used to
|
|
||||||
obtain efficient, reliable operation.
|
|
||||||
</para>
|
|
||||||
|
|
||||||
<sect1 id="wal">
|
|
||||||
<title>Write-Ahead Logging (<acronym>WAL</acronym>)</title>
|
<title>Write-Ahead Logging (<acronym>WAL</acronym>)</title>
|
||||||
|
|
||||||
<indexterm zone="wal">
|
<indexterm zone="wal">
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<!--
|
<!--
|
||||||
$PostgreSQL: pgsql/doc/src/sgml/xoper.sgml,v 1.33 2005/01/23 00:30:18 momjian Exp $
|
$PostgreSQL: pgsql/doc/src/sgml/xoper.sgml,v 1.34 2005/11/04 23:14:02 petere Exp $
|
||||||
-->
|
-->
|
||||||
|
|
||||||
<sect1 id="xoper">
|
<sect1 id="xoper">
|
||||||
@ -347,7 +347,7 @@ table1.column1 OP table2.column2
|
|||||||
in a hash index operator class. This is not enforced when you create
|
in a hash index operator class. This is not enforced when you create
|
||||||
the operator, since of course the referencing operator class couldn't
|
the operator, since of course the referencing operator class couldn't
|
||||||
exist yet. But attempts to use the operator in hash joins will fail
|
exist yet. But attempts to use the operator in hash joins will fail
|
||||||
at runtime if no such operator class exists. The system needs the
|
at run time if no such operator class exists. The system needs the
|
||||||
operator class to find the data-type-specific hash function for the
|
operator class to find the data-type-specific hash function for the
|
||||||
operator's input data type. Of course, you must also supply a suitable
|
operator's input data type. Of course, you must also supply a suitable
|
||||||
hash function before you can create the operator class.
|
hash function before you can create the operator class.
|
||||||
@ -479,7 +479,7 @@ table1.column1 OP table2.column2
|
|||||||
|
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>
|
<para>
|
||||||
Bizarre results will ensue at runtime if the four comparison
|
Bizarre results will ensue at run time if the four comparison
|
||||||
operators you name do not sort the data values compatibly.
|
operators you name do not sort the data values compatibly.
|
||||||
</para>
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user