mirror of
				https://github.com/postgres/postgres.git
				synced 2025-10-30 00:04:49 -04:00 
			
		
		
		
	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"> | ||||
|  <title>Arrays</title> | ||||
| @ -59,7 +59,7 @@ CREATE TABLE tictactoe ( | ||||
|   all considered to be of the same type, regardless of size or number | ||||
|   of dimensions.  So, declaring number of dimensions or sizes in | ||||
|   <command>CREATE TABLE</command> is simply documentation, it does not | ||||
|   affect runtime behavior. | ||||
|   affect run-time behavior. | ||||
|  </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"> | ||||
|  <title>Backup and Restore</title> | ||||
| @ -598,7 +598,7 @@ archive_command = 'test ! -f .../%f && cp %p .../%f' | ||||
|    </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 | ||||
|     combination of ASCII letters, digits, and dots.  It is not 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  | ||||
|     using the <xref linkend="guc-full-page-writes"> parameter. | ||||
|     (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 | ||||
|     operations. | ||||
|     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 | ||||
|  $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"> | ||||
| @ -5416,7 +5416,7 @@ | ||||
|    and <structfield>histogram_bounds</> arrays can be set on a | ||||
|    column-by-column basis using the <command>ALTER TABLE SET STATISTICS</> | ||||
|    command, or globally by setting the | ||||
|    <xref linkend="guc-default-statistics-target"> runtime parameter. | ||||
|    <xref linkend="guc-default-statistics-target"> run-time parameter. | ||||
|   </para> | ||||
| 
 | ||||
|  </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"> | ||||
|  <title>Localization</> | ||||
| @ -504,7 +504,7 @@ initdb --locale=sv_SE | ||||
|         <row> | ||||
|          <entry><literal>MULE_INTERNAL</literal></entry> | ||||
|          <entry>Mule internal code</entry> | ||||
|          <entry>Multi-lingual Emacs</entry> | ||||
|          <entry>Multilingual Emacs</entry> | ||||
|          <entry>1-4</entry> | ||||
|          <entry></entry> | ||||
|         </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"> | ||||
| @ -901,7 +901,7 @@ omicron       bryanh            guest1 | ||||
|     default PAM service name is <literal>postgresql</literal>. You can | ||||
|     optionally supply your own service name after the <literal>pam</> | ||||
|     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 | ||||
|     can be used for authentication.  For more information about  | ||||
|     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"> | ||||
|   <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> | ||||
|     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>, | ||||
|     <literal>OFF</literal>, <literal>TRUE</literal>, | ||||
|     <literal>FALSE</literal>, <literal>YES</literal>, | ||||
| @ -456,9 +456,9 @@ SET ENABLE_SEQSCAN TO OFF; | ||||
|       </indexterm> | ||||
|       <listitem> | ||||
|        <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 | ||||
|         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 | ||||
|         connections made via a Unix-domain socket. | ||||
|        </para> | ||||
| @ -472,9 +472,9 @@ SET ENABLE_SEQSCAN TO OFF; | ||||
|       </indexterm> | ||||
|       <listitem> | ||||
|        <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 | ||||
|         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 | ||||
|         for connections made via a Unix-domain socket. | ||||
|        </para> | ||||
| @ -488,9 +488,9 @@ SET ENABLE_SEQSCAN TO OFF; | ||||
|       </indexterm> | ||||
|       <listitem> | ||||
|        <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.  | ||||
|         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 | ||||
|         for connections made via a Unix-domain socket. | ||||
|        </para> | ||||
| @ -590,13 +590,13 @@ SET ENABLE_SEQSCAN TO OFF; | ||||
|       </indexterm> | ||||
|       <listitem> | ||||
|        <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 | ||||
|         the complete service principal, that is | ||||
|         <varname>krb_srvname</><literal>/</><varname>krb_server_hostname</><literal>@</>REALM. | ||||
|        </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. | ||||
|        </para> | ||||
|       </listitem> | ||||
| @ -609,7 +609,7 @@ SET ENABLE_SEQSCAN TO OFF; | ||||
|       </indexterm> | ||||
|       <listitem> | ||||
|        <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 | ||||
|         can only be set at server start. | ||||
|        </para> | ||||
| @ -2258,8 +2258,8 @@ SELECT * FROM parent WHERE key = 2400; | ||||
|         <varname>log_rotation_age</varname> to <literal>60</literal>, and  | ||||
|         <varname>log_rotation_size</varname> to <literal>1000000</literal>. | ||||
|         Including <literal>%M</> in <varname>log_filename</varname> allows | ||||
|         any size-driven rotations that may occur to select a filename | ||||
|         different from the hour's initial filename. | ||||
|         any size-driven rotations that may occur to select a file name | ||||
|         different from the hour's initial file name. | ||||
|        </para> | ||||
|       </listitem> | ||||
|      </varlistentry> | ||||
| @ -2663,7 +2663,7 @@ SELECT * FROM parent WHERE key = 2400; | ||||
|             </row> | ||||
|             <row> | ||||
|              <entry><literal>%h</literal></entry> | ||||
|              <entry>Remote Hostname or IP address</entry> | ||||
|              <entry>Remote host name or IP address</entry> | ||||
|              <entry>yes</entry> | ||||
|             </row> | ||||
|             <row> | ||||
| @ -2794,7 +2794,7 @@ SELECT * FROM parent WHERE key = 2400; | ||||
|    </sect1> | ||||
| 
 | ||||
|    <sect1 id="runtime-config-statistics"> | ||||
|     <title>Runtime Statistics</title> | ||||
|     <title>Run-Time Statistics</title> | ||||
| 
 | ||||
|     <sect2 id="runtime-config-statistics-monitor"> | ||||
|      <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"> | ||||
| @ -64,9 +64,9 @@ $PostgreSQL: pgsql/doc/src/sgml/cvs.sgml,v 1.35 2005/10/15 20:15:48 neilc Exp $ | ||||
|     <para> | ||||
|      Do an initial login to the <productname>CVS</productname> server: | ||||
| 
 | ||||
|      <programlisting> | ||||
| <programlisting> | ||||
| cvs -d :pserver:anoncvs@anoncvs.postgresql.org:/projects/cvsroot login | ||||
|      </programlisting> | ||||
| </programlisting> | ||||
| 
 | ||||
|      You will be prompted for a password; you can enter anything except | ||||
|      an empty string. | ||||
| @ -81,9 +81,9 @@ cvs -d :pserver:anoncvs@anoncvs.postgresql.org:/projects/cvsroot login | ||||
|    <step> | ||||
|     <para> | ||||
|      Fetch the <productname>PostgreSQL</productname> sources: | ||||
|      <programlisting> | ||||
| <programlisting> | ||||
| cvs -z3 -d :pserver:anoncvs@anoncvs.postgresql.org:/projects/cvsroot co -P pgsql | ||||
|      </programlisting> | ||||
| </programlisting> | ||||
| 
 | ||||
|      This installs the <productname>PostgreSQL</productname> sources into a | ||||
|      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, | ||||
|      <command>cd</command> into | ||||
|      the <filename>pgsql</filename> subdirectory, and issue | ||||
|      <programlisting> | ||||
| $ cvs -z3 update -d -P | ||||
|      </programlisting> | ||||
| <programlisting> | ||||
| cvs -z3 update -d -P | ||||
| </programlisting> | ||||
| 
 | ||||
|      This will fetch only the changes since the last time you updated. | ||||
|      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> | ||||
|      in your home directory that contains | ||||
| 
 | ||||
|      <programlisting> | ||||
| <programlisting> | ||||
| cvs -z3 | ||||
| update -d -P | ||||
|      </programlisting> | ||||
| </programlisting> | ||||
| 
 | ||||
|      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 | ||||
|      to say | ||||
|      <programlisting> | ||||
| $ cvs update | ||||
|      </programlisting> | ||||
| <programlisting> | ||||
| cvs update | ||||
| </programlisting> | ||||
| 
 | ||||
|      to update your files. | ||||
|     </para> | ||||
| @ -150,9 +150,9 @@ $ cvs update | ||||
|     Some older versions of <productname>CVS</productname> have a bug that | ||||
|     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 | ||||
|     <programlisting> | ||||
| $ chmod -R go-w pgsql | ||||
|     </programlisting> | ||||
| <programlisting> | ||||
| chmod -R go-w pgsql | ||||
| </programlisting> | ||||
|     to set the permissions properly. | ||||
|     This bug is fixed as of | ||||
|     <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 | ||||
|    future: | ||||
| 
 | ||||
|    <programlisting> | ||||
| $ cvs checkout -r REL6_4 tc | ||||
|    </programlisting> | ||||
| <programlisting> | ||||
| cvs checkout -r REL6_4 tc | ||||
| </programlisting> | ||||
| 
 | ||||
|    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. | ||||
| @ -236,10 +236,10 @@ $ cvs checkout -r REL6_4 tc | ||||
|    So, to create the 6.4 release | ||||
|    I did the following: | ||||
| 
 | ||||
|    <programlisting> | ||||
| $ cd pgsql | ||||
| $ cvs tag -b REL6_4 | ||||
|    </programlisting> | ||||
| <programlisting> | ||||
| cd pgsql | ||||
| cvs tag -b REL6_4 | ||||
| </programlisting> | ||||
| 
 | ||||
|    which will create the tag and the branch for the RELEASE tree. | ||||
|   </para> | ||||
| @ -250,12 +250,12 @@ $ cvs tag -b REL6_4 | ||||
|    First, create two subdirectories, RELEASE and CURRENT, so that you don't | ||||
|    mix up the two.  Then do: | ||||
| 
 | ||||
|    <programlisting> | ||||
| <programlisting> | ||||
| cd RELEASE | ||||
| cvs checkout -P -r REL6_4 pgsql | ||||
| cd ../CURRENT | ||||
| cvs checkout -P pgsql | ||||
|    </programlisting> | ||||
| </programlisting> | ||||
| 
 | ||||
|    which results in two directory trees, <filename>RELEASE/pgsql</filename> and | ||||
|    <filename>CURRENT/pgsql</filename>. From that point on, | ||||
| @ -273,16 +273,16 @@ cvs checkout -P pgsql | ||||
|   <para> | ||||
|    After you've done the initial checkout on a branch | ||||
| 
 | ||||
|    <programlisting> | ||||
| $ cvs checkout -r REL6_4 | ||||
|    </programlisting> | ||||
| <programlisting> | ||||
| cvs checkout -r REL6_4 | ||||
| </programlisting> | ||||
| 
 | ||||
|    anything you do within that directory structure is restricted to that | ||||
|    branch.  If you apply a patch to that directory structure and do a | ||||
| 
 | ||||
|    <programlisting> | ||||
| <programlisting> | ||||
| cvs commit | ||||
|    </programlisting> | ||||
| </programlisting> | ||||
| 
 | ||||
|    while inside of it, the patch is applied to the branch and | ||||
|    <emphasis>only</emphasis> the branch. | ||||
| @ -333,9 +333,9 @@ cvs commit | ||||
|     <filename>/opt/postgres/cvs/</filename>. If you intend to keep your | ||||
|     repository in <filename>/home/cvs/</filename>, then put | ||||
| 
 | ||||
|     <programlisting> | ||||
| <programlisting> | ||||
| setenv CVSROOT /home/cvs | ||||
|     </programlisting> | ||||
| </programlisting> | ||||
| 
 | ||||
|     in your <filename>.cshrc</filename> file, or a similar line in | ||||
|     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 | ||||
|     single command: | ||||
| 
 | ||||
|     <programlisting> | ||||
| $ cvs init | ||||
|     </programlisting> | ||||
| <programlisting> | ||||
| cvs init | ||||
| </programlisting> | ||||
| 
 | ||||
|     after which you should see at least a directory named | ||||
|     <filename>CVSROOT</filename> when listing the | ||||
|     <envar>CVSROOT</envar> directory: | ||||
| 
 | ||||
|     <programlisting> | ||||
| <programlisting> | ||||
| $ ls $CVSROOT | ||||
| CVSROOT/ | ||||
|     </programlisting> | ||||
| </programlisting> | ||||
|    </para> | ||||
|   </sect2> | ||||
| 
 | ||||
| @ -370,16 +370,16 @@ CVSROOT/ | ||||
|     <application>cvsup</application> is in your path; on most systems | ||||
|     you can do this by typing | ||||
| 
 | ||||
|     <programlisting> | ||||
| <programlisting> | ||||
| which cvsup | ||||
|     </programlisting> | ||||
| </programlisting> | ||||
| 
 | ||||
|     Then, simply run | ||||
|     <application>cvsup</application> using: | ||||
| 
 | ||||
|     <programlisting> | ||||
| $ cvsup -L 2 <replaceable class="parameter">postgres.cvsup</replaceable> | ||||
|     </programlisting> | ||||
| <programlisting> | ||||
| cvsup -L 2 <replaceable class="parameter">postgres.cvsup</replaceable> | ||||
| </programlisting> | ||||
| 
 | ||||
|     where <option>-L 2</option> enables some status messages so you | ||||
|     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 | ||||
|     local <productname>CVS</productname> repository: | ||||
| 
 | ||||
|     <programlisting> | ||||
| <programlisting> | ||||
| # This file represents the standard CVSup distribution file | ||||
| # for the <productname>PostgreSQL</> ORDBMS project | ||||
| # Modified by lockhart@fourpalms.org 1997-08-28 | ||||
| @ -426,8 +426,7 @@ pgsql | ||||
| # pgsql-doc | ||||
| # pgsql-perl5 | ||||
| # pgsql-src | ||||
| 
 | ||||
|    </programlisting> | ||||
| </programlisting> | ||||
|    </para> | ||||
| 
 | ||||
|    <para> | ||||
| @ -454,7 +453,7 @@ CVSROOT/loginfo* | ||||
|     ftp site</ulink> | ||||
|     which will fetch the current snapshot only: | ||||
| 
 | ||||
|     <programlisting> | ||||
| <programlisting> | ||||
| # This file represents the standard CVSup distribution file | ||||
| # for the <productname>PostgreSQL</> ORDBMS project | ||||
| # | ||||
| @ -478,8 +477,7 @@ pgsql | ||||
| # pgsql-doc | ||||
| # pgsql-perl5 | ||||
| # pgsql-src | ||||
| 
 | ||||
|     </programlisting> | ||||
| </programlisting> | ||||
|    </para> | ||||
|   </sect2> | ||||
| 
 | ||||
| @ -563,11 +561,11 @@ pgsql | ||||
| 	If the binary is in the top level of the tar file, then simply | ||||
| 	unpack the tar file into your target directory: | ||||
| 
 | ||||
| 	<programlisting> | ||||
| $ cd /usr/local/bin | ||||
| $ tar zxvf /usr/local/src/cvsup-16.0-linux-i386.tar.gz | ||||
| $ mv cvsup.1 ../doc/man/man1/ | ||||
| 	</programlisting> | ||||
| <programlisting> | ||||
| cd /usr/local/bin | ||||
| tar zxvf /usr/local/src/cvsup-16.0-linux-i386.tar.gz | ||||
| mv cvsup.1 ../doc/man/man1/ | ||||
| </programlisting> | ||||
|        </para> | ||||
|       </step> | ||||
| 
 | ||||
| @ -585,13 +583,13 @@ $ mv cvsup.1 ../doc/man/man1/ | ||||
|      <para> | ||||
|       Ensure that the new binaries are in your path. | ||||
| 
 | ||||
|       <programlisting> | ||||
| <programlisting> | ||||
| $ rehash | ||||
| $ which cvsup | ||||
| $ set path=(<replaceable>path to cvsup</replaceable> $path) | ||||
| $ which cvsup | ||||
| /usr/local/bin/cvsup | ||||
|       </programlisting> | ||||
| </programlisting> | ||||
|      </para> | ||||
|     </step> | ||||
|    </procedure> | ||||
| @ -651,9 +649,9 @@ $ which cvsup | ||||
|        <para> | ||||
| 	Install the Modula-3 rpms: | ||||
| 
 | ||||
| 	<programlisting> | ||||
| <programlisting> | ||||
| # rpm -Uvh pm3*.rpm | ||||
| 	</programlisting> | ||||
| </programlisting> | ||||
|        </para> | ||||
|       </step> | ||||
|      </substeps> | ||||
| @ -663,10 +661,10 @@ $ which cvsup | ||||
|      <para> | ||||
|      Unpack the cvsup distribution: | ||||
| 
 | ||||
|       <programlisting> | ||||
| <programlisting> | ||||
| # cd /usr/local/src | ||||
| # tar zxf cvsup-16.0.tar.gz | ||||
|       </programlisting> | ||||
| </programlisting> | ||||
|      </para> | ||||
|     </step> | ||||
| 
 | ||||
| @ -675,16 +673,16 @@ $ which cvsup | ||||
|       Build the cvsup distribution, suppressing the GUI interface | ||||
|       feature to avoid requiring X11 libraries: | ||||
| 
 | ||||
|       <programlisting> | ||||
| <programlisting> | ||||
| # make M3FLAGS="-DNOGUI" | ||||
|       </programlisting> | ||||
| </programlisting> | ||||
| 
 | ||||
|       and if you want to build a static binary to move to systems | ||||
|       that may not have Modula-3 installed, try: | ||||
| 
 | ||||
|       <programlisting> | ||||
| <programlisting> | ||||
| # make M3FLAGS="-DNOGUI -DSTATIC" | ||||
|       </programlisting> | ||||
| </programlisting> | ||||
|      </para> | ||||
|     </step> | ||||
| 
 | ||||
| @ -692,29 +690,12 @@ $ which cvsup | ||||
|      <para> | ||||
|       Install the built binary: | ||||
| 
 | ||||
|       <programlisting> | ||||
| <programlisting> | ||||
| # make M3FLAGS="-DNOGUI -DSTATIC" install | ||||
|       </programlisting> | ||||
| </programlisting> | ||||
|      </para> | ||||
|     </step> | ||||
|    </procedure> | ||||
|   </sect2> | ||||
|  </sect1> | ||||
| </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"> | ||||
|  <title>Data Definition</title> | ||||
| @ -202,7 +202,7 @@ CREATE TABLE products ( | ||||
|    The default value may be an expression, which will be | ||||
|    evaluated whenever the default value is inserted | ||||
|    (<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 | ||||
|    example is generating a <quote>serial number</> for each row. | ||||
|    In <productname>PostgreSQL</productname> this is typically done by | ||||
| @ -1157,7 +1157,7 @@ SELECT name, altitude | ||||
|   </note> | ||||
| 
 | ||||
|   <para> | ||||
|    Inheritance does not automatically propogate data from | ||||
|    Inheritance does not automatically propagate data from | ||||
|    <command>INSERT</command> or <command>COPY</command> commands to | ||||
|    other tables in the inheritance hierarchy. In our example, the | ||||
|    following <command>INSERT</command> statement will fail: | ||||
| @ -1221,12 +1221,12 @@ WHERE c.altitude > 500 and c.tableoid = p.oid; | ||||
|   <para> | ||||
|    As shown above, a child table may locally define columns as well as | ||||
|    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 | ||||
|    inherited from other tables. A table can also inherit from more | ||||
|    than one parent table, in which case it inherits the union of the | ||||
|    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. | ||||
|   </para> | ||||
| 
 | ||||
| @ -1498,7 +1498,7 @@ CHECK ( county IN ( 'Oxfordshire','Buckinghamshire','Warwickshire' )) | ||||
| CHECK ( outletID BETWEEN 1 AND 99 ) | ||||
| </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 | ||||
|         complex constraints. Note that there is no difference in | ||||
|         syntax between range and list partitioning; those terms are | ||||
| @ -1722,10 +1722,10 @@ DO INSTEAD | ||||
| 
 | ||||
|     <listitem> | ||||
|      <para> | ||||
|       For some datatypes you must explicitly coerce the constant | ||||
|       values into the datatype of the column. The following constraint | ||||
|       For some data types you must explicitly coerce the constant | ||||
|       values into the data type of the column. The following constraint | ||||
|       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>: | ||||
| <programlisting> | ||||
| CHECK ( x = 1 ) | ||||
| @ -1734,9 +1734,9 @@ CHECK ( x = 1 ) | ||||
| <programlisting> | ||||
| CHECK ( x = 1::bigint ) | ||||
| </programlisting> | ||||
|       The problem is not limited to the <type>bigint</type> datatype | ||||
|       — it can occur whenever the default datatype of the | ||||
|       constant does not match the datatype of the column to which it | ||||
|       The problem is not limited to the <type>bigint</type> data type | ||||
|       — it can occur whenever the default data type of the | ||||
|       constant does not match the data type of the column to which it | ||||
|       is being compared. | ||||
|      </para> | ||||
|     </listitem> | ||||
| @ -1849,7 +1849,7 @@ ANALYZE measurement; | ||||
|     <listitem> | ||||
|      <para> | ||||
|       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 | ||||
|       vary with each execution.  Also, stable constants such as | ||||
|       <literal>CURRENT_DATE</literal> may not be used, since these are | ||||
| @ -1860,8 +1860,8 @@ ANALYZE measurement; | ||||
| 
 | ||||
|     <listitem> | ||||
|      <para> | ||||
|       UPDATEs and DELETEs against the master table do not perform | ||||
|       constraint exclusion. | ||||
|       <command>UPDATE</command> and <command>DELETE</command> commands | ||||
|       against the master table do not perform constraint exclusion. | ||||
|      </para> | ||||
|     </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"> | ||||
| @ -1609,11 +1609,11 @@ ECPG = ecpg | ||||
|     </para> | ||||
|     <note> | ||||
|     <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  | ||||
|     application because the internal representation of the  | ||||
|     <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 | ||||
|     that library. | ||||
|     </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 | ||||
| --> | ||||
| 
 | ||||
| @ -3430,7 +3430,7 @@ regexp_replace('foobarbaz', 'b(..)', 'X\\1Y', 'g') | ||||
| 
 | ||||
|    <note> | ||||
|     <para> | ||||
|      <productname>PostgreSQL</> currently has no multi-character collating | ||||
|      <productname>PostgreSQL</> currently has no multicharacter collating | ||||
|      elements. This information describes possible future behavior. | ||||
|     </para> | ||||
|    </note> | ||||
| @ -3820,7 +3820,7 @@ regexp_replace('foobarbaz', 'b(..)', 'X\\1Y', 'g') | ||||
|      A leading zero always indicates an octal escape. | ||||
|      A single non-zero digit, not followed by another digit, | ||||
|      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 | ||||
|      (i.e. the number is in the legal range for a back reference), | ||||
|      and otherwise is taken as octal. | ||||
| @ -3970,7 +3970,7 @@ regexp_replace('foobarbaz', 'b(..)', 'X\\1Y', 'g') | ||||
|      </listitem> | ||||
|      <listitem> | ||||
|       <para> | ||||
|        white space and comments cannot appear within multi-character symbols, | ||||
|        white space and comments cannot appear within multicharacter symbols, | ||||
|        such as <literal>(?:</> | ||||
|       </para> | ||||
|      </listitem> | ||||
| @ -3986,7 +3986,7 @@ regexp_replace('foobarbaz', 'b(..)', 'X\\1Y', 'g') | ||||
|     (where <replaceable>ttt</> is any text not containing a <literal>)</>) | ||||
|     is a comment, completely ignored. | ||||
|     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, | ||||
|     and their use is deprecated; use the expanded syntax instead. | ||||
|    </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> | ||||
|         </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> | ||||
| @ -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> | ||||
|         </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> | ||||
| @ -6568,7 +6568,7 @@ SELECT TIMESTAMP 'now';  -- incorrect for use with DEFAULT | ||||
|        <row> | ||||
|         <entry><literal><function>point</function>(<type>lseg</type>)</literal></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> | ||||
|        </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 | ||||
|    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 | ||||
|    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 | ||||
|    in single quotes, so that it looks like a literal constant.  To | ||||
|    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 | ||||
|     sequence functions were of type <type>text</>, not <type>regclass</>, and | ||||
|     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 | ||||
|     coercion from <type>text</> to <type>regclass</> before the function is | ||||
|     invoked. | ||||
| @ -6969,7 +6969,7 @@ nextval('foo')              <lineannotation>searches search path for <literal>fo | ||||
|     etc.  This <quote>early binding</> behavior is usually desirable for | ||||
|     sequence references in column defaults and views.  But sometimes you will | ||||
|     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</>: | ||||
| <programlisting> | ||||
| 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> | ||||
|         </entry> | ||||
|        <entry><type>boolean</type></entry> | ||||
|        <entry>Rotate server's logfile</entry> | ||||
|        <entry>Rotate server's log file</entry> | ||||
|       </row> | ||||
|      </tbody> | ||||
|     </tgroup> | ||||
| @ -9472,10 +9472,10 @@ SELECT set_config('log_statement_stats', 'off', false); | ||||
|    </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 | ||||
|     <varname>redirect_stderr</> is used for logging, since otherwise there | ||||
|     is no logfile manager subprocess. | ||||
|     is no log-file manager subprocess. | ||||
|    </para> | ||||
| 
 | ||||
|    <indexterm zone="functions-admin"> | ||||
| @ -9757,9 +9757,9 @@ SELECT set_config('log_statement_stats', 'off', false); | ||||
|    </indexterm> | ||||
|    <para> | ||||
|     <function>pg_stat_file</> returns a record containing the file | ||||
|     size, last accessed timestamp, last modified timestamp,  | ||||
|     last file status change timestamp (Unix platforms only),  | ||||
|     file creation timestamp (Win32 only), and a boolean indicating  | ||||
|     size, last accessed time stamp, last modified time stamp,  | ||||
|     last file status change time stamp (Unix platforms only),  | ||||
|     file creation timestamp (Windows only), and a <type>boolean</type> indicating  | ||||
|     if it is a directory.  Typical usages include: | ||||
| <programlisting> | ||||
| 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"> | ||||
| @ -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 | ||||
|    database, such as the lock manager and Write-Ahead Log.  The | ||||
|    <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 | ||||
|    takes care of concurrency, logging and searching the tree structure. | ||||
|  </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 | ||||
|   several examples of index methods implemented using | ||||
|   <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 | ||||
|   <filename>contrib</> modules also contain <acronym>GiST</acronym> | ||||
|   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> | ||||
|    <term>btree_gist</term> | ||||
|    <listitem> | ||||
|     <para>B-Tree equivalent functionality for several datatypes</para> | ||||
|     <para>B-Tree equivalent functionality for several data types</para> | ||||
|    </listitem> | ||||
|   </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"> | ||||
| @ -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 | ||||
|    are defined later in this chapter.  In addition, the | ||||
|    <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 | ||||
|    for creating or deleting <structname>pg_am</structname> entries; | ||||
|    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 | ||||
|    <structfield>amconcurrent</structfield> in <xref linkend="index-locking">. | ||||
|    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 | ||||
|    where no indexable restriction clause is given for the first index column. | ||||
|    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 | ||||
|    created for NULL key values.  Since most indexable operators are | ||||
|    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 | ||||
|    argument fails when an index scan has no restriction clause for a given | ||||
|    index column.  In practice this means that | ||||
| @ -242,7 +242,7 @@ ambeginscan (Relation indexRelation, | ||||
|    <emphasis>must</> create this struct by calling | ||||
|    <function>RelationGetIndexScan()</>.  In most cases | ||||
|    <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> | ||||
| @ -291,11 +291,11 @@ amrescan (IndexScanDesc scan, | ||||
|    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 | ||||
|    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 | ||||
|    remains the same.  This function is also called by | ||||
|    <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> | ||||
| @ -377,7 +377,7 @@ amcostestimate (PlannerInfo *root, | ||||
|    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 | ||||
|    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 | ||||
|    selected.  For non-lossy operators, the index scan must return exactly the | ||||
|    set of matching entries, as there is no recheck. | ||||
| @ -524,7 +524,7 @@ amcostestimate (PlannerInfo *root, | ||||
|      </listitem> | ||||
|      <listitem> | ||||
|       <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 | ||||
|        <function>amgettuple</>, and <function>ambulkdelete</> cannot delete | ||||
|        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 | ||||
|    heap entry.  Making <function>ambulkdelete</> block on such a pin ensures | ||||
|    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. | ||||
|   </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"> | ||||
|  <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 | ||||
|     advantages compared to the equivalent operations of GiST indexes. | ||||
|     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> | ||||
| @ -389,7 +389,7 @@ CREATE INDEX test2_mm_idx ON test2 (major, minor); | ||||
|   <para> | ||||
|    In all but the simplest applications, there are various combinations of | ||||
|    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 | ||||
|    and rely on the index-combination feature.  For example, if your | ||||
|    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"> | ||||
| @ -3539,10 +3539,10 @@ void PQtrace(PGconn *conn, FILE *stream); | ||||
| </para> | ||||
| <note> | ||||
| <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  | ||||
| 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 | ||||
| library and all applications using that library. | ||||
| </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"> | ||||
| @ -593,7 +593,7 @@ analyze threshold = analyze base threshold + analyze scale factor * number of tu | ||||
|   <para> | ||||
|    In <productname>PostgreSQL</> releases before 7.4, periodic reindexing | ||||
|    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 | ||||
|    timestamps in a table where old entries are eventually deleted — | ||||
|    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> | ||||
|    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 | ||||
|    size when using any non-btree index type. | ||||
|    size when using any non-B-tree index type. | ||||
|   </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 | ||||
|    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. | ||||
|   </para> | ||||
|  </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"> | ||||
| @ -458,7 +458,7 @@ printf("Files were %s.\n", flag ? "copied" : "removed"); | ||||
|       fragment, the fragments may not translate well separately.  It's | ||||
|       better to duplicate a little code so that each message to be | ||||
|       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. | ||||
|      </para> | ||||
|     </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"> | ||||
| @ -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 | ||||
|     <quote>in bulk</> more efficiently than row-by-row.  So it may be | ||||
|     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. | ||||
|    </para> | ||||
|   </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"> | ||||
| @ -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,  | ||||
|    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  | ||||
|    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: | ||||
| 
 | ||||
| <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"> | ||||
| @ -313,7 +313,7 @@ BEGIN { strict->import(); } | ||||
|      <listitem> | ||||
|       <para> | ||||
|        <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 | ||||
| that the result set will be relatively small.</emphasis>  Here is an | ||||
| example of a query (<command>SELECT</command> command) with the | ||||
| @ -384,7 +384,7 @@ SELECT * FROM test_munge(); | ||||
|     </para> | ||||
|     <para> | ||||
|     <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. | ||||
|     <literal>spi_fetchrow</literal> works <emphasis>only</emphasis> with | ||||
|     <literal>spi_query</literal>. The following example illustrates how | ||||
| @ -687,7 +687,7 @@ $$ LANGUAGE plperl; | ||||
|      <term><literal>@{$_TD->{args}}</literal></term> | ||||
|      <listitem> | ||||
|       <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> | ||||
|      </listitem> | ||||
|     </varlistentry> | ||||
| @ -787,7 +787,7 @@ CREATE TRIGGER test_valid_id_trig | ||||
|      </para> | ||||
|      <para> | ||||
|         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 | ||||
|         <literal>return_next</literal> for each row returned, as shown | ||||
|         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">  | ||||
| @ -986,7 +986,7 @@ $$ LANGUAGE plpgsql; | ||||
|      <application>PL/pgSQL</application> interpreter casts this | ||||
|      string to the <type>timestamp</type> type by calling the | ||||
|      <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. | ||||
|     </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 | ||||
| --> | ||||
| 
 | ||||
| @ -143,11 +143,11 @@ SELECT col FROM tab ORDER BY col USING sortop LIMIT 1; | ||||
| </programlisting> | ||||
|    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. | ||||
|    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>MAX</>.  Note that the optimization will never | ||||
|    actually take effect unless the specified operator is the LessThan or | ||||
|    GreaterThan strategy member of a btree index opclass. | ||||
|    actually take effect unless the specified operator is the <quote>less than</quote> or | ||||
|    <quote>greater than</quote> strategy member of a B-tree index operator class. | ||||
|   </para> | ||||
|  </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 | ||||
|       <function>MAX</>-like aggregate. | ||||
|       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. | ||||
|      </para> | ||||
|     </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 | ||||
| --> | ||||
| 
 | ||||
| @ -58,7 +58,7 @@ where <replaceable class="PARAMETER">constraint</replaceable> is: | ||||
|   <caution> | ||||
|   <para> | ||||
|    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 | ||||
|    respects the constraints.  In <application>PL/pgSQL</>, one possible | ||||
|    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 | ||||
| --> | ||||
| 
 | ||||
| @ -308,7 +308,7 @@ PostgreSQL documentation | ||||
|      <term><option>-U <replaceable class="parameter">username</replaceable></option></term> | ||||
|      <listitem> | ||||
|       <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>. | ||||
|       </para> | ||||
|      </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 | ||||
| --> | ||||
| 
 | ||||
| @ -61,7 +61,7 @@ PostgreSQL documentation | ||||
|    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 | ||||
|    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. | ||||
|    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 | ||||
| @ -78,8 +78,8 @@ PostgreSQL documentation | ||||
|   <para> | ||||
|    The <literal>-o</>, <literal>-x</>, <literal>-m</>, <literal>-O</>, | ||||
|    and <literal>-l</> | ||||
|    switches allow the next OID, next transaction ID, next multi-transaction | ||||
|    ID, next multi-transaction offset, and WAL starting address values to | ||||
|    switches allow the next OID, next transaction ID, next multitransaction | ||||
|    ID, next multitransaction offset, and WAL starting address values to | ||||
|    be set manually.  These are only needed when | ||||
|    <command>pg_resetxlog</command> is unable to determine appropriate values | ||||
|    by reading <filename>pg_control</>.  Safe values may be determined as | ||||
| @ -102,7 +102,7 @@ PostgreSQL documentation | ||||
| 
 | ||||
|     <listitem> | ||||
|      <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 | ||||
|       file name in the directory <filename>pg_multixact/offsets</> under the | ||||
|       data directory, adding one, and then multiplying by 65536.  As above, | ||||
| @ -113,7 +113,7 @@ PostgreSQL documentation | ||||
| 
 | ||||
|     <listitem> | ||||
|      <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 | ||||
|       file name in the directory <filename>pg_multixact/members</> under the | ||||
|       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 | ||||
| --> | ||||
| 
 | ||||
| @ -2015,7 +2015,7 @@ bar | ||||
|         <term><varname>HISTFILE</varname></term> | ||||
|         <listitem> | ||||
|         <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 | ||||
| <programlisting> | ||||
| \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: | ||||
| 
 | ||||
| @ -285,7 +285,8 @@ pg_[A-Za-z0-9_]                 <application> | ||||
| 
 | ||||
|      <listitem> | ||||
|       <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) | ||||
|       </para> | ||||
|       <para> | ||||
| @ -321,7 +322,7 @@ pg_[A-Za-z0-9_]                 <application> | ||||
|        backslash in a string literal as introducing a special escape sequence, | ||||
|        e.g. <literal>\n</> or <literal>\010</>. | ||||
|        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 | ||||
|        <productname>PostgreSQL</productname> project is planning to | ||||
|        remove the special meaning of backslashes in strings. For | ||||
| @ -538,7 +539,7 @@ psql -t -f fixseq.sql db1 | psql -e db1 | ||||
| 
 | ||||
|       <listitem> | ||||
|        <para> | ||||
|         Improve GiST and rtree index performance (Neil) | ||||
|         Improve GiST and R-tree index performance (Neil) | ||||
|        </para> | ||||
|       </listitem> | ||||
| 
 | ||||
| @ -579,7 +580,7 @@ psql -t -f fixseq.sql db1 | psql -e db1 | ||||
| 
 | ||||
|       <listitem> | ||||
|        <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) | ||||
|        </para> | ||||
|        <para> | ||||
| @ -733,7 +734,7 @@ psql -t -f fixseq.sql db1 | psql -e db1 | ||||
|       <listitem> | ||||
|        <para> | ||||
|         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) | ||||
|        </para> | ||||
|        <para> | ||||
| @ -1639,7 +1640,7 @@ psql -t -f fixseq.sql db1 | psql -e db1 | ||||
| 
 | ||||
|       <listitem> | ||||
|        <para> | ||||
|         Allow Perl non-fatal warnings to generate <command>NOTICE</> | ||||
|         Allow Perl nonfatal warnings to generate <command>NOTICE</> | ||||
|         messages (Andrew) | ||||
|        </para> | ||||
|       </listitem> | ||||
| @ -1962,7 +1963,7 @@ psql -t -f fixseq.sql db1 | psql -e db1 | ||||
| 
 | ||||
|       <listitem> | ||||
|        <para> | ||||
|         Allow IPv6 connections to be used on Win32 (Andrew) | ||||
|         Allow IPv6 connections to be used on Windows (Andrew) | ||||
|        </para> | ||||
|       </listitem> | ||||
| 
 | ||||
| @ -2711,7 +2712,7 @@ typedefs (Michael)</para></listitem> | ||||
|        <para> | ||||
|         <command>COPY</command> can now read and write | ||||
|         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> | ||||
|       </listitem> | ||||
|      </varlistentry> | ||||
| @ -2756,7 +2757,7 @@ typedefs (Michael)</para></listitem> | ||||
| 
 | ||||
|      <listitem> | ||||
|       <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 | ||||
|        finishing the current interactive command. This makes a | ||||
|        difference when the triggering query occurred within a function: | ||||
| @ -2838,7 +2839,7 @@ typedefs (Michael)</para></listitem> | ||||
|     <listitem> | ||||
|      <para> | ||||
|       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. | ||||
|      </para> | ||||
|     </listitem> | ||||
| @ -2881,7 +2882,7 @@ typedefs (Michael)</para></listitem> | ||||
| 
 | ||||
|     <listitem> | ||||
|      <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 | ||||
|       <literal>204.248.199.1/31</literal> as a <type>CIDR</> value. Such | ||||
|       values should never have been accepted by | ||||
| @ -3168,7 +3169,7 @@ typedefs (Michael)</para></listitem> | ||||
|        </para> | ||||
|        <para> | ||||
|         This feature allows more flexibility in generating statistics | ||||
|         for non-standard data types. | ||||
|         for nonstandard data types. | ||||
|        </para> | ||||
|       </listitem> | ||||
|    | ||||
| @ -3920,7 +3921,7 @@ typedefs (Michael)</para></listitem> | ||||
|    | ||||
|       <listitem> | ||||
|        <para> | ||||
|         Reject non-rectangular array values as erroneous (Joe) | ||||
|         Reject nonrectangular array values as erroneous (Joe) | ||||
|        </para> | ||||
|        <para> | ||||
|         Formerly, <function>array_in</> would silently build a | ||||
| @ -4182,7 +4183,7 @@ typedefs (Michael)</para></listitem> | ||||
|    | ||||
|       <listitem> | ||||
|        <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) | ||||
|        </para> | ||||
|       </listitem> | ||||
| @ -4219,13 +4220,13 @@ typedefs (Michael)</para></listitem> | ||||
|    | ||||
|       <listitem> | ||||
|        <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 | ||||
|         finishing the current interactive command. This makes a difference | ||||
|         when the triggering query occurred within a function: the trigger | ||||
|         is invoked before the function proceeds to its next operation. For | ||||
|         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. | ||||
|        </para> | ||||
|       </listitem> | ||||
| @ -4758,7 +4759,7 @@ typedefs (Michael)</para></listitem> | ||||
|         backend executables too (Bruce) | ||||
|        </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. | ||||
|        </para> | ||||
|       </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"> | ||||
|  <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; | ||||
| </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: | ||||
| 
 | ||||
| <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"> | ||||
| @ -854,7 +854,7 @@ options        SEMMAP=256 | ||||
|        <para> | ||||
|         Older distributions may not have the <command>sysctl</command> program, | ||||
|         but equivalent changes can be made by manipulating the  | ||||
|         <filename>/proc</filename> filesystem: | ||||
|         <filename>/proc</filename> file system: | ||||
| <screen> | ||||
| <prompt>$</prompt> <userinput>echo 134217728 >/proc/sys/kernel/shmmax</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> | ||||
|     <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 | ||||
|      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 | ||||
|      GEOM Based Disk Encryption, or <acronym>gbde</acronym>. | ||||
|     </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 | ||||
|      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 | ||||
|      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, | ||||
|      and sometimes the key is stored somewhere on the host that mounts | ||||
|      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"> | ||||
| @ -75,7 +75,7 @@ Item | ||||
| 
 | ||||
| <row> | ||||
|  <entry><filename>pg_multixact</></entry> | ||||
|  <entry>Subdirectory containing multi-transaction status data | ||||
|  <entry>Subdirectory containing multitransaction status data | ||||
|   (used for shared row locks)</entry>  | ||||
| </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 | ||||
| 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 | ||||
| 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. | ||||
| </para> | ||||
| 
 | ||||
| @ -663,7 +663,7 @@ data. Empty in ordinary tables.</entry> | ||||
|   <structfield>attlen</structfield> and <structfield>attalign</structfield>. | ||||
|   There is no way to directly get a | ||||
|   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> | ||||
|   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"> | ||||
| @ -549,7 +549,7 @@ CAST ( '<replaceable>string</replaceable>' AS <replaceable>type</replaceable> ) | ||||
|      The <literal>CAST()</> syntax conforms to SQL.  The | ||||
|      <literal><replaceable>type</replaceable> '<replaceable>string</replaceable>'</literal> | ||||
|      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 | ||||
|      <literal>::</literal> is historical <productname>PostgreSQL</productname> | ||||
|      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 | ||||
|     to be subscripted is just a column reference or positional parameter. | ||||
|     Also, multiple subscripts can be concatenated when the original array | ||||
|     is multi-dimensional. | ||||
|     is multidimensional. | ||||
|     For example, | ||||
| 
 | ||||
| <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"> | ||||
| @ -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 | ||||
|     modifying the data that will be inserted or updated.  For example, | ||||
|     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 | ||||
|     used to propagate the updates to other tables, or make consistency | ||||
|     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"> | ||||
| @ -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 | ||||
| the destination column's declared length (actually, its | ||||
| <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 | ||||
| checking or truncation. | ||||
| </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"> | ||||
|  <title>Reliability</title> | ||||
| <chapter id="wal"> | ||||
|  <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> | ||||
|    Reliability is a major feature of any serious database system, and | ||||
|    <productname>PostgreSQL</> does everything possible to guarantee | ||||
|    reliable operation. One aspect of reliable operation is that all data | ||||
|    recorded by a committed transaction should be stored in a non-volatile area | ||||
|    that is safe from power loss, operating system failure, and hardware | ||||
|    failure (except failure of the non-volatile area itself, of course). | ||||
|    Successfully writing the data to the computer's permanent storage | ||||
|    (disk drive or equivalent) ordinarily meets this requirement. | ||||
|    In fact, even if a computer is fatally damaged, if | ||||
|    the disk drives survive they can be moved to another computer with | ||||
|    similar hardware and all committed transactions will remain intact. | ||||
|    Reliability is an important property of any serious database | ||||
|    system, and <productname>PostgreSQL</> does everything possible to | ||||
|    guarantee reliable operation. One aspect of reliable operation is | ||||
|    that all data recorded by a committed transaction should be stored | ||||
|    in a nonvolatile area that is safe from power loss, operating | ||||
|    system failure, and hardware failure (except failure of the | ||||
|    nonvolatile area itself, of course).  Successfully writing the data | ||||
|    to the computer's permanent storage (disk drive or equivalent) | ||||
|    ordinarily meets this requirement.  In fact, even if a computer is | ||||
|    fatally damaged, if the disk drives survive they can be moved to | ||||
|    another computer with similar hardware and all committed | ||||
|    transactions will remain intact. | ||||
|   </para> | ||||
| 
 | ||||
|   <para> | ||||
| @ -76,17 +85,13 @@ | ||||
|    permanent storage <emphasis>before</> modifying the actual page on | ||||
|    disk. By doing this, during crash recovery <productname>PostgreSQL</> can | ||||
|    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  | ||||
|    <xref linkend="guc-full-page-writes"> parameter. | ||||
|   </para> | ||||
|  </sect1> | ||||
|   | ||||
|   <para> | ||||
|    The following sections explain how the Write-Ahead Log is used to  | ||||
|    obtain efficient, reliable operation. | ||||
|   </para> | ||||
| 
 | ||||
|   <sect1 id="wal"> | ||||
|   <sect1 id="wal-intro"> | ||||
|    <title>Write-Ahead Logging (<acronym>WAL</acronym>)</title> | ||||
| 
 | ||||
|    <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"> | ||||
| @ -347,7 +347,7 @@ table1.column1 OP table2.column2 | ||||
|      in a hash index operator class.  This is not enforced when you create | ||||
|      the operator, since of course the referencing operator class couldn't | ||||
|      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's input data type.  Of course, you must also supply a suitable | ||||
|      hash function before you can create the operator class. | ||||
| @ -479,7 +479,7 @@ table1.column1 OP table2.column2 | ||||
| 
 | ||||
|       <listitem> | ||||
|        <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. | ||||
|        </para> | ||||
|       </listitem> | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user