diff --git a/doc/src/sgml/array.sgml b/doc/src/sgml/array.sgml index 4b03e18903..2d179fd7f1 100644 --- a/doc/src/sgml/array.sgml +++ b/doc/src/sgml/array.sgml @@ -1,4 +1,4 @@ - + Arrays @@ -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 CREATE TABLE is simply documentation, it does not - affect runtime behavior. + affect run-time behavior. diff --git a/doc/src/sgml/backup.sgml b/doc/src/sgml/backup.sgml index c954816936..1cbe26f77a 100644 --- a/doc/src/sgml/backup.sgml +++ b/doc/src/sgml/backup.sgml @@ -1,5 +1,5 @@ Backup and Restore @@ -598,7 +598,7 @@ archive_command = 'test ! -f .../%f && cp %p .../%f' - 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 (%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 parameter. (Read the notes and warnings in - before you do so.) + 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 diff --git a/doc/src/sgml/catalogs.sgml b/doc/src/sgml/catalogs.sgml index 445f359f22..cfd8b8dc0b 100644 --- a/doc/src/sgml/catalogs.sgml +++ b/doc/src/sgml/catalogs.sgml @@ -1,6 +1,6 @@ @@ -5416,7 +5416,7 @@ and histogram_bounds arrays can be set on a column-by-column basis using the ALTER TABLE SET STATISTICS command, or globally by setting the - runtime parameter. + run-time parameter. diff --git a/doc/src/sgml/charset.sgml b/doc/src/sgml/charset.sgml index eb4317955b..aee43acfd1 100644 --- a/doc/src/sgml/charset.sgml +++ b/doc/src/sgml/charset.sgml @@ -1,4 +1,4 @@ - + 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> diff --git a/doc/src/sgml/client-auth.sgml b/doc/src/sgml/client-auth.sgml index e4dff02fa8..2894bfa69d 100644 --- a/doc/src/sgml/client-auth.sgml +++ b/doc/src/sgml/client-auth.sgml @@ -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/"> diff --git a/doc/src/sgml/config.sgml b/doc/src/sgml/config.sgml index ca02d87fdf..a1c1496cd2 100644 --- a/doc/src/sgml/config.sgml +++ b/doc/src/sgml/config.sgml @@ -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 @@ -21,7 +21,7 @@ $PostgreSQL: pgsql/doc/src/sgml/config.sgml,v 1.34 2005/11/01 23:19:05 neilc Exp 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 ON, OFF, TRUE, FALSE, YES, @@ -456,9 +456,9 @@ SET ENABLE_SEQSCAN TO OFF; - On systems that support the TCP_KEEPIDLE socket option, specifies the + On systems that support the TCP_KEEPIDLE 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 TCP_KEEPIDLE is not supported, this parameter must be 0. This option is ignored for connections made via a Unix-domain socket. @@ -472,9 +472,9 @@ SET ENABLE_SEQSCAN TO OFF; - On systems that support the TCP_KEEPINTVL socket option, specifies how + On systems that support the TCP_KEEPINTVL 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 TCP_KEEPINTVL is not supported, this parameter must be 0. This option is ignored for connections made via a Unix-domain socket. @@ -488,9 +488,9 @@ SET ENABLE_SEQSCAN TO OFF; - On systems that support the TCP_KEEPCNT socket option, specifies how + On systems that support the TCP_KEEPCNT 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 TCP_KEEPCNT is not supported, this parameter must be 0. This option is ignored for connections made via a Unix-domain socket. @@ -590,13 +590,13 @@ SET ENABLE_SEQSCAN TO OFF; - Sets the hostname part of the service principal. + Sets the host name part of the service principal. This, combined with krb_srvname, is used to generate the complete service principal, that is krb_srvname/krb_server_hostname@REALM. - If not set, the default is the server hostname. See + If not set, the default is the server host name. See for details. This parameter can only be set at server start. @@ -609,7 +609,7 @@ SET ENABLE_SEQSCAN TO OFF; - Sets whether Kerberos usernames should be treated case-insensitively. + Sets whether Kerberos user names should be treated case-insensitively. The default is off (case sensitive). This parameter can only be set at server start. @@ -2258,8 +2258,8 @@ SELECT * FROM parent WHERE key = 2400; log_rotation_age to 60, and log_rotation_size to 1000000. Including %M in log_filename 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. @@ -2663,7 +2663,7 @@ SELECT * FROM parent WHERE key = 2400; %h - Remote Hostname or IP address + Remote host name or IP address yes @@ -2794,7 +2794,7 @@ SELECT * FROM parent WHERE key = 2400; - Runtime Statistics + Run-Time Statistics Statistics Monitoring diff --git a/doc/src/sgml/cvs.sgml b/doc/src/sgml/cvs.sgml index 795cb53748..7fa25773b4 100644 --- a/doc/src/sgml/cvs.sgml +++ b/doc/src/sgml/cvs.sgml @@ -1,5 +1,5 @@ @@ -64,9 +64,9 @@ $PostgreSQL: pgsql/doc/src/sgml/cvs.sgml,v 1.35 2005/10/15 20:15:48 neilc Exp $ Do an initial login to the CVS server: - + cvs -d :pserver:anoncvs@anoncvs.postgresql.org:/projects/cvsroot login - + 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 Fetch the PostgreSQL sources: - + cvs -z3 -d :pserver:anoncvs@anoncvs.postgresql.org:/projects/cvsroot co -P pgsql - + This installs the PostgreSQL sources into a subdirectory pgsql @@ -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 CVS sources, cd into the pgsql subdirectory, and issue - -$ cvs -z3 update -d -P - + +cvs -z3 update -d -P + 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 .cvsrc in your home directory that contains - + cvs -z3 update -d -P - + This supplies the option to all cvs commands, and the and options to cvs update. Then you just have to say - -$ cvs update - + +cvs update + to update your files. @@ -150,9 +150,9 @@ $ cvs update Some older versions of CVS 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 - -$ chmod -R go-w pgsql - + +chmod -R go-w pgsql + to set the permissions properly. This bug is fixed as of CVS 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: - -$ cvs checkout -r REL6_4 tc - + +cvs checkout -r REL6_4 tc + 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: - -$ cd pgsql -$ cvs tag -b REL6_4 - + +cd pgsql +cvs tag -b REL6_4 + which will create the tag and the branch for the RELEASE tree. @@ -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: - + cd RELEASE cvs checkout -P -r REL6_4 pgsql cd ../CURRENT cvs checkout -P pgsql - + which results in two directory trees, RELEASE/pgsql and CURRENT/pgsql. From that point on, @@ -273,16 +273,16 @@ cvs checkout -P pgsql After you've done the initial checkout on a branch - -$ cvs checkout -r REL6_4 - + +cvs checkout -r REL6_4 + anything you do within that directory structure is restricted to that branch. If you apply a patch to that directory structure and do a - + cvs commit - + while inside of it, the patch is applied to the branch and only the branch. @@ -333,9 +333,9 @@ cvs commit /opt/postgres/cvs/. If you intend to keep your repository in /home/cvs/, then put - + setenv CVSROOT /home/cvs - + in your .cshrc file, or a similar line in your .bashrc or @@ -347,18 +347,18 @@ setenv CVSROOT /home/cvs Once CVSROOT is set, then this can be done with a single command: - -$ cvs init - + +cvs init + after which you should see at least a directory named CVSROOT when listing the CVSROOT directory: - + $ ls $CVSROOT CVSROOT/ - + @@ -370,16 +370,16 @@ CVSROOT/ cvsup is in your path; on most systems you can do this by typing - + which cvsup - + Then, simply run cvsup using: - -$ cvsup -L 2 postgres.cvsup - + +cvsup -L 2 postgres.cvsup + where enables some status messages so you can monitor the progress of the update, @@ -393,7 +393,7 @@ $ cvsup -L 2 postgres.cvsup modified for a specific installation, and which maintains a full local CVS repository: - + # This file represents the standard CVSup distribution file # for the PostgreSQL ORDBMS project # Modified by lockhart@fourpalms.org 1997-08-28 @@ -426,8 +426,7 @@ pgsql # pgsql-doc # pgsql-perl5 # pgsql-src - - + @@ -454,7 +453,7 @@ CVSROOT/loginfo* ftp site which will fetch the current snapshot only: - + # This file represents the standard CVSup distribution file # for the PostgreSQL ORDBMS project # @@ -478,8 +477,7 @@ pgsql # pgsql-doc # pgsql-perl5 # pgsql-src - - + @@ -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: - -$ cd /usr/local/bin -$ tar zxvf /usr/local/src/cvsup-16.0-linux-i386.tar.gz -$ mv cvsup.1 ../doc/man/man1/ - + +cd /usr/local/bin +tar zxvf /usr/local/src/cvsup-16.0-linux-i386.tar.gz +mv cvsup.1 ../doc/man/man1/ + @@ -585,13 +583,13 @@ $ mv cvsup.1 ../doc/man/man1/ Ensure that the new binaries are in your path. - + $ rehash $ which cvsup $ set path=(path to cvsup $path) $ which cvsup /usr/local/bin/cvsup - + @@ -651,9 +649,9 @@ $ which cvsup Install the Modula-3 rpms: - + # rpm -Uvh pm3*.rpm - + @@ -663,10 +661,10 @@ $ which cvsup Unpack the cvsup distribution: - + # cd /usr/local/src # tar zxf cvsup-16.0.tar.gz - + @@ -675,16 +673,16 @@ $ which cvsup Build the cvsup distribution, suppressing the GUI interface feature to avoid requiring X11 libraries: - + # make M3FLAGS="-DNOGUI" - + and if you want to build a static binary to move to systems that may not have Modula-3 installed, try: - + # make M3FLAGS="-DNOGUI -DSTATIC" - + @@ -692,29 +690,12 @@ $ which cvsup Install the built binary: - + # make M3FLAGS="-DNOGUI -DSTATIC" install - + - - diff --git a/doc/src/sgml/ddl.sgml b/doc/src/sgml/ddl.sgml index 0461c8b8b2..a3c9552117 100644 --- a/doc/src/sgml/ddl.sgml +++ b/doc/src/sgml/ddl.sgml @@ -1,4 +1,4 @@ - + Data Definition @@ -202,7 +202,7 @@ CREATE TABLE products ( The default value may be an expression, which will be evaluated whenever the default value is inserted (not when the table is created). A common example - is that a timestamp column may have a default of now(), + is that a timestamp column may have a default of now(), so that it gets set to the time of row insertion. Another common example is generating a serial number for each row. In PostgreSQL this is typically done by @@ -1157,7 +1157,7 @@ SELECT name, altitude - Inheritance does not automatically propogate data from + Inheritance does not automatically propagate data from INSERT or COPY commands to other tables in the inheritance hierarchy. In our example, the following INSERT statement will fail: @@ -1221,12 +1221,12 @@ WHERE c.altitude > 500 and c.tableoid = p.oid; 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. @@ -1498,7 +1498,7 @@ CHECK ( county IN ( 'Oxfordshire','Buckinghamshire','Warwickshire' )) CHECK ( outletID BETWEEN 1 AND 99 ) - These can be linked together with the boolean operators + These can be linked together with the Boolean operators AND and OR 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 - 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 x is an integer - datatype, but not if x is a + data type, but not if x is a bigint: CHECK ( x = 1 ) @@ -1734,9 +1734,9 @@ CHECK ( x = 1 ) CHECK ( x = 1::bigint ) - The problem is not limited to the bigint 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 bigint 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. @@ -1849,7 +1849,7 @@ ANALYZE measurement; 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 CURRENT_DATE may not be used, since these are @@ -1860,8 +1860,8 @@ ANALYZE measurement; - UPDATEs and DELETEs against the master table do not perform - constraint exclusion. + UPDATE and DELETE commands + against the master table do not perform constraint exclusion. diff --git a/doc/src/sgml/ecpg.sgml b/doc/src/sgml/ecpg.sgml index 9b63153f9f..2406200a1c 100644 --- a/doc/src/sgml/ecpg.sgml +++ b/doc/src/sgml/ecpg.sgml @@ -1,5 +1,5 @@ @@ -1609,11 +1609,11 @@ ECPG = ecpg - On Win32, if the ecpg libraries and an application are + On Windows, if the ecpg libraries and an application are compiled with different flags, this function call will crash the application because the internal representation of the 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. diff --git a/doc/src/sgml/func.sgml b/doc/src/sgml/func.sgml index 15f3250518..9cc98b3f92 100644 --- a/doc/src/sgml/func.sgml +++ b/doc/src/sgml/func.sgml @@ -1,5 +1,5 @@ @@ -3430,7 +3430,7 @@ regexp_replace('foobarbaz', 'b(..)', 'X\\1Y', 'g') - PostgreSQL currently has no multi-character collating + PostgreSQL currently has no multicharacter collating elements. This information describes possible future behavior. @@ -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') - white space and comments cannot appear within multi-character symbols, + white space and comments cannot appear within multicharacter symbols, such as (?: @@ -3986,7 +3986,7 @@ regexp_replace('foobarbaz', 'b(..)', 'X\\1Y', 'g') (where ttt is any text not containing a )) is a comment, completely ignored. Again, this is not allowed between the characters of - multi-character symbols, like (?:. + multicharacter symbols, like (?:. Such comments are more a historical artifact than a useful facility, and their use is deprecated; use the expanded syntax instead. @@ -5954,7 +5954,7 @@ SELECT date_trunc('year', TIMESTAMP '2001-02-16 20:38:40'); timestamp without time zone AT TIME ZONE zone timestamp with time zone - Treat given timestamp without time zone as located in the specified time zone + Treat given time stamp without time zone as located in the specified time zone @@ -5962,7 +5962,7 @@ SELECT date_trunc('year', TIMESTAMP '2001-02-16 20:38:40'); timestamp with time zone AT TIME ZONE zone timestamp without time zone - Convert given timestamp with time zone to the new time zone + Convert given time stamp with time zone to the new time zone @@ -6568,7 +6568,7 @@ SELECT TIMESTAMP 'now'; -- incorrect for use with DEFAULT point(lseg) point - center of lseg + center of line segment point(lseg '((-1,0),(1,0))') @@ -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 regclass argument, which is just the OID of the sequence in the pg_class system catalog. You do not have to look up the - OID by hand, however, since the regclass datatype's input + OID by hand, however, since the 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') searches search path for fo Before PostgreSQL 8.1, the arguments of the sequence functions were of type text, not 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 text to regclass before the function is invoked. @@ -6969,7 +6969,7 @@ nextval('foo') searches search path for fo etc. This early binding behavior is usually desirable for sequence references in column defaults and views. But sometimes you will want 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 text constant instead of regclass: nextval('foo'::text) foo is looked up at runtime @@ -9444,7 +9444,7 @@ SELECT set_config('log_statement_stats', 'off', false); pg_rotate_logfile() boolean - Rotate server's logfile + Rotate server's log file @@ -9472,10 +9472,10 @@ SELECT set_config('log_statement_stats', 'off', false); - pg_rotate_logfile signals the logfile manager to switch + pg_rotate_logfile signals the log-file manager to switch to a new output file immediately. This works only when redirect_stderr is used for logging, since otherwise there - is no logfile manager subprocess. + is no log-file manager subprocess. @@ -9757,9 +9757,9 @@ SELECT set_config('log_statement_stats', 'off', false); 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 boolean indicating if it is a directory. Typical usages include: SELECT * FROM pg_stat_file('filename'); diff --git a/doc/src/sgml/gist.sgml b/doc/src/sgml/gist.sgml index 6a1f0a3322..ed4c689a72 100644 --- a/doc/src/sgml/gist.sgml +++ b/doc/src/sgml/gist.sgml @@ -1,5 +1,5 @@ @@ -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 GiST 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 GiST layer itself takes care of concurrency, logging and searching the tree structure. @@ -187,7 +187,7 @@ $PostgreSQL: pgsql/doc/src/sgml/gist.sgml,v 1.23 2005/10/21 13:59:05 tgl Exp $ The PostgreSQL source distribution includes several examples of index methods implemented using GiST. 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 src/backend/access/gist/gistproc.c). The following contrib modules also contain GiST operator classes: @@ -197,7 +197,7 @@ $PostgreSQL: pgsql/doc/src/sgml/gist.sgml,v 1.23 2005/10/21 13:59:05 tgl Exp $ btree_gist - B-Tree equivalent functionality for several datatypes + B-Tree equivalent functionality for several data types diff --git a/doc/src/sgml/indexam.sgml b/doc/src/sgml/indexam.sgml index b5f3d33479..7480c98a15 100644 --- a/doc/src/sgml/indexam.sgml +++ b/doc/src/sgml/indexam.sgml @@ -1,5 +1,5 @@ @@ -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 pg_am 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 pg_am 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 , and those of amconcurrent in . The amcanmulticol flag asserts that the - access method supports multi-column indexes, while + access method supports multicolumn indexes, while amoptionalkey asserts that it allows scans where no indexable restriction clause is given for the first index column. When amcanmulticol is false, @@ -113,7 +113,7 @@ $PostgreSQL: pgsql/doc/src/sgml/indexam.sgml,v 2.6 2005/06/13 23:14:47 tgl Exp $ amindexnulls 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, must create this struct by calling RelationGetIndexScan(). In most cases ambeginscan itself does little beyond making that call; - the interesting parts of indexscan startup are in amrescan. + the interesting parts of index-scan startup are in amrescan. @@ -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 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 RelationGetIndexScan(), so it is used for initial setup - of an indexscan as well as rescanning. + of an index scan as well as rescanning. @@ -377,7 +377,7 @@ amcostestimate (PlannerInfo *root, The operator class may indicate that the index is 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, - 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 amgettuple, and ambulkdelete cannot delete entries from pages that are pinned by other backends. The need @@ -553,7 +553,7 @@ amcostestimate (PlannerInfo *root, may still be in flight from the index entry to the matching heap entry. Making ambulkdelete block on such a pin ensures that 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. diff --git a/doc/src/sgml/indices.sgml b/doc/src/sgml/indices.sgml index fc268389e8..d3bc74da92 100644 --- a/doc/src/sgml/indices.sgml +++ b/doc/src/sgml/indices.sgml @@ -1,4 +1,4 @@ - + Indexes @@ -235,7 +235,7 @@ CREATE INDEX name ON table 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 - REINDEXing after a database crash. + reindexing after a database crash. @@ -389,7 +389,7 @@ CREATE INDEX test2_mm_idx ON test2 (major, minor); 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 diff --git a/doc/src/sgml/libpq.sgml b/doc/src/sgml/libpq.sgml index 36c172aeb9..5b0444190c 100644 --- a/doc/src/sgml/libpq.sgml +++ b/doc/src/sgml/libpq.sgml @@ -1,5 +1,5 @@ @@ -3539,10 +3539,10 @@ void PQtrace(PGconn *conn, FILE *stream); -On Win32, if the libpq library and an application are +On Windows, if the libpq library and an application are compiled with different flags, this function call will crash the application because the internal representation of the 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. diff --git a/doc/src/sgml/maintenance.sgml b/doc/src/sgml/maintenance.sgml index 452c416345..66356c0d01 100644 --- a/doc/src/sgml/maintenance.sgml +++ b/doc/src/sgml/maintenance.sgml @@ -1,5 +1,5 @@ @@ -593,7 +593,7 @@ analyze threshold = analyze base threshold + analyze scale factor * number of tu In PostgreSQL releases before 7.4, periodic reindexing was frequently necessary to avoid 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 - 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. - 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. diff --git a/doc/src/sgml/nls.sgml b/doc/src/sgml/nls.sgml index 0b40ce65f0..f7532869f8 100644 --- a/doc/src/sgml/nls.sgml +++ b/doc/src/sgml/nls.sgml @@ -1,5 +1,5 @@ @@ -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. diff --git a/doc/src/sgml/perform.sgml b/doc/src/sgml/perform.sgml index a965c9641b..53fa8210f8 100644 --- a/doc/src/sgml/perform.sgml +++ b/doc/src/sgml/perform.sgml @@ -1,5 +1,5 @@ @@ -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 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. diff --git a/doc/src/sgml/planstats.sgml b/doc/src/sgml/planstats.sgml index 4f22b481ed..13b7909f9d 100644 --- a/doc/src/sgml/planstats.sgml +++ b/doc/src/sgml/planstats.sgml @@ -1,5 +1,5 @@ @@ -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: diff --git a/doc/src/sgml/plperl.sgml b/doc/src/sgml/plperl.sgml index 9b8b4ceda4..46d180bdc7 100644 --- a/doc/src/sgml/plperl.sgml +++ b/doc/src/sgml/plperl.sgml @@ -1,5 +1,5 @@ @@ -313,7 +313,7 @@ BEGIN { strict->import(); } spi_exec_query 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. You should only use this command when you know that the result set will be relatively small. Here is an example of a query (SELECT command) with the @@ -384,7 +384,7 @@ SELECT * FROM test_munge(); spi_query and spi_fetchrow - 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. spi_fetchrow works only with spi_query. The following example illustrates how @@ -687,7 +687,7 @@ $$ LANGUAGE plperl; @{$_TD->{args}} - Arguments of the trigger function. Does not exist if $_TD->{argc} is 0. + Arguments of the trigger function. Does not exist if $_TD->{argc} is 0. @@ -787,7 +787,7 @@ CREATE TRIGGER test_valid_id_trig A similar problem occurs if a set-returning function passes a - large set of rows back to postgres via return. You + large set of rows back to PostgreSQL via return. You can avoid this problem too by instead using return_next for each row returned, as shown previously. diff --git a/doc/src/sgml/plpgsql.sgml b/doc/src/sgml/plpgsql.sgml index dc5cea9fb3..afea5ee79d 100644 --- a/doc/src/sgml/plpgsql.sgml +++ b/doc/src/sgml/plpgsql.sgml @@ -1,5 +1,5 @@ @@ -986,7 +986,7 @@ $$ LANGUAGE plpgsql; PL/pgSQL interpreter casts this string to the timestamp type by calling the text_out and timestamp_in - 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. diff --git a/doc/src/sgml/ref/create_aggregate.sgml b/doc/src/sgml/ref/create_aggregate.sgml index 24e233f589..70362f6503 100644 --- a/doc/src/sgml/ref/create_aggregate.sgml +++ b/doc/src/sgml/ref/create_aggregate.sgml @@ -1,5 +1,5 @@ @@ -143,11 +143,11 @@ SELECT col FROM tab ORDER BY col USING sortop LIMIT 1; 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 < operator is the proper sort + Ordinarily, a data type's < operator is the proper sort operator for MIN, and > is the proper sort operator for 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 less than or + greater than strategy member of a B-tree index operator class. @@ -243,7 +243,7 @@ SELECT col FROM tab ORDER BY col USING sortop LIMIT 1; The associated sort operator for a MIN- or 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. diff --git a/doc/src/sgml/ref/create_domain.sgml b/doc/src/sgml/ref/create_domain.sgml index 0ac449afc6..db015e1553 100644 --- a/doc/src/sgml/ref/create_domain.sgml +++ b/doc/src/sgml/ref/create_domain.sgml @@ -1,5 +1,5 @@ @@ -58,7 +58,7 @@ where constraint is: 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 PL/pgSQL, one possible workaround is to explicitly cast the result value to the domain type diff --git a/doc/src/sgml/ref/pg_ctl-ref.sgml b/doc/src/sgml/ref/pg_ctl-ref.sgml index d8843175c3..81fefe5280 100644 --- a/doc/src/sgml/ref/pg_ctl-ref.sgml +++ b/doc/src/sgml/ref/pg_ctl-ref.sgml @@ -1,5 +1,5 @@ @@ -308,7 +308,7 @@ PostgreSQL documentation - 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 DOMAIN\username. diff --git a/doc/src/sgml/ref/pg_resetxlog.sgml b/doc/src/sgml/ref/pg_resetxlog.sgml index f4caa8b80e..69a9b061de 100644 --- a/doc/src/sgml/ref/pg_resetxlog.sgml +++ b/doc/src/sgml/ref/pg_resetxlog.sgml @@ -1,5 +1,5 @@ @@ -61,7 +61,7 @@ PostgreSQL documentation by specifying the -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. pg_resetxlog's own environment is the source for its @@ -78,8 +78,8 @@ PostgreSQL documentation The -o, -x, -m, -O, and -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 pg_resetxlog is unable to determine appropriate values by reading pg_control. Safe values may be determined as @@ -102,7 +102,7 @@ PostgreSQL documentation - A safe value for the next multi-transaction ID (-m) + A safe value for the next multitransaction ID (-m) may be determined by looking for the numerically largest file name in the directory pg_multixact/offsets under the data directory, adding one, and then multiplying by 65536. As above, @@ -113,7 +113,7 @@ PostgreSQL documentation - A safe value for the next multi-transaction offset (-O) + A safe value for the next multitransaction offset (-O) may be determined by looking for the numerically largest file name in the directory pg_multixact/members under the data directory, adding one, and then multiplying by 65536. As above, diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml index f017a1ce22..9e79204133 100644 --- a/doc/src/sgml/ref/psql-ref.sgml +++ b/doc/src/sgml/ref/psql-ref.sgml @@ -1,5 +1,5 @@ @@ -2015,7 +2015,7 @@ bar HISTFILE - 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 ~/.psql_history. For example, putting \set HISTFILE ~/.psql_history- :DBNAME diff --git a/doc/src/sgml/release.sgml b/doc/src/sgml/release.sgml index 9f53ae5462..145dcc9b73 100644 --- a/doc/src/sgml/release.sgml +++ b/doc/src/sgml/release.sgml @@ -1,5 +1,5 @@ + Composite Types @@ -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; - 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: diff --git a/doc/src/sgml/runtime.sgml b/doc/src/sgml/runtime.sgml index ea0edcb6ed..af1ccf38ba 100644 --- a/doc/src/sgml/runtime.sgml +++ b/doc/src/sgml/runtime.sgml @@ -1,5 +1,5 @@ @@ -854,7 +854,7 @@ options SEMMAP=256 Older distributions may not have the sysctl program, but equivalent changes can be made by manipulating the - /proc filesystem: + /proc file system: $ echo 134217728 >/proc/sys/kernel/shmmax $ echo 2097152 >/proc/sys/kernel/shmall @@ -1357,19 +1357,19 @@ $ kill -INT `head -1 /usr/local/pgsql/data/postmaster.pid` - 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 loopback device. 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 gbde. - 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. diff --git a/doc/src/sgml/storage.sgml b/doc/src/sgml/storage.sgml index 285cb96b3b..e69fb73bfa 100644 --- a/doc/src/sgml/storage.sgml +++ b/doc/src/sgml/storage.sgml @@ -1,5 +1,5 @@ @@ -75,7 +75,7 @@ Item pg_multixact - Subdirectory containing multi-transaction status data + Subdirectory containing multitransaction status data (used for shared row locks) @@ -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 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-TOASTed +pages). There was no run time difference compared to an un-TOASTed comparison table, in which all the HTML pages were cut down to 7Kb to fit. @@ -663,7 +663,7 @@ data. Empty in ordinary tables. attlen and attalign. 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 heap_getattr, fastgetattr and heap_getsysattr. diff --git a/doc/src/sgml/syntax.sgml b/doc/src/sgml/syntax.sgml index 135fe7aca8..f102b33738 100644 --- a/doc/src/sgml/syntax.sgml +++ b/doc/src/sgml/syntax.sgml @@ -1,5 +1,5 @@ @@ -549,7 +549,7 @@ CAST ( 'string' AS type ) The CAST() syntax conforms to SQL. The type 'string' syntax is a generalization of the standard: SQL specifies this syntax only - for a few datatypes, but PostgreSQL allows it + for a few data types, but PostgreSQL allows it for all types. The syntax with :: is historical PostgreSQL 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, diff --git a/doc/src/sgml/trigger.sgml b/doc/src/sgml/trigger.sgml index 4d4ddd4361..332a327814 100644 --- a/doc/src/sgml/trigger.sgml +++ b/doc/src/sgml/trigger.sgml @@ -1,5 +1,5 @@ @@ -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 + timestamp 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 diff --git a/doc/src/sgml/typeconv.sgml b/doc/src/sgml/typeconv.sgml index 86e0561acc..b7ef6b4d61 100644 --- a/doc/src/sgml/typeconv.sgml +++ b/doc/src/sgml/typeconv.sgml @@ -1,5 +1,5 @@ @@ -738,7 +738,7 @@ into the destination column. The implementation function for such a cast always takes an extra parameter of type integer, which receives the destination column's declared length (actually, its atttypmod value; the interpretation of -atttypmod varies for different datatypes). The cast function +atttypmod varies for different data types). The cast function is responsible for applying any length-dependent semantics such as size checking or truncation. diff --git a/doc/src/sgml/wal.sgml b/doc/src/sgml/wal.sgml index cfea73ed69..576b63e0d2 100644 --- a/doc/src/sgml/wal.sgml +++ b/doc/src/sgml/wal.sgml @@ -1,20 +1,29 @@ - + - - Reliability + + Reliability and the Write-Ahead Log + + + This chapter explain how the Write-Ahead Log is used to obtain + efficient, reliable operation. + + + + Reliability - Reliability is a major feature of any serious database system, and - 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 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. @@ -76,17 +85,13 @@ permanent storage before modifying the actual page on disk. By doing this, during crash recovery 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 parameter. + - - The following sections explain how the Write-Ahead Log is used to - obtain efficient, reliable operation. - - - + Write-Ahead Logging (<acronym>WAL</acronym>) diff --git a/doc/src/sgml/xoper.sgml b/doc/src/sgml/xoper.sgml index 6c4874d93f..5e5ada35d3 100644 --- a/doc/src/sgml/xoper.sgml +++ b/doc/src/sgml/xoper.sgml @@ -1,5 +1,5 @@ @@ -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 - 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.