Commit 5194b9d0 authored by Peter Eisentraut's avatar Peter Eisentraut

Spell and markup checking

parent ee0e525b
<!-- $PostgreSQL: pgsql/doc/src/sgml/arch-dev.sgml,v 2.34 2010/04/03 07:22:52 petere Exp $ --> <!-- $PostgreSQL: pgsql/doc/src/sgml/arch-dev.sgml,v 2.35 2010/08/17 04:37:20 petere Exp $ -->
<chapter id="overview"> <chapter id="overview">
<title>Overview of PostgreSQL Internals</title> <title>Overview of PostgreSQL Internals</title>
...@@ -463,7 +463,7 @@ ...@@ -463,7 +463,7 @@
needed, plus any auxiliary steps needed, such as sort nodes or needed, plus any auxiliary steps needed, such as sort nodes or
aggregate-function calculation nodes. Most of these plan node aggregate-function calculation nodes. Most of these plan node
types have the additional ability to do <firstterm>selection</> types have the additional ability to do <firstterm>selection</>
(discarding rows that do not meet a specified boolean condition) (discarding rows that do not meet a specified Boolean condition)
and <firstterm>projection</> (computation of a derived column set and <firstterm>projection</> (computation of a derived column set
based on given column values, that is, evaluation of scalar based on given column values, that is, evaluation of scalar
expressions where needed). One of the responsibilities of the expressions where needed). One of the responsibilities of the
......
<!-- $PostgreSQL: pgsql/doc/src/sgml/bki.sgml,v 1.23 2010/01/05 01:06:55 tgl Exp $ --> <!-- $PostgreSQL: pgsql/doc/src/sgml/bki.sgml,v 1.24 2010/08/17 04:37:20 petere Exp $ -->
<chapter id="bki"> <chapter id="bki">
<title><acronym>BKI</acronym> Backend Interface</title> <title><acronym>BKI</acronym> Backend Interface</title>
...@@ -122,7 +122,7 @@ ...@@ -122,7 +122,7 @@
The table is created as shared if <literal>shared_relation</> is The table is created as shared if <literal>shared_relation</> is
specified. specified.
It will have OIDs unless <literal>without_oids</> is specified. It will have OIDs unless <literal>without_oids</> is specified.
The table's rowtype OID (<structname>pg_type</> OID) can optionally The table's row type OID (<structname>pg_type</> OID) can optionally
be specified via the <literal>rowtype_oid</> clause; if not specified, be specified via the <literal>rowtype_oid</> clause; if not specified,
an OID is automatically generated for it. (The <literal>rowtype_oid</> an OID is automatically generated for it. (The <literal>rowtype_oid</>
clause is useless if <literal>bootstrap</> is specified, but it can be clause is useless if <literal>bootstrap</> is specified, but it can be
......
<!-- $PostgreSQL: pgsql/doc/src/sgml/btree-gin.sgml,v 1.1 2009/03/25 23:20:01 tgl Exp $ --> <!-- $PostgreSQL: pgsql/doc/src/sgml/btree-gin.sgml,v 1.2 2010/08/17 04:37:20 petere Exp $ -->
<sect1 id="btree-gin"> <sect1 id="btree-gin">
<title>btree_gin</title> <title>btree_gin</title>
...@@ -9,7 +9,7 @@ ...@@ -9,7 +9,7 @@
<para> <para>
<filename>btree_gin</> provides sample GIN operator classes that <filename>btree_gin</> provides sample GIN operator classes that
implement B-Tree equivalent behavior for the data types implement B-tree equivalent behavior for the data types
<type>int2</>, <type>int4</>, <type>int8</>, <type>float4</>, <type>int2</>, <type>int4</>, <type>int8</>, <type>float4</>,
<type>float8</>, <type>timestamp with time zone</>, <type>float8</>, <type>timestamp with time zone</>,
<type>timestamp without time zone</>, <type>time with time zone</>, <type>timestamp without time zone</>, <type>time with time zone</>,
...@@ -21,12 +21,12 @@ ...@@ -21,12 +21,12 @@
<para> <para>
In general, these operator classes will not outperform the equivalent In general, these operator classes will not outperform the equivalent
standard btree index methods, and they lack one major feature of the standard B-tree index methods, and they lack one major feature of the
standard btree code: the ability to enforce uniqueness. However, standard B-tree code: the ability to enforce uniqueness. However,
they are useful for GIN testing and as a base for developing other they are useful for GIN testing and as a base for developing other
GIN operator classes. Also, for queries that test both a GIN-indexable GIN operator classes. Also, for queries that test both a GIN-indexable
column and a btree-indexable column, it might be more efficient to create column and a B-tree-indexable column, it might be more efficient to create
a multi-column GIN index that uses one of these opclasses than to create a multicolumn GIN index that uses one of these operator classes than to create
two separate indexes that would have to be combined via bitmap ANDing. two separate indexes that would have to be combined via bitmap ANDing.
</para> </para>
......
<!-- $PostgreSQL: pgsql/doc/src/sgml/btree-gist.sgml,v 1.7 2010/08/03 15:15:31 tgl Exp $ --> <!-- $PostgreSQL: pgsql/doc/src/sgml/btree-gist.sgml,v 1.8 2010/08/17 04:37:20 petere Exp $ -->
<sect1 id="btree-gist"> <sect1 id="btree-gist">
<title>btree_gist</title> <title>btree_gist</title>
...@@ -9,7 +9,7 @@ ...@@ -9,7 +9,7 @@
<para> <para>
<filename>btree_gist</> provides sample GiST operator classes that <filename>btree_gist</> provides sample GiST operator classes that
implement B-Tree equivalent behavior for the data types implement B-tree equivalent behavior for the data types
<type>int2</>, <type>int4</>, <type>int8</>, <type>float4</>, <type>int2</>, <type>int4</>, <type>int8</>, <type>float4</>,
<type>float8</>, <type>numeric</>, <type>timestamp with time zone</>, <type>float8</>, <type>numeric</>, <type>timestamp with time zone</>,
<type>timestamp without time zone</>, <type>time with time zone</>, <type>timestamp without time zone</>, <type>time with time zone</>,
...@@ -21,8 +21,8 @@ ...@@ -21,8 +21,8 @@
<para> <para>
In general, these operator classes will not outperform the equivalent In general, these operator classes will not outperform the equivalent
standard btree index methods, and they lack one major feature of the standard B-tree index methods, and they lack one major feature of the
standard btree code: the ability to enforce uniqueness. However, standard B-tree code: the ability to enforce uniqueness. However,
they are useful for GiST testing and as a base for developing other they are useful for GiST testing and as a base for developing other
GiST operator classes. GiST operator classes.
</para> </para>
......
<!-- $PostgreSQL: pgsql/doc/src/sgml/catalogs.sgml,v 2.225 2010/04/03 07:22:52 petere Exp $ --> <!-- $PostgreSQL: pgsql/doc/src/sgml/catalogs.sgml,v 2.226 2010/08/17 04:37:20 petere Exp $ -->
<!-- <!--
Documentation of the system catalogs, directed toward PostgreSQL developers Documentation of the system catalogs, directed toward PostgreSQL developers
--> -->
...@@ -344,8 +344,8 @@ ...@@ -344,8 +344,8 @@
<entry> <entry>
The initial value of the transition state. This is a text The initial value of the transition state. This is a text
field containing the initial value in its external string field containing the initial value in its external string
representation. If this field is NULL, the transition state representation. If this field is null, the transition state
value starts out NULL value starts out null.
</entry> </entry>
</row> </row>
</tbody> </tbody>
...@@ -461,7 +461,7 @@ ...@@ -461,7 +461,7 @@
<entry><structfield>amsearchnulls</structfield></entry> <entry><structfield>amsearchnulls</structfield></entry>
<entry><type>bool</type></entry> <entry><type>bool</type></entry>
<entry></entry> <entry></entry>
<entry>Does the access method support IS NULL/NOT NULL searches?</entry> <entry>Does the access method support <literal>IS NULL</>/<literal>NOT NULL</> searches?</entry>
</row> </row>
<row> <row>
...@@ -892,7 +892,7 @@ ...@@ -892,7 +892,7 @@
The exact meaning of positive values is data type-dependent. The exact meaning of positive values is data type-dependent.
For scalar data types, <structfield>attstattarget</structfield> For scalar data types, <structfield>attstattarget</structfield>
is both the target number of <quote>most common values</quote> is both the target number of <quote>most common values</quote>
to collect, and the target number of histogram bins to create to collect, and the target number of histogram bins to create.
</entry> </entry>
</row> </row>
...@@ -913,7 +913,7 @@ ...@@ -913,7 +913,7 @@
<entry> <entry>
The number of the column. Ordinary columns are numbered from 1 The number of the column. Ordinary columns are numbered from 1
up. System columns, such as <structfield>oid</structfield>, up. System columns, such as <structfield>oid</structfield>,
have (arbitrary) negative numbers have (arbitrary) negative numbers.
</entry> </entry>
</row> </row>
...@@ -924,7 +924,7 @@ ...@@ -924,7 +924,7 @@
<entry> <entry>
Number of dimensions, if the column is an array type; otherwise 0. Number of dimensions, if the column is an array type; otherwise 0.
(Presently, the number of dimensions of an array is not enforced, (Presently, the number of dimensions of an array is not enforced,
so any nonzero value effectively means <quote>it's an array</>) so any nonzero value effectively means <quote>it's an array</>.)
</entry> </entry>
</row> </row>
...@@ -948,7 +948,7 @@ ...@@ -948,7 +948,7 @@
supplied at table creation time (for example, the maximum supplied at table creation time (for example, the maximum
length of a <type>varchar</type> column). It is passed to length of a <type>varchar</type> column). It is passed to
type-specific input functions and length coercion functions. type-specific input functions and length coercion functions.
The value will generally be -1 for types that do not need <structfield>atttypmod</> The value will generally be -1 for types that do not need <structfield>atttypmod</>.
</entry> </entry>
</row> </row>
...@@ -968,7 +968,7 @@ ...@@ -968,7 +968,7 @@
<entry> <entry>
Normally a copy of <literal>pg_type.typstorage</> of this Normally a copy of <literal>pg_type.typstorage</> of this
column's type. For TOAST-able data types, this can be altered column's type. For TOAST-able data types, this can be altered
after column creation to control storage policy after column creation to control storage policy.
</entry> </entry>
</row> </row>
...@@ -987,7 +987,7 @@ ...@@ -987,7 +987,7 @@
<entry></entry> <entry></entry>
<entry> <entry>
This represents a not-null constraint. It is possible to This represents a not-null constraint. It is possible to
change this column to enable or disable the constraint change this column to enable or disable the constraint.
</entry> </entry>
</row> </row>
...@@ -998,7 +998,7 @@ ...@@ -998,7 +998,7 @@
<entry> <entry>
This column has a default value, in which case there will be a This column has a default value, in which case there will be a
corresponding entry in the <structname>pg_attrdef</structname> corresponding entry in the <structname>pg_attrdef</structname>
catalog that actually defines the value catalog that actually defines the value.
</entry> </entry>
</row> </row>
...@@ -1009,7 +1009,7 @@ ...@@ -1009,7 +1009,7 @@
<entry> <entry>
This column has been dropped and is no longer valid. A dropped This column has been dropped and is no longer valid. A dropped
column is still physically present in the table, but is column is still physically present in the table, but is
ignored by the parser and so cannot be accessed via SQL ignored by the parser and so cannot be accessed via SQL.
</entry> </entry>
</row> </row>
...@@ -1019,7 +1019,7 @@ ...@@ -1019,7 +1019,7 @@
<entry></entry> <entry></entry>
<entry> <entry>
This column is defined locally in the relation. Note that a column can This column is defined locally in the relation. Note that a column can
be locally defined and inherited simultaneously be locally defined and inherited simultaneously.
</entry> </entry>
</row> </row>
...@@ -1029,7 +1029,7 @@ ...@@ -1029,7 +1029,7 @@
<entry></entry> <entry></entry>
<entry> <entry>
The number of direct ancestors this column has. A column with a The number of direct ancestors this column has. A column with a
nonzero number of ancestors cannot be dropped nor renamed nonzero number of ancestors cannot be dropped nor renamed.
</entry> </entry>
</row> </row>
...@@ -1163,7 +1163,7 @@ ...@@ -1163,7 +1163,7 @@
<entry><type>bool</type></entry> <entry><type>bool</type></entry>
<entry> <entry>
Role can log in. That is, this role can be given as the initial Role can log in. That is, this role can be given as the initial
session authorization identifier session authorization identifier.
</entry> </entry>
</row> </row>
...@@ -1172,21 +1172,21 @@ ...@@ -1172,21 +1172,21 @@
<entry><type>int4</type></entry> <entry><type>int4</type></entry>
<entry> <entry>
For roles that can log in, this sets maximum number of concurrent For roles that can log in, this sets maximum number of concurrent
connections this role can make. -1 means no limit connections this role can make. -1 means no limit.
</entry> </entry>
</row> </row>
<row> <row>
<entry><structfield>rolpassword</structfield></entry> <entry><structfield>rolpassword</structfield></entry>
<entry><type>text</type></entry> <entry><type>text</type></entry>
<entry>Password (possibly encrypted); NULL if none</entry> <entry>Password (possibly encrypted); null if none</entry>
</row> </row>
<row> <row>
<entry><structfield>rolvaliduntil</structfield></entry> <entry><structfield>rolvaliduntil</structfield></entry>
<entry><type>timestamptz</type></entry> <entry><type>timestamptz</type></entry>
<entry>Password expiry time (only used for password authentication); <entry>Password expiry time (only used for password authentication);
NULL if no expiration</entry> null if no expiration</entry>
</row> </row>
</tbody> </tbody>
</tgroup> </tgroup>
...@@ -1338,7 +1338,7 @@ ...@@ -1338,7 +1338,7 @@
<literal>a</> means implicitly in assignment <literal>a</> means implicitly in assignment
to a target column, as well as explicitly. to a target column, as well as explicitly.
<literal>i</> means implicitly in expressions, as well as the <literal>i</> means implicitly in expressions, as well as the
other cases other cases.
</entry> </entry>
</row> </row>
<row> <row>
...@@ -1349,7 +1349,7 @@ ...@@ -1349,7 +1349,7 @@
Indicates how the cast is performed. Indicates how the cast is performed.
<literal>f</> means that the function specified in the <structfield>castfunc</> field is used. <literal>f</> means that the function specified in the <structfield>castfunc</> field is used.
<literal>i</> means that the input/output functions are used. <literal>i</> means that the input/output functions are used.
<literal>b</> means that the types are binary-coercible, thus no conversion is required <literal>b</> means that the types are binary-coercible, thus no conversion is required.
</entry> </entry>
</row> </row>
</tbody> </tbody>
...@@ -1487,7 +1487,7 @@ ...@@ -1487,7 +1487,7 @@
<symbol>BLCKSZ</symbol>). This is only an estimate used by the <symbol>BLCKSZ</symbol>). This is only an estimate used by the
planner. It is updated by <command>VACUUM</command>, planner. It is updated by <command>VACUUM</command>,
<command>ANALYZE</command>, and a few DDL commands such as <command>ANALYZE</command>, and a few DDL commands such as
<command>CREATE INDEX</command> <command>CREATE INDEX</command>.
</entry> </entry>
</row> </row>
...@@ -1499,7 +1499,7 @@ ...@@ -1499,7 +1499,7 @@
Number of rows in the table. This is only an estimate used by the Number of rows in the table. This is only an estimate used by the
planner. It is updated by <command>VACUUM</command>, planner. It is updated by <command>VACUUM</command>,
<command>ANALYZE</command>, and a few DDL commands such as <command>ANALYZE</command>, and a few DDL commands such as
<command>CREATE INDEX</command> <command>CREATE INDEX</command>.
</entry> </entry>
</row> </row>
...@@ -1510,7 +1510,7 @@ ...@@ -1510,7 +1510,7 @@
<entry> <entry>
OID of the TOAST table associated with this table, 0 if none. The OID of the TOAST table associated with this table, 0 if none. The
TOAST table stores large attributes <quote>out of line</quote> in a TOAST table stores large attributes <quote>out of line</quote> in a
secondary table secondary table.
</entry> </entry>
</row> </row>
...@@ -1519,7 +1519,7 @@ ...@@ -1519,7 +1519,7 @@
<entry><type>oid</type></entry> <entry><type>oid</type></entry>
<entry><literal><link linkend="catalog-pg-class"><structname>pg_class</structname></link>.oid</literal></entry> <entry><literal><link linkend="catalog-pg-class"><structname>pg_class</structname></link>.oid</literal></entry>
<entry> <entry>
For a TOAST table, the OID of its index. 0 if not a TOAST table For a TOAST table, the OID of its index. 0 if not a TOAST table.
</entry> </entry>
</row> </row>
...@@ -1539,7 +1539,7 @@ ...@@ -1539,7 +1539,7 @@
<entry> <entry>
True if this table is shared across all databases in the cluster. Only True if this table is shared across all databases in the cluster. Only
certain system catalogs (such as <structname>pg_database</structname>) certain system catalogs (such as <structname>pg_database</structname>)
are shared are shared.
</entry> </entry>
</row> </row>
...@@ -1549,7 +1549,7 @@ ...@@ -1549,7 +1549,7 @@
<entry></entry> <entry></entry>
<entry> <entry>
True if this table is a temporary relation. If so, only the creating True if this table is a temporary relation. If so, only the creating
session can safely access its contents session can safely access its contents.
</entry> </entry>
</row> </row>
...@@ -1573,7 +1573,7 @@ ...@@ -1573,7 +1573,7 @@
Number of user columns in the relation (system columns not Number of user columns in the relation (system columns not
counted). There must be this many corresponding entries in counted). There must be this many corresponding entries in
<structname>pg_attribute</structname>. See also <structname>pg_attribute</structname>. See also
<literal>pg_attribute.attnum</literal> <literal>pg_attribute.attnum</literal>.
</entry> </entry>
</row> </row>
...@@ -1652,7 +1652,7 @@ ...@@ -1652,7 +1652,7 @@
(<quote>frozen</>) transaction ID in this table. This is used to track (<quote>frozen</>) transaction ID in this table. This is used to track
whether the table needs to be vacuumed in order to prevent transaction whether the table needs to be vacuumed in order to prevent transaction
ID wraparound or to allow <literal>pg_clog</> to be shrunk. Zero ID wraparound or to allow <literal>pg_clog</> to be shrunk. Zero
(<symbol>InvalidTransactionId</symbol>) if the relation is not a table (<symbol>InvalidTransactionId</symbol>) if the relation is not a table.
</entry> </entry>
</row> </row>
...@@ -1681,7 +1681,7 @@ ...@@ -1681,7 +1681,7 @@
</table> </table>
<para> <para>
Several of the boolean flags in <structname>pg_class</> are maintained Several of the Boolean flags in <structname>pg_class</> are maintained
lazily: they are guaranteed to be true if that's the correct state, but lazily: they are guaranteed to be true if that's the correct state, but
may not be reset to false immediately when the condition is no longer may not be reset to false immediately when the condition is no longer
true. For example, <structfield>relhasindex</> is set by true. For example, <structfield>relhasindex</> is set by
...@@ -1847,7 +1847,7 @@ ...@@ -1847,7 +1847,7 @@
<entry></entry> <entry></entry>
<entry> <entry>
This constraint is defined locally for the relation. Note that a This constraint is defined locally for the relation. Note that a
constraint can be locally defined and inherited simultaneously constraint can be locally defined and inherited simultaneously.
</entry> </entry>
</row> </row>
...@@ -1858,7 +1858,7 @@ ...@@ -1858,7 +1858,7 @@
<entry> <entry>
The number of direct inheritance ancestors this constraint has. The number of direct inheritance ancestors this constraint has.
A constraint with A constraint with
a nonzero number of ancestors cannot be dropped nor renamed a nonzero number of ancestors cannot be dropped nor renamed.
</entry> </entry>
</row> </row>
...@@ -2128,7 +2128,7 @@ ...@@ -2128,7 +2128,7 @@
<entry></entry> <entry></entry>
<entry> <entry>
If false then no one can connect to this database. This is If false then no one can connect to this database. This is
used to protect the <literal>template0</> database from being altered used to protect the <literal>template0</> database from being altered.
</entry> </entry>
</row> </row>
...@@ -2138,7 +2138,7 @@ ...@@ -2138,7 +2138,7 @@
<entry></entry> <entry></entry>
<entry> <entry>
Sets maximum number of concurrent connections that can be made Sets maximum number of concurrent connections that can be made
to this database. -1 means no limit to this database. -1 means no limit.
</entry> </entry>
</row> </row>
...@@ -2162,7 +2162,7 @@ ...@@ -2162,7 +2162,7 @@
track whether the database needs to be vacuumed in order to prevent track whether the database needs to be vacuumed in order to prevent
transaction ID wraparound or to allow <literal>pg_clog</> to be shrunk. transaction ID wraparound or to allow <literal>pg_clog</> to be shrunk.
It is the minimum of the per-table It is the minimum of the per-table
<structname>pg_class</>.<structfield>relfrozenxid</> values <structname>pg_class</>.<structfield>relfrozenxid</> values.
</entry> </entry>
</row> </row>
...@@ -2175,7 +2175,7 @@ ...@@ -2175,7 +2175,7 @@
Within this database, all tables for which Within this database, all tables for which
<structname>pg_class</>.<structfield>reltablespace</> is zero <structname>pg_class</>.<structfield>reltablespace</> is zero
will be stored in this tablespace; in particular, all the non-shared will be stored in this tablespace; in particular, all the non-shared
system catalogs will be there system catalogs will be there.
</entry> </entry>
</row> </row>
...@@ -2273,7 +2273,7 @@ ...@@ -2273,7 +2273,7 @@
</para> </para>
<para> <para>
Note that when an ACL entry in another catalog is NULL, it is taken Note that when an ACL entry in another catalog is null, it is taken
to represent the hard-wired default privileges for its object, to represent the hard-wired default privileges for its object,
<emphasis>not</> whatever might be in <structname>pg_default_acl</> <emphasis>not</> whatever might be in <structname>pg_default_acl</>
at the moment. <structname>pg_default_acl</> is only consulted during at the moment. <structname>pg_default_acl</> is only consulted during
...@@ -2340,7 +2340,7 @@ ...@@ -2340,7 +2340,7 @@
For a table column, this is the column number (the For a table column, this is the column number (the
<structfield>objid</> and <structfield>classid</> refer to the <structfield>objid</> and <structfield>classid</> refer to the
table itself). For all other object types, this column is table itself). For all other object types, this column is
zero zero.
</entry> </entry>
</row> </row>
...@@ -2366,7 +2366,7 @@ ...@@ -2366,7 +2366,7 @@
For a table column, this is the column number (the For a table column, this is the column number (the
<structfield>refobjid</> and <structfield>refclassid</> refer <structfield>refobjid</> and <structfield>refclassid</> refer
to the table itself). For all other object types, this column to the table itself). For all other object types, this column
is zero is zero.
</entry> </entry>
</row> </row>
...@@ -2515,7 +2515,7 @@ ...@@ -2515,7 +2515,7 @@
For a comment on a table column, this is the column number (the For a comment on a table column, this is the column number (the
<structfield>objoid</> and <structfield>classoid</> refer to <structfield>objoid</> and <structfield>classoid</> refer to
the table itself). For all other object types, this column is the table itself). For all other object types, this column is
zero zero.
</entry> </entry>
</row> </row>
...@@ -2743,7 +2743,7 @@ ...@@ -2743,7 +2743,7 @@
<entry><type>text[]</type></entry> <entry><type>text[]</type></entry>
<entry></entry> <entry></entry>
<entry> <entry>
Foreign server specific options, as <quote>keyword=value</> strings. Foreign server specific options, as <quote>keyword=value</> strings
</entry> </entry>
</row> </row>
</tbody> </tbody>
...@@ -2840,7 +2840,7 @@ ...@@ -2840,7 +2840,7 @@
index is possibly incomplete: it must still be modified by index is possibly incomplete: it must still be modified by
<command>INSERT</>/<command>UPDATE</> operations, but it cannot safely <command>INSERT</>/<command>UPDATE</> operations, but it cannot safely
be used for queries. If it is unique, the uniqueness property is not be used for queries. If it is unique, the uniqueness property is not
true either true either.
</entry> </entry>
</row> </row>
...@@ -2850,7 +2850,7 @@ ...@@ -2850,7 +2850,7 @@
<entry></entry> <entry></entry>
<entry> <entry>
If true, queries must not use the index until the <structfield>xmin</> If true, queries must not use the index until the <structfield>xmin</>
of this <structname>pg_index</> row is below their TransactionXmin of this <structname>pg_index</> row is below their <symbol>TransactionXmin</symbol>
event horizon, because the table may contain broken HOT chains with event horizon, because the table may contain broken HOT chains with
incompatible rows that they can see incompatible rows that they can see
</entry> </entry>
...@@ -2863,7 +2863,7 @@ ...@@ -2863,7 +2863,7 @@
<entry> <entry>
If true, the index is currently ready for inserts. False means the If true, the index is currently ready for inserts. False means the
index must be ignored by <command>INSERT</>/<command>UPDATE</> index must be ignored by <command>INSERT</>/<command>UPDATE</>
operations operations.
</entry> </entry>
</row> </row>
...@@ -2877,7 +2877,7 @@ ...@@ -2877,7 +2877,7 @@
of <literal>1 3</literal> would mean that the first and the third table of <literal>1 3</literal> would mean that the first and the third table
columns make up the index key. A zero in this array indicates that the columns make up the index key. A zero in this array indicates that the
corresponding index attribute is an expression over the table columns, corresponding index attribute is an expression over the table columns,
rather than a simple column reference rather than a simple column reference.
</entry> </entry>
</row> </row>
...@@ -2888,7 +2888,7 @@ ...@@ -2888,7 +2888,7 @@
<entry> <entry>
For each column in the index key, this contains the OID of For each column in the index key, this contains the OID of
the operator class to use. See the operator class to use. See
<link linkend="catalog-pg-opclass"><structname>pg_opclass</structname></link> for details <link linkend="catalog-pg-opclass"><structname>pg_opclass</structname></link> for details.
</entry> </entry>
</row> </row>
...@@ -2899,7 +2899,7 @@ ...@@ -2899,7 +2899,7 @@
<entry> <entry>
This is an array of <structfield>indnatts</structfield> values that This is an array of <structfield>indnatts</structfield> values that
store per-column flag bits. The meaning of the bits is defined by store per-column flag bits. The meaning of the bits is defined by
the index's access method the index's access method.
</entry> </entry>
</row> </row>
...@@ -2907,18 +2907,24 @@ ...@@ -2907,18 +2907,24 @@
<entry><structfield>indexprs</structfield></entry> <entry><structfield>indexprs</structfield></entry>
<entry><type>text</type></entry> <entry><type>text</type></entry>
<entry></entry> <entry></entry>
<entry>Expression trees (in <function>nodeToString()</function> representation) <entry>
for index attributes that are not simple column references. This is a Expression trees (in <function>nodeToString()</function>
list with one element for each zero entry in <structfield>indkey</>. representation) for index attributes that are not simple column
NULL if all index attributes are simple references</entry> references. This is a list with one element for each zero
entry in <structfield>indkey</>. Null if all index attributes
are simple references.
</entry>
</row> </row>
<row> <row>
<entry><structfield>indpred</structfield></entry> <entry><structfield>indpred</structfield></entry>
<entry><type>text</type></entry> <entry><type>text</type></entry>
<entry></entry> <entry></entry>
<entry>Expression tree (in <function>nodeToString()</function> representation) <entry>
for partial index predicate. NULL if not a partial index</entry> Expression tree (in <function>nodeToString()</function>
representation) for partial index predicate. Null if not a
partial index.
</entry>
</row> </row>
</tbody> </tbody>
</tgroup> </tgroup>
...@@ -2980,7 +2986,7 @@ ...@@ -2980,7 +2986,7 @@
<entry> <entry>
If there is more than one direct parent for a child table (multiple If there is more than one direct parent for a child table (multiple
inheritance), this number tells the order in which the inheritance), this number tells the order in which the
inherited columns are to be arranged. The count starts at 1 inherited columns are to be arranged. The count starts at 1.
</entry> </entry>
</row> </row>
</tbody> </tbody>
...@@ -3041,7 +3047,7 @@ ...@@ -3041,7 +3047,7 @@
<acronym>SQL</acronym>) and true for user-defined languages. <acronym>SQL</acronym>) and true for user-defined languages.
Currently, <application>pg_dump</application> still uses this Currently, <application>pg_dump</application> still uses this
to determine which languages need to be dumped, but this might be to determine which languages need to be dumped, but this might be
replaced by a different mechanism in the future replaced by a different mechanism in the future.
</entry> </entry>
</row> </row>
...@@ -3053,7 +3059,7 @@ ...@@ -3053,7 +3059,7 @@
True if this is a trusted language, which means that it is believed True if this is a trusted language, which means that it is believed
not to grant access to anything outside the normal SQL execution not to grant access to anything outside the normal SQL execution
environment. Only superusers can create functions in untrusted environment. Only superusers can create functions in untrusted
languages languages.
</entry> </entry>
</row> </row>
...@@ -3077,7 +3083,7 @@ ...@@ -3077,7 +3083,7 @@
This references a function that is responsible for executing This references a function that is responsible for executing
<quote>inline</> anonymous code blocks <quote>inline</> anonymous code blocks
(<xref linkend="sql-do"> blocks). (<xref linkend="sql-do"> blocks).
Zero if inline blocks are not supported Zero if inline blocks are not supported.
</entry> </entry>
</row> </row>
...@@ -3088,7 +3094,7 @@ ...@@ -3088,7 +3094,7 @@
<entry> <entry>
This references a language validator function that is responsible This references a language validator function that is responsible
for checking the syntax and validity of new functions when they for checking the syntax and validity of new functions when they
are created. Zero if no validator is provided are created. Zero if no validator is provided.
</entry> </entry>
</row> </row>
...@@ -3133,7 +3139,7 @@ ...@@ -3133,7 +3139,7 @@
<structname>pg_largeobject</structname> was publicly readable and could be <structname>pg_largeobject</structname> was publicly readable and could be
used to obtain the OIDs (and contents) of all large objects in the system. used to obtain the OIDs (and contents) of all large objects in the system.
This is no longer the case; use This is no longer the case; use
<link linkend="catalog-pg-largeobject-metadata">pg_largeobject_metadata</link> <link linkend="catalog-pg-largeobject-metadata"><structname>pg_largeobject_metadata</></link>
to obtain a list of large object OIDs. to obtain a list of large object OIDs.
</para> </para>
...@@ -3172,7 +3178,7 @@ ...@@ -3172,7 +3178,7 @@
<entry></entry> <entry></entry>
<entry> <entry>
Actual data stored in the large object. Actual data stored in the large object.
This will never be more than <symbol>LOBLKSIZE</> bytes and might be less This will never be more than <symbol>LOBLKSIZE</> bytes and might be less.
</entry> </entry>
</row> </row>
</tbody> </tbody>
...@@ -3201,7 +3207,7 @@ ...@@ -3201,7 +3207,7 @@
The catalog <structname>pg_largeobject_metadata</structname> The catalog <structname>pg_largeobject_metadata</structname>
holds metadata associated with large objects. The actual large object holds metadata associated with large objects. The actual large object
data is stored in data is stored in
<link linkend="catalog-pg-largeobject">pg_largeobject</link>. <link linkend="catalog-pg-largeobject"><structname>pg_largeobject</></link>.
</para> </para>
<table> <table>
...@@ -3222,7 +3228,7 @@ ...@@ -3222,7 +3228,7 @@
<entry><structfield>lomowner</structfield></entry> <entry><structfield>lomowner</structfield></entry>
<entry><type>oid</type></entry> <entry><type>oid</type></entry>
<entry><literal><link linkend="catalog-pg-authid"><structname>pg_authid</structname></link>.oid</literal></entry> <entry><literal><link linkend="catalog-pg-authid"><structname>pg_authid</structname></link>.oid</literal></entry>
<entry>Owner of the largeobject</entry> <entry>Owner of the large object</entry>
</row> </row>
<row> <row>
...@@ -3693,13 +3699,13 @@ ...@@ -3693,13 +3699,13 @@
<row> <row>
<entry><structfield>tmplinline</structfield></entry> <entry><structfield>tmplinline</structfield></entry>
<entry><type>text</type></entry> <entry><type>text</type></entry>
<entry>Name of anonymous-block handler function, or NULL if none</entry> <entry>Name of anonymous-block handler function, or null if none</entry>
</row> </row>
<row> <row>
<entry><structfield>tmplvalidator</structfield></entry> <entry><structfield>tmplvalidator</structfield></entry>
<entry><type>text</type></entry> <entry><type>text</type></entry>
<entry>Name of validator function, or NULL if none</entry> <entry>Name of validator function, or null if none</entry>
</row> </row>
<row> <row>
...@@ -3853,7 +3859,7 @@ ...@@ -3853,7 +3859,7 @@
Function returns null if any call argument is null. In that Function returns null if any call argument is null. In that
case the function won't actually be called at all. Functions case the function won't actually be called at all. Functions
that are not <quote>strict</quote> must be prepared to handle that are not <quote>strict</quote> must be prepared to handle
null inputs null inputs.
</entry> </entry>
</row> </row>
...@@ -3913,7 +3919,7 @@ ...@@ -3913,7 +3919,7 @@
An array with the data types of the function arguments. This includes An array with the data types of the function arguments. This includes
only input arguments (including <literal>INOUT</literal> and only input arguments (including <literal>INOUT</literal> and
<literal>VARIADIC</> arguments), and thus represents <literal>VARIADIC</> arguments), and thus represents
the call signature of the function the call signature of the function.
</entry> </entry>
</row> </row>
...@@ -3927,7 +3933,7 @@ ...@@ -3927,7 +3933,7 @@
<literal>INOUT</literal> arguments); however, if all the <literal>INOUT</literal> arguments); however, if all the
arguments are <literal>IN</literal> arguments, this field will be null. arguments are <literal>IN</literal> arguments, this field will be null.
Note that subscripting is 1-based, whereas for historical reasons Note that subscripting is 1-based, whereas for historical reasons
<structfield>proargtypes</> is subscripted from 0 <structfield>proargtypes</> is subscripted from 0.
</entry> </entry>
</row> </row>
...@@ -3945,7 +3951,7 @@ ...@@ -3945,7 +3951,7 @@
If all the arguments are <literal>IN</literal> arguments, If all the arguments are <literal>IN</literal> arguments,
this field will be null. this field will be null.
Note that subscripts correspond to positions of Note that subscripts correspond to positions of
<structfield>proallargtypes</> not <structfield>proargtypes</> <structfield>proallargtypes</> not <structfield>proargtypes</>.
</entry> </entry>
</row> </row>
...@@ -3958,7 +3964,7 @@ ...@@ -3958,7 +3964,7 @@
Arguments without a name are set to empty strings in the array. Arguments without a name are set to empty strings in the array.
If none of the arguments have a name, this field will be null. If none of the arguments have a name, this field will be null.
Note that subscripts correspond to positions of Note that subscripts correspond to positions of
<structfield>proallargtypes</> not <structfield>proargtypes</> <structfield>proallargtypes</> not <structfield>proargtypes</>.
</entry> </entry>
</row> </row>
...@@ -3972,7 +3978,7 @@ ...@@ -3972,7 +3978,7 @@
<structfield>pronargdefaults</> elements, corresponding to the last <structfield>pronargdefaults</> elements, corresponding to the last
<replaceable>N</> <emphasis>input</> arguments (i.e., the last <replaceable>N</> <emphasis>input</> arguments (i.e., the last
<replaceable>N</> <structfield>proargtypes</> positions). <replaceable>N</> <structfield>proargtypes</> positions).
If none of the arguments have defaults, this field will be null If none of the arguments have defaults, this field will be null.
</entry> </entry>
</row> </row>
...@@ -3984,7 +3990,7 @@ ...@@ -3984,7 +3990,7 @@
This tells the function handler how to invoke the function. It This tells the function handler how to invoke the function. It
might be the actual source code of the function for interpreted might be the actual source code of the function for interpreted
languages, a link symbol, a file name, or just about anything languages, a link symbol, a file name, or just about anything
else, depending on the implementation language/call convention else, depending on the implementation language/call convention.
</entry> </entry>
</row> </row>
...@@ -3994,7 +4000,7 @@ ...@@ -3994,7 +4000,7 @@
<entry></entry> <entry></entry>
<entry> <entry>
Additional information about how to invoke the function. Additional information about how to invoke the function.
Again, the interpretation is language-specific Again, the interpretation is language-specific.
</entry> </entry>
</row> </row>
...@@ -4276,7 +4282,7 @@ ...@@ -4276,7 +4282,7 @@
<entry> <entry>
For a table column, this is the column number (the For a table column, this is the column number (the
<structfield>objid</> and <structfield>classid</> refer to the <structfield>objid</> and <structfield>classid</> refer to the
table itself). For all other object types, this column is zero table itself). For all other object types, this column is zero.
</entry> </entry>
</row> </row>
...@@ -4548,7 +4554,7 @@ ...@@ -4548,7 +4554,7 @@
of rows in the table; for example, a column in which values appear about of rows in the table; for example, a column in which values appear about
twice on the average could be represented by twice on the average could be represented by
<structfield>stadistinct</> = -0.5. <structfield>stadistinct</> = -0.5.
A zero value means the number of distinct values is unknown A zero value means the number of distinct values is unknown.
</entry> </entry>
</row> </row>
...@@ -4559,7 +4565,7 @@ ...@@ -4559,7 +4565,7 @@
<entry> <entry>
A code number indicating the kind of statistics stored in the A code number indicating the kind of statistics stored in the
<replaceable>N</>th <quote>slot</quote> of the <replaceable>N</>th <quote>slot</quote> of the
<structname>pg_statistic</structname> row <structname>pg_statistic</structname> row.
</entry> </entry>
</row> </row>
...@@ -4571,7 +4577,7 @@ ...@@ -4571,7 +4577,7 @@
An operator used to derive the statistics stored in the An operator used to derive the statistics stored in the
<replaceable>N</>th <quote>slot</quote>. For example, a <replaceable>N</>th <quote>slot</quote>. For example, a
histogram slot would show the <literal>&lt;</literal> operator histogram slot would show the <literal>&lt;</literal> operator
that defines the sort order of the data that defines the sort order of the data.
</entry> </entry>
</row> </row>
...@@ -4581,7 +4587,7 @@ ...@@ -4581,7 +4587,7 @@
<entry></entry> <entry></entry>
<entry> <entry>
Numerical statistics of the appropriate kind for the Numerical statistics of the appropriate kind for the
<replaceable>N</>th <quote>slot</quote>, or NULL if the slot <replaceable>N</>th <quote>slot</quote>, or null if the slot
kind does not involve numerical values kind does not involve numerical values
</entry> </entry>
</row> </row>
...@@ -4592,11 +4598,11 @@ ...@@ -4592,11 +4598,11 @@
<entry></entry> <entry></entry>
<entry> <entry>
Column data values of the appropriate kind for the Column data values of the appropriate kind for the
<replaceable>N</>th <quote>slot</quote>, or NULL if the slot <replaceable>N</>th <quote>slot</quote>, or null if the slot
kind does not store any data values. Each array's element kind does not store any data values. Each array's element
values are actually of the specific column's data type, so there values are actually of the specific column's data type, so there
is no way to define these columns' type more specifically than is no way to define these columns' type more specifically than
<type>anyarray</> <type>anyarray</>.
</entry> </entry>
</row> </row>
</tbody> </tbody>
...@@ -4810,7 +4816,7 @@ ...@@ -4810,7 +4816,7 @@
<entry><structfield>tgattr</structfield></entry> <entry><structfield>tgattr</structfield></entry>
<entry><type>int2vector</type></entry> <entry><type>int2vector</type></entry>
<entry><literal><link linkend="catalog-pg-attribute"><structname>pg_attribute</structname></link>.attnum</literal></entry> <entry><literal><link linkend="catalog-pg-attribute"><structname>pg_attribute</structname></link>.attnum</literal></entry>
<entry>column numbers, if trigger is column-specific; otherwise an <entry>Column numbers, if trigger is column-specific; otherwise an
empty array</entry> empty array</entry>
</row> </row>
...@@ -4826,7 +4832,7 @@ ...@@ -4826,7 +4832,7 @@
<entry><type>text</type></entry> <entry><type>text</type></entry>
<entry></entry> <entry></entry>
<entry>Expression tree (in <function>nodeToString()</function> <entry>Expression tree (in <function>nodeToString()</function>
representation) for the trigger's <literal>WHEN</> condition, or NULL representation) for the trigger's <literal>WHEN</> condition, or null
if none</entry> if none</entry>
</row> </row>
</tbody> </tbody>
...@@ -5319,7 +5325,7 @@ ...@@ -5319,7 +5325,7 @@
where Datum is 8 bytes). where Datum is 8 bytes).
Variable-length types are always passed by reference. Note that Variable-length types are always passed by reference. Note that
<structfield>typbyval</structfield> can be false even if the <structfield>typbyval</structfield> can be false even if the
length would allow pass-by-value length would allow pass-by-value.
</entry> </entry>
</row> </row>
...@@ -5335,7 +5341,7 @@ ...@@ -5335,7 +5341,7 @@
<literal>e</literal> for an enum type, <literal>e</literal> for an enum type,
or <literal>p</literal> for a pseudo-type. or <literal>p</literal> for a pseudo-type.
See also <structfield>typrelid</structfield> and See also <structfield>typrelid</structfield> and
<structfield>typbasetype</structfield> <structfield>typbasetype</structfield>.
</entry> </entry>
</row> </row>
...@@ -5347,7 +5353,7 @@ ...@@ -5347,7 +5353,7 @@
<structfield>typcategory</structfield> is an arbitrary classification <structfield>typcategory</structfield> is an arbitrary classification
of data types that is used by the parser to determine which implicit of data types that is used by the parser to determine which implicit
casts should be <quote>preferred</>. casts should be <quote>preferred</>.
See <xref linkend="catalog-typcategory-table"> See <xref linkend="catalog-typcategory-table">.
</entry> </entry>
</row> </row>
...@@ -5369,7 +5375,7 @@ ...@@ -5369,7 +5375,7 @@
True if the type is defined, false if this is a placeholder True if the type is defined, false if this is a placeholder
entry for a not-yet-defined type. When entry for a not-yet-defined type. When
<structfield>typisdefined</structfield> is false, nothing <structfield>typisdefined</structfield> is false, nothing
except the type name, namespace, and OID can be relied on except the type name, namespace, and OID can be relied on.
</entry> </entry>
</row> </row>
...@@ -5380,7 +5386,7 @@ ...@@ -5380,7 +5386,7 @@
<entry> <entry>
Character that separates two values of this type when parsing Character that separates two values of this type when parsing
array input. Note that the delimiter is associated with the array array input. Note that the delimiter is associated with the array
element data type, not the array data type element data type, not the array data type.
</entry> </entry>
</row> </row>
...@@ -5396,7 +5402,7 @@ ...@@ -5396,7 +5402,7 @@
<structname>pg_class</structname> entry doesn't really represent <structname>pg_class</structname> entry doesn't really represent
a table, but it is needed anyway for the type's a table, but it is needed anyway for the type's
<structname>pg_attribute</structname> entries to link to.) <structname>pg_attribute</structname> entries to link to.)
Zero for non-composite types Zero for non-composite types.
</entry> </entry>
</row> </row>
...@@ -5418,7 +5424,7 @@ ...@@ -5418,7 +5424,7 @@
its internal representation must be some number of values of the its internal representation must be some number of values of the
<structfield>typelem</structfield> data type with no other data. <structfield>typelem</structfield> data type with no other data.
Variable-length array types have a header defined by the array Variable-length array types have a header defined by the array
subroutines subroutines.
</entry> </entry>
</row> </row>
...@@ -5479,7 +5485,7 @@ ...@@ -5479,7 +5485,7 @@
<entry><structfield>typanalyze</structfield></entry> <entry><structfield>typanalyze</structfield></entry>
<entry><type>regproc</type></entry> <entry><type>regproc</type></entry>
<entry><literal><link linkend="catalog-pg-proc"><structname>pg_proc</structname></link>.oid</literal></entry> <entry><literal><link linkend="catalog-pg-proc"><structname>pg_proc</structname></link>.oid</literal></entry>
<entry>Custom ANALYZE function, or 0 to use the standard function</entry> <entry>Custom <command>ANALYZE</command> function, or 0 to use the standard function</entry>
</row> </row>
<row> <row>
...@@ -5565,7 +5571,7 @@ ...@@ -5565,7 +5571,7 @@
<entry></entry> <entry></entry>
<entry><para> <entry><para>
<structfield>typnotnull</structfield> represents a not-null <structfield>typnotnull</structfield> represents a not-null
constraint on a type. Used for domains only constraint on a type. Used for domains only.
</para></entry> </para></entry>
</row> </row>
...@@ -5576,7 +5582,7 @@ ...@@ -5576,7 +5582,7 @@
<entry><para> <entry><para>
If this is a domain (see <structfield>typtype</structfield>), then If this is a domain (see <structfield>typtype</structfield>), then
<structfield>typbasetype</structfield> identifies the type that this <structfield>typbasetype</structfield> identifies the type that this
one is based on. Zero if this type is not a domain one is based on. Zero if this type is not a domain.
</para></entry> </para></entry>
</row> </row>
...@@ -5587,7 +5593,7 @@ ...@@ -5587,7 +5593,7 @@
<entry><para> <entry><para>
Domains use <structfield>typtypmod</structfield> to record the <literal>typmod</> Domains use <structfield>typtypmod</structfield> to record the <literal>typmod</>
to be applied to their base type (-1 if base type does not use a to be applied to their base type (-1 if base type does not use a
<literal>typmod</>). -1 if this type is not a domain <literal>typmod</>). -1 if this type is not a domain.
</para></entry> </para></entry>
</row> </row>
...@@ -5600,7 +5606,7 @@ ...@@ -5600,7 +5606,7 @@
for a domain that is an array (that is, <structfield>typbasetype</> is for a domain that is an array (that is, <structfield>typbasetype</> is
an array type; the domain's <structfield>typelem</> will match the base an array type; the domain's <structfield>typelem</> will match the base
type's <structfield>typelem</structfield>). type's <structfield>typelem</structfield>).
Zero for types other than domains over array types Zero for types other than domains over array types.
</para></entry> </para></entry>
</row> </row>
...@@ -5611,7 +5617,7 @@ ...@@ -5611,7 +5617,7 @@
<entry><para> <entry><para>
If <structfield>typdefaultbin</> is not null, it is the <function>nodeToString()</function> If <structfield>typdefaultbin</> is not null, it is the <function>nodeToString()</function>
representation of a default expression for the type. This is representation of a default expression for the type. This is
only used for domains only used for domains.
</para></entry> </para></entry>
</row> </row>
...@@ -5627,7 +5633,7 @@ ...@@ -5627,7 +5633,7 @@
<structfield>typdefaultbin</> is null and <structfield>typdefault</> is <structfield>typdefaultbin</> is null and <structfield>typdefault</> is
not, then <structfield>typdefault</> is the external representation of not, then <structfield>typdefault</> is the external representation of
the type's default value, which might be fed to the type's input the type's default value, which might be fed to the type's input
converter to produce a constant converter to produce a constant.
</para></entry> </para></entry>
</row> </row>
</tbody> </tbody>
...@@ -5766,7 +5772,7 @@ ...@@ -5766,7 +5772,7 @@
<entry><type>text[]</type></entry> <entry><type>text[]</type></entry>
<entry></entry> <entry></entry>
<entry> <entry>
User mapping specific options, as <quote>keyword=value</> strings. User mapping specific options, as <quote>keyword=value</> strings
</entry> </entry>
</row> </row>
</tbody> </tbody>
...@@ -6126,7 +6132,7 @@ ...@@ -6126,7 +6132,7 @@
<entry><structfield>tablespace</structfield></entry> <entry><structfield>tablespace</structfield></entry>
<entry><type>name</type></entry> <entry><type>name</type></entry>
<entry><literal><link linkend="catalog-pg-tablespace"><structname>pg_tablespace</structname></link>.spcname</literal></entry> <entry><literal><link linkend="catalog-pg-tablespace"><structname>pg_tablespace</structname></link>.spcname</literal></entry>
<entry>Name of tablespace containing index (NULL if default for database)</entry> <entry>Name of tablespace containing index (null if default for database)</entry>
</row> </row>
<row> <row>
<entry><structfield>indexdef</structfield></entry> <entry><structfield>indexdef</structfield></entry>
...@@ -6193,7 +6199,7 @@ ...@@ -6193,7 +6199,7 @@
<entry><type>text</type></entry> <entry><type>text</type></entry>
<entry></entry> <entry></entry>
<entry> <entry>
type of the lockable object: Type of the lockable object:
<literal>relation</>, <literal>relation</>,
<literal>extend</>, <literal>extend</>,
<literal>page</>, <literal>page</>,
...@@ -6212,7 +6218,7 @@ ...@@ -6212,7 +6218,7 @@
<entry> <entry>
OID of the database in which the object exists, or OID of the database in which the object exists, or
zero if the object is a shared object, or zero if the object is a shared object, or
NULL if the object is a transaction ID null if the object is a transaction ID
</entry> </entry>
</row> </row>
<row> <row>
...@@ -6220,7 +6226,7 @@ ...@@ -6220,7 +6226,7 @@
<entry><type>oid</type></entry> <entry><type>oid</type></entry>
<entry><literal><link linkend="catalog-pg-class"><structname>pg_class</structname></link>.oid</literal></entry> <entry><literal><link linkend="catalog-pg-class"><structname>pg_class</structname></link>.oid</literal></entry>
<entry> <entry>
OID of the relation, or NULL if the object is not OID of the relation, or null if the object is not
a relation or part of a relation a relation or part of a relation
</entry> </entry>
</row> </row>
...@@ -6229,7 +6235,7 @@ ...@@ -6229,7 +6235,7 @@
<entry><type>integer</type></entry> <entry><type>integer</type></entry>
<entry></entry> <entry></entry>
<entry> <entry>
Page number within the relation, or NULL if the object Page number within the relation, or null if the object
is not a tuple or relation page is not a tuple or relation page
</entry> </entry>
</row> </row>
...@@ -6238,7 +6244,7 @@ ...@@ -6238,7 +6244,7 @@
<entry><type>smallint</type></entry> <entry><type>smallint</type></entry>
<entry></entry> <entry></entry>
<entry> <entry>
Tuple number within the page, or NULL if the object is not a tuple Tuple number within the page, or null if the object is not a tuple
</entry> </entry>
</row> </row>
<row> <row>
...@@ -6246,7 +6252,7 @@ ...@@ -6246,7 +6252,7 @@
<entry><type>text</type></entry> <entry><type>text</type></entry>
<entry></entry> <entry></entry>
<entry> <entry>
Virtual ID of a transaction, or NULL if the object is not a Virtual ID of a transaction, or null if the object is not a
virtual transaction ID virtual transaction ID
</entry> </entry>
</row> </row>
...@@ -6255,7 +6261,7 @@ ...@@ -6255,7 +6261,7 @@
<entry><type>xid</type></entry> <entry><type>xid</type></entry>
<entry></entry> <entry></entry>
<entry> <entry>
ID of a transaction, or NULL if the object is not a transaction ID ID of a transaction, or null if the object is not a transaction ID
</entry> </entry>
</row> </row>
<row> <row>
...@@ -6263,7 +6269,7 @@ ...@@ -6263,7 +6269,7 @@
<entry><type>oid</type></entry> <entry><type>oid</type></entry>
<entry><literal><link linkend="catalog-pg-class"><structname>pg_class</structname></link>.oid</literal></entry> <entry><literal><link linkend="catalog-pg-class"><structname>pg_class</structname></link>.oid</literal></entry>
<entry> <entry>
OID of the system catalog containing the object, or NULL if the OID of the system catalog containing the object, or null if the
object is not a general database object object is not a general database object
</entry> </entry>
</row> </row>
...@@ -6272,7 +6278,7 @@ ...@@ -6272,7 +6278,7 @@
<entry><type>oid</type></entry> <entry><type>oid</type></entry>
<entry>any OID column</entry> <entry>any OID column</entry>
<entry> <entry>
OID of the object within its system catalog, or NULL if the OID of the object within its system catalog, or null if the
object is not a general database object. object is not a general database object.
For advisory locks it is used to distinguish the two key For advisory locks it is used to distinguish the two key
spaces (<literal>1</> for an int8 key, <literal>2</> for two spaces (<literal>1</> for an int8 key, <literal>2</> for two
...@@ -6287,7 +6293,7 @@ ...@@ -6287,7 +6293,7 @@
For a table column, this is the column number (the For a table column, this is the column number (the
<structfield>classid</> and <structfield>objid</> refer to the <structfield>classid</> and <structfield>objid</> refer to the
table itself). For all other object types, this column is table itself). For all other object types, this column is
zero. NULL if the object is not a general database object zero. Null if the object is not a general database object
</entry> </entry>
</row> </row>
<row> <row>
...@@ -6304,7 +6310,7 @@ ...@@ -6304,7 +6310,7 @@
<entry></entry> <entry></entry>
<entry> <entry>
Process ID of the server process holding or awaiting this Process ID of the server process holding or awaiting this
lock. NULL if the lock is held by a prepared transaction lock. Null if the lock is held by a prepared transaction.
</entry> </entry>
</row> </row>
<row> <row>
...@@ -6452,7 +6458,7 @@ ...@@ -6452,7 +6458,7 @@
this is the <command>PREPARE</command> statement submitted by this is the <command>PREPARE</command> statement submitted by
the client. For prepared statements created via the the client. For prepared statements created via the
frontend/backend protocol, this is the text of the prepared frontend/backend protocol, this is the text of the prepared
statement itself statement itself.
</entry> </entry>
</row> </row>
<row> <row>
...@@ -6469,7 +6475,7 @@ ...@@ -6469,7 +6475,7 @@
The expected parameter types for the prepared statement in the The expected parameter types for the prepared statement in the
form of an array of <type>regtype</type>. The OID corresponding form of an array of <type>regtype</type>. The OID corresponding
to an element of this array can be obtained by casting the to an element of this array can be obtained by casting the
<type>regtype</type> value to <type>oid</type> <type>regtype</type> value to <type>oid</type>.
</entry> </entry>
</row> </row>
<row> <row>
...@@ -6675,7 +6681,7 @@ ...@@ -6675,7 +6681,7 @@
<entry></entry> <entry></entry>
<entry> <entry>
For roles that can log in, this sets maximum number of concurrent For roles that can log in, this sets maximum number of concurrent
connections this role can make. -1 means no limit connections this role can make. -1 means no limit.
</entry> </entry>
</row> </row>
...@@ -6691,7 +6697,7 @@ ...@@ -6691,7 +6697,7 @@
<entry><type>timestamptz</type></entry> <entry><type>timestamptz</type></entry>
<entry></entry> <entry></entry>
<entry>Password expiry time (only used for password authentication); <entry>Password expiry time (only used for password authentication);
NULL if no expiration</entry> null if no expiration</entry>
</row> </row>
<row> <row>
...@@ -6845,19 +6851,19 @@ ...@@ -6845,19 +6851,19 @@
<row> <row>
<entry><structfield>min_val</structfield></entry> <entry><structfield>min_val</structfield></entry>
<entry><type>text</type></entry> <entry><type>text</type></entry>
<entry>Minimum allowed value of the parameter (NULL for non-numeric <entry>Minimum allowed value of the parameter (null for non-numeric
values)</entry> values)</entry>
</row> </row>
<row> <row>
<entry><structfield>max_val</structfield></entry> <entry><structfield>max_val</structfield></entry>
<entry><type>text</type></entry> <entry><type>text</type></entry>
<entry>Maximum allowed value of the parameter (NULL for non-numeric <entry>Maximum allowed value of the parameter (null for non-numeric
values)</entry> values)</entry>
</row> </row>
<row> <row>
<entry><structfield>enumvals</structfield></entry> <entry><structfield>enumvals</structfield></entry>
<entry><type>text[]</type></entry> <entry><type>text[]</type></entry>
<entry>Allowed values of an enum parameter (NULL for non-enum <entry>Allowed values of an enum parameter (null for non-enum
values)</entry> values)</entry>
</row> </row>
<row> <row>
...@@ -6875,16 +6881,16 @@ ...@@ -6875,16 +6881,16 @@
<row> <row>
<entry><structfield>sourcefile</structfield></entry> <entry><structfield>sourcefile</structfield></entry>
<entry><type>text</type></entry> <entry><type>text</type></entry>
<entry>Configuration file the current value was set in (NULL for <entry>Configuration file the current value was set in (null for
values set from sources other than configuration files, or when values set from sources other than configuration files, or when
examined by a non-superuser). examined by a non-superuser);
Helpful when using configuration include directives</entry> helpful when using <literal>include</> directives in configuration files</entry>
</row> </row>
<row> <row>
<entry><structfield>sourceline</structfield></entry> <entry><structfield>sourceline</structfield></entry>
<entry><type>integer</type></entry> <entry><type>integer</type></entry>
<entry>Line number within the configuration file the current value was <entry>Line number within the configuration file the current value was
set at (NULL for values set from sources other than configuration files, set at (null for values set from sources other than configuration files,
or when examined by a non-superuser) or when examined by a non-superuser)
</entry> </entry>
</row> </row>
...@@ -7101,7 +7107,7 @@ ...@@ -7101,7 +7107,7 @@
likely to increase as the table grows; the positive form is used when likely to increase as the table grows; the positive form is used when
the column seems to have a fixed number of possible values.) For the column seems to have a fixed number of possible values.) For
example, -1 indicates a unique column in which the number of distinct example, -1 indicates a unique column in which the number of distinct
values is the same as the number of rows values is the same as the number of rows.
</entry> </entry>
</row> </row>
...@@ -7110,9 +7116,9 @@ ...@@ -7110,9 +7116,9 @@
<entry><type>anyarray</type></entry> <entry><type>anyarray</type></entry>
<entry></entry> <entry></entry>
<entry> <entry>
A list of the most common values in the column. (NULL if A list of the most common values in the column. (Null if
no values seem to be more common than any others.) no values seem to be more common than any others.)
For some datatypes such as <type>tsvector</>, this is a list of For some data types such as <type>tsvector</>, this is a list of
the most common element values rather than values of the type itself. the most common element values rather than values of the type itself.
</entry> </entry>
</row> </row>
...@@ -7124,8 +7130,8 @@ ...@@ -7124,8 +7130,8 @@
<entry> <entry>
A list of the frequencies of the most common values or elements, A list of the frequencies of the most common values or elements,
i.e., number of occurrences of each divided by total number of rows. i.e., number of occurrences of each divided by total number of rows.
(NULL when <structfield>most_common_vals</structfield> is.) (Null when <structfield>most_common_vals</structfield> is.)
For some datatypes such as <type>tsvector</>, it can also store some For some data types such as <type>tsvector</>, it can also store some
additional information, making it longer than the additional information, making it longer than the
<structfield>most_common_vals</> array. <structfield>most_common_vals</> array.
</entry> </entry>
...@@ -7139,7 +7145,7 @@ ...@@ -7139,7 +7145,7 @@
A list of values that divide the column's values into groups of A list of values that divide the column's values into groups of
approximately equal population. The values in approximately equal population. The values in
<structfield>most_common_vals</>, if present, are omitted from this <structfield>most_common_vals</>, if present, are omitted from this
histogram calculation. (This column is NULL if the column data type histogram calculation. (This column is null if the column data type
does not have a <literal>&lt;</> operator or if the does not have a <literal>&lt;</> operator or if the
<structfield>most_common_vals</> list accounts for the entire <structfield>most_common_vals</> list accounts for the entire
population.) population.)
...@@ -7155,7 +7161,7 @@ ...@@ -7155,7 +7161,7 @@
logical ordering of the column values. This ranges from -1 to +1. logical ordering of the column values. This ranges from -1 to +1.
When the value is near -1 or +1, an index scan on the column will When the value is near -1 or +1, an index scan on the column will
be estimated to be cheaper than when it is near zero, due to reduction be estimated to be cheaper than when it is near zero, due to reduction
of random access to the disk. (This column is NULL if the column data of random access to the disk. (This column is null if the column data
type does not have a <literal>&lt;</> operator.) type does not have a <literal>&lt;</> operator.)
</entry> </entry>
</row> </row>
...@@ -7220,25 +7226,25 @@ ...@@ -7220,25 +7226,25 @@
<entry><structfield>tablespace</structfield></entry> <entry><structfield>tablespace</structfield></entry>
<entry><type>name</type></entry> <entry><type>name</type></entry>
<entry><literal><link linkend="catalog-pg-tablespace"><structname>pg_tablespace</structname></link>.spcname</literal></entry> <entry><literal><link linkend="catalog-pg-tablespace"><structname>pg_tablespace</structname></link>.spcname</literal></entry>
<entry>Name of tablespace containing table (NULL if default for database)</entry> <entry>Name of tablespace containing table (null if default for database)</entry>
</row> </row>
<row> <row>
<entry><structfield>hasindexes</structfield></entry> <entry><structfield>hasindexes</structfield></entry>
<entry><type>boolean</type></entry> <entry><type>boolean</type></entry>
<entry><literal><link linkend="catalog-pg-class"><structname>pg_class</structname></link>.relhasindex</literal></entry> <entry><literal><link linkend="catalog-pg-class"><structname>pg_class</structname></link>.relhasindex</literal></entry>
<entry>true if table has (or recently had) any indexes</entry> <entry>True if table has (or recently had) any indexes</entry>
</row> </row>
<row> <row>
<entry><structfield>hasrules</structfield></entry> <entry><structfield>hasrules</structfield></entry>
<entry><type>boolean</type></entry> <entry><type>boolean</type></entry>
<entry><literal><link linkend="catalog-pg-class"><structname>pg_class</structname></link>.relhasrules</literal></entry> <entry><literal><link linkend="catalog-pg-class"><structname>pg_class</structname></link>.relhasrules</literal></entry>
<entry>true if table has (or once had) rules</entry> <entry>True if table has (or once had) rules</entry>
</row> </row>
<row> <row>
<entry><structfield>hastriggers</structfield></entry> <entry><structfield>hastriggers</structfield></entry>
<entry><type>boolean</type></entry> <entry><type>boolean</type></entry>
<entry><literal><link linkend="catalog-pg-class"><structname>pg_class</structname></link>.relhastriggers</literal></entry> <entry><literal><link linkend="catalog-pg-class"><structname>pg_class</structname></link>.relhastriggers</literal></entry>
<entry>true if table has (or once had) triggers</entry> <entry>True if table has (or once had) triggers</entry>
</row> </row>
</tbody> </tbody>
</tgroup> </tgroup>
...@@ -7509,7 +7515,7 @@ ...@@ -7509,7 +7515,7 @@
<entry> <entry>
User mapping specific options, as <quote>keyword=value</> User mapping specific options, as <quote>keyword=value</>
strings, if the current user is the owner of the foreign strings, if the current user is the owner of the foreign
server, else null. server, else null
</entry> </entry>
</row> </row>
</tbody> </tbody>
......
<!-- $PostgreSQL: pgsql/doc/src/sgml/chkpass.sgml,v 1.2 2007/12/06 04:12:09 tgl Exp $ --> <!-- $PostgreSQL: pgsql/doc/src/sgml/chkpass.sgml,v 1.3 2010/08/17 04:37:20 petere Exp $ -->
<sect1 id="chkpass"> <sect1 id="chkpass">
<title>chkpass</title> <title>chkpass</title>
...@@ -32,7 +32,7 @@ ...@@ -32,7 +32,7 @@
passwords without re-encrypting them. If you want the encrypted password passwords without re-encrypting them. If you want the encrypted password
without the colon then use the <function>raw()</> function. without the colon then use the <function>raw()</> function.
This allows you to use the This allows you to use the
type with things like Apache's Auth_PostgreSQL module. type with things like Apache's <literal>Auth_PostgreSQL</> module.
</para> </para>
<para> <para>
...@@ -43,7 +43,7 @@ ...@@ -43,7 +43,7 @@
</para> </para>
<para> <para>
Note that the chkpass data type is not indexable. Note that the <type>chkpass</type> data type is not indexable.
<!-- <!--
I haven't worried about making this type indexable. I doubt that anyone I haven't worried about making this type indexable. I doubt that anyone
would ever need to sort a file in order of encrypted password. would ever need to sort a file in order of encrypted password.
......
<!-- $PostgreSQL: pgsql/doc/src/sgml/citext.sgml,v 1.5 2010/07/29 19:34:40 petere Exp $ --> <!-- $PostgreSQL: pgsql/doc/src/sgml/citext.sgml,v 1.6 2010/08/17 04:37:20 petere Exp $ -->
<sect1 id="citext"> <sect1 id="citext">
<title>citext</title> <title>citext</title>
...@@ -62,7 +62,7 @@ SELECT * FROM tab WHERE lower(col) = LOWER(?); ...@@ -62,7 +62,7 @@ SELECT * FROM tab WHERE lower(col) = LOWER(?);
lower case characters is dependent on the rules of lower case characters is dependent on the rules of
the <literal>LC_CTYPE</> locale setting. Again, this behavior is the <literal>LC_CTYPE</> locale setting. Again, this behavior is
identical to the use of <function>lower</> in queries. But because it's identical to the use of <function>lower</> in queries. But because it's
done transparently by the datatype, you don't have to remember to do done transparently by the data type, you don't have to remember to do
anything special in your queries. anything special in your queries.
</para> </para>
...@@ -90,8 +90,8 @@ SELECT * FROM users WHERE nick = 'Larry'; ...@@ -90,8 +90,8 @@ SELECT * FROM users WHERE nick = 'Larry';
</programlisting> </programlisting>
The <command>SELECT</> statement will return one tuple, even though The <command>SELECT</> statement will return one tuple, even though
the <structfield>nick</> column was set to <quote>larry</> and the query the <structfield>nick</> column was set to <literal>larry</> and the query
was for <quote>Larry</>. was for <literal>Larry</>.
</para> </para>
</sect2> </sect2>
...@@ -184,7 +184,7 @@ SELECT * FROM users WHERE nick = 'Larry'; ...@@ -184,7 +184,7 @@ SELECT * FROM users WHERE nick = 'Larry';
<listitem> <listitem>
<para> <para>
<type>citext</> is not as efficient as <type>text</> because the <type>citext</> is not as efficient as <type>text</> because the
operator functions and the btree comparison functions must make copies operator functions and the B-tree comparison functions must make copies
of the data and convert it to lower case for comparisons. It is, of the data and convert it to lower case for comparisons. It is,
however, slightly more efficient than using <function>lower</> to get however, slightly more efficient than using <function>lower</> to get
case-insensitive matching. case-insensitive matching.
......
<!-- $PostgreSQL: pgsql/doc/src/sgml/client-auth.sgml,v 1.140 2010/07/29 19:34:40 petere Exp $ --> <!-- $PostgreSQL: pgsql/doc/src/sgml/client-auth.sgml,v 1.141 2010/08/17 04:37:20 petere Exp $ -->
<chapter id="client-authentication"> <chapter id="client-authentication">
<title>Client Authentication</title> <title>Client Authentication</title>
...@@ -80,7 +80,7 @@ ...@@ -80,7 +80,7 @@
A record is made A record is made
up of a number of fields which are separated by spaces and/or tabs. up of a number of fields which are separated by spaces and/or tabs.
Fields can contain white space if the field value is quoted. Fields can contain white space if the field value is quoted.
Quoting one of the keywords in a database or username field (e.g., Quoting one of the keywords in a database or user name field (e.g.,
<literal>all</> or <literal>replication</>) makes the word lose its special <literal>all</> or <literal>replication</>) makes the word lose its special
character, and just match a database or user with that name. character, and just match a database or user with that name.
</para> </para>
...@@ -578,10 +578,10 @@ local db1,db2,@demodbs all md5 ...@@ -578,10 +578,10 @@ local db1,db2,@demodbs all md5
</sect1> </sect1>
<sect1 id="auth-username-maps"> <sect1 id="auth-username-maps">
<title>Username maps</title> <title>User name maps</title>
<indexterm zone="auth-username-maps"> <indexterm zone="auth-username-maps">
<primary>Username maps</primary> <primary>User name maps</primary>
</indexterm> </indexterm>
<para> <para>
...@@ -589,10 +589,10 @@ local db1,db2,@demodbs all md5 ...@@ -589,10 +589,10 @@ local db1,db2,@demodbs all md5
the name of the operating system user that initiated the connection the name of the operating system user that initiated the connection
might not be the same as the database user he needs to connect as. might not be the same as the database user he needs to connect as.
In this case, a user name map can be applied to map the operating system In this case, a user name map can be applied to map the operating system
username to a database user. To use username mapping, specify user name to a database user. To use user name mapping, specify
<literal>map</literal>=<replaceable>map-name</replaceable> <literal>map</literal>=<replaceable>map-name</replaceable>
in the options field in <filename>pg_hba.conf</filename>. This option is in the options field in <filename>pg_hba.conf</filename>. This option is
supported for all authentication methods that receive external usernames. supported for all authentication methods that receive external user names.
Since different mappings might be needed for different connections, Since different mappings might be needed for different connections,
the name of the map to be used is specified in the the name of the map to be used is specified in the
<replaceable>map-name</replaceable> parameter in <filename>pg_hba.conf</filename> <replaceable>map-name</replaceable> parameter in <filename>pg_hba.conf</filename>
...@@ -600,7 +600,7 @@ local db1,db2,@demodbs all md5 ...@@ -600,7 +600,7 @@ local db1,db2,@demodbs all md5
</para> </para>
<para> <para>
Username maps are defined in the ident map file, which by default is named User name maps are defined in the ident map file, which by default is named
<filename>pg_ident.conf</><indexterm><primary>pg_ident.conf</primary></indexterm> <filename>pg_ident.conf</><indexterm><primary>pg_ident.conf</primary></indexterm>
and is stored in the and is stored in the
cluster's data directory. (It is possible to place the map file cluster's data directory. (It is possible to place the map file
...@@ -636,13 +636,13 @@ local db1,db2,@demodbs all md5 ...@@ -636,13 +636,13 @@ local db1,db2,@demodbs all md5
expression can include a single capture, or parenthesized subexpression, expression can include a single capture, or parenthesized subexpression,
which can then be referenced in the <replaceable>database-username</> which can then be referenced in the <replaceable>database-username</>
field as <literal>\1</> (backslash-one). This allows the mapping of field as <literal>\1</> (backslash-one). This allows the mapping of
multiple usernames in a single line, which is particularly useful for multiple user names in a single line, which is particularly useful for
simple syntax substitutions. For example, these entries simple syntax substitutions. For example, these entries
<programlisting> <programlisting>
mymap /^(.*)@mydomain\.com$ \1 mymap /^(.*)@mydomain\.com$ \1
mymap /^(.*)@otherdomain\.com$ guest mymap /^(.*)@otherdomain\.com$ guest
</programlisting> </programlisting>
will remove the domain part for users with system usernames that end with will remove the domain part for users with system user names that end with
<literal>@mydomain.com</>, and allow any user whose system name ends with <literal>@mydomain.com</>, and allow any user whose system name ends with
<literal>@otherdomain.com</> to log in as <literal>guest</>. <literal>@otherdomain.com</> to log in as <literal>guest</>.
</para> </para>
...@@ -652,7 +652,7 @@ mymap /^(.*)@otherdomain\.com$ guest ...@@ -652,7 +652,7 @@ mymap /^(.*)@otherdomain\.com$ guest
Keep in mind that by default, a regular expression can match just part of Keep in mind that by default, a regular expression can match just part of
a string. It's usually wise to use <literal>^</> and <literal>$</>, as a string. It's usually wise to use <literal>^</> and <literal>$</>, as
shown in the above example, to force the match to be to the entire shown in the above example, to force the match to be to the entire
system username. system user name.
</para> </para>
</tip> </tip>
...@@ -835,7 +835,7 @@ omicron bryanh guest1 ...@@ -835,7 +835,7 @@ omicron bryanh guest1
<para> <para>
If set to <literal>1</>, the realm name from the authenticated user If set to <literal>1</>, the realm name from the authenticated user
principal is included in the system user name that's passed through principal is included in the system user name that's passed through
username mapping (<xref linkend="auth-username-maps">). This is user name mapping (<xref linkend="auth-username-maps">). This is
useful for handling users from multiple realms. useful for handling users from multiple realms.
</para> </para>
</listitem> </listitem>
...@@ -845,10 +845,10 @@ omicron bryanh guest1 ...@@ -845,10 +845,10 @@ omicron bryanh guest1
<term><literal>map</literal></term> <term><literal>map</literal></term>
<listitem> <listitem>
<para> <para>
Allows for mapping between system and database usernames. See Allows for mapping between system and database user names. See
<xref linkend="auth-username-maps"> for details. For a Kerberos <xref linkend="auth-username-maps"> for details. For a Kerberos
principal <literal>username/hostbased@EXAMPLE.COM</literal>, the principal <literal>username/hostbased@EXAMPLE.COM</literal>, the
username used for mapping is <literal>username/hostbased</literal> user name used for mapping is <literal>username/hostbased</literal>
if <literal>include_realm</literal> is disabled, and if <literal>include_realm</literal> is disabled, and
<literal>username/hostbased@EXAMPLE.COM</literal> if <literal>username/hostbased@EXAMPLE.COM</literal> if
<literal>include_realm</literal> is enabled. <literal>include_realm</literal> is enabled.
...@@ -862,7 +862,7 @@ omicron bryanh guest1 ...@@ -862,7 +862,7 @@ omicron bryanh guest1
<para> <para>
Sets the realm to match user principal names against. If this parameter Sets the realm to match user principal names against. If this parameter
is set, only users of that realm will be accepted. If it is not set, is set, only users of that realm will be accepted. If it is not set,
users of any realm can connect, subject to whatever username mapping users of any realm can connect, subject to whatever user name mapping
is done. is done.
</para> </para>
</listitem> </listitem>
...@@ -906,7 +906,7 @@ omicron bryanh guest1 ...@@ -906,7 +906,7 @@ omicron bryanh guest1
<para> <para>
If set to <literal>1</>, the realm name from the authenticated user If set to <literal>1</>, the realm name from the authenticated user
principal is included in the system user name that's passed through principal is included in the system user name that's passed through
username mapping (<xref linkend="auth-username-maps">). This is user name mapping (<xref linkend="auth-username-maps">). This is
useful for handling users from multiple realms. useful for handling users from multiple realms.
</para> </para>
</listitem> </listitem>
...@@ -916,7 +916,7 @@ omicron bryanh guest1 ...@@ -916,7 +916,7 @@ omicron bryanh guest1
<term><literal>map</literal></term> <term><literal>map</literal></term>
<listitem> <listitem>
<para> <para>
Allows for mapping between system and database usernames. See Allows for mapping between system and database user names. See
<xref linkend="auth-username-maps"> for details. <xref linkend="auth-username-maps"> for details.
</para> </para>
</listitem> </listitem>
...@@ -928,7 +928,7 @@ omicron bryanh guest1 ...@@ -928,7 +928,7 @@ omicron bryanh guest1
<para> <para>
Sets the realm to match user principal names against. If this parameter Sets the realm to match user principal names against. If this parameter
is set, only users of that realm will be accepted. If it is not set, is set, only users of that realm will be accepted. If it is not set,
users of any realm can connect, subject to whatever username mapping users of any realm can connect, subject to whatever user name mapping
is done. is done.
</para> </para>
</listitem> </listitem>
...@@ -1006,13 +1006,13 @@ omicron bryanh guest1 ...@@ -1006,13 +1006,13 @@ omicron bryanh guest1
<para> <para>
Client principals must have their <productname>PostgreSQL</> database user Client principals must have their <productname>PostgreSQL</> database user
name as their first component, for example name as their first component, for example
<literal>pgusername@realm</>. Alternatively, you can use a username <literal>pgusername@realm</>. Alternatively, you can use a user name
mapping to map from the first component of the principal name to the mapping to map from the first component of the principal name to the
database user name. By default, the realm of the client is database user name. By default, the realm of the client is
not checked by <productname>PostgreSQL</>. If you have cross-realm not checked by <productname>PostgreSQL</>. If you have cross-realm
authentication enabled and need to verify the realm, use the authentication enabled and need to verify the realm, use the
<literal>krb_realm</> parameter, or enable <literal>include_realm</> <literal>krb_realm</> parameter, or enable <literal>include_realm</>
and use username mapping to check the realm. and use user name mapping to check the realm.
</para> </para>
<para> <para>
...@@ -1041,7 +1041,7 @@ omicron bryanh guest1 ...@@ -1041,7 +1041,7 @@ omicron bryanh guest1
principal matching the requested database user name. For example, for principal matching the requested database user name. For example, for
database user name <literal>fred</>, principal database user name <literal>fred</>, principal
<literal>fred@EXAMPLE.COM</> would be able to connect. To also allow <literal>fred@EXAMPLE.COM</> would be able to connect. To also allow
principal <literal>fred/users.example.com@EXAMPLE.COM</>, use a username principal <literal>fred/users.example.com@EXAMPLE.COM</>, use a user name
map, as described in <xref linkend="auth-username-maps">. map, as described in <xref linkend="auth-username-maps">.
</para> </para>
...@@ -1063,7 +1063,7 @@ omicron bryanh guest1 ...@@ -1063,7 +1063,7 @@ omicron bryanh guest1
<term><literal>map</literal></term> <term><literal>map</literal></term>
<listitem> <listitem>
<para> <para>
Allows for mapping between system and database usernames. See Allows for mapping between system and database user names. See
<xref linkend="auth-username-maps"> for details. <xref linkend="auth-username-maps"> for details.
</para> </para>
</listitem> </listitem>
...@@ -1075,7 +1075,7 @@ omicron bryanh guest1 ...@@ -1075,7 +1075,7 @@ omicron bryanh guest1
<para> <para>
If set to <literal>1</>, the realm name from the authenticated user If set to <literal>1</>, the realm name from the authenticated user
principal is included in the system user name that's passed through principal is included in the system user name that's passed through
username mapping (<xref linkend="auth-username-maps">). This is user name mapping (<xref linkend="auth-username-maps">). This is
useful for handling users from multiple realms. useful for handling users from multiple realms.
</para> </para>
</listitem> </listitem>
...@@ -1087,7 +1087,7 @@ omicron bryanh guest1 ...@@ -1087,7 +1087,7 @@ omicron bryanh guest1
<para> <para>
Sets the realm to match user principal names against. If this parameter Sets the realm to match user principal names against. If this parameter
is set, only users of that realm will be accepted. If it is not set, is set, only users of that realm will be accepted. If it is not set,
users of any realm can connect, subject to whatever username mapping users of any realm can connect, subject to whatever user name mapping
is done. is done.
</para> </para>
</listitem> </listitem>
...@@ -1119,7 +1119,7 @@ omicron bryanh guest1 ...@@ -1119,7 +1119,7 @@ omicron bryanh guest1
<para> <para>
The ident authentication method works by obtaining the client's The ident authentication method works by obtaining the client's
operating system user name and using it as the allowed database user operating system user name and using it as the allowed database user
name (with an optional username mapping). name (with an optional user name mapping).
The determination of the client's The determination of the client's
user name is the security-critical point, and it works differently user name is the security-critical point, and it works differently
depending on the connection type, as described below. depending on the connection type, as described below.
...@@ -1132,7 +1132,7 @@ omicron bryanh guest1 ...@@ -1132,7 +1132,7 @@ omicron bryanh guest1
<term><literal>map</literal></term> <term><literal>map</literal></term>
<listitem> <listitem>
<para> <para>
Allows for mapping between system and database usernames. See Allows for mapping between system and database user names. See
<xref linkend="auth-username-maps"> for details. <xref linkend="auth-username-maps"> for details.
</para> </para>
</listitem> </listitem>
...@@ -1245,7 +1245,7 @@ omicron bryanh guest1 ...@@ -1245,7 +1245,7 @@ omicron bryanh guest1
<para> <para>
In the second mode, the server first binds to the LDAP directory with In the second mode, the server first binds to the LDAP directory with
a fixed username and password, specified with <replaceable>ldapbinduser</> a fixed user name and password, specified with <replaceable>ldapbinduser</>
and <replaceable>ldapbinddn</>, and performs a search for the user trying and <replaceable>ldapbinddn</>, and performs a search for the user trying
to log in to the database. If no user and password is configured, an to log in to the database. If no user and password is configured, an
anonymous bind will be attempted to the directory. The search will be anonymous bind will be attempted to the directory. The search will be
...@@ -1295,7 +1295,7 @@ omicron bryanh guest1 ...@@ -1295,7 +1295,7 @@ omicron bryanh guest1
<term><literal>ldapprefix</literal></term> <term><literal>ldapprefix</literal></term>
<listitem> <listitem>
<para> <para>
String to prepend to the username when forming the DN to bind as, String to prepend to the user name when forming the DN to bind as,
when doing simple bind authentication. when doing simple bind authentication.
</para> </para>
</listitem> </listitem>
...@@ -1304,7 +1304,7 @@ omicron bryanh guest1 ...@@ -1304,7 +1304,7 @@ omicron bryanh guest1
<term><literal>ldapsuffix</literal></term> <term><literal>ldapsuffix</literal></term>
<listitem> <listitem>
<para> <para>
String to append to the username when forming the DN to bind as, String to append to the user name when forming the DN to bind as,
when doing simple bind authentication. when doing simple bind authentication.
</para> </para>
</listitem> </listitem>
...@@ -1340,7 +1340,7 @@ omicron bryanh guest1 ...@@ -1340,7 +1340,7 @@ omicron bryanh guest1
<term><literal>ldapsearchattribute</literal></term> <term><literal>ldapsearchattribute</literal></term>
<listitem> <listitem>
<para> <para>
Attribute to match against the username in the search when doing Attribute to match against the user name in the search when doing
search+bind authentication. search+bind authentication.
</para> </para>
</listitem> </listitem>
...@@ -1464,9 +1464,9 @@ ldapserver=ldap.example.net ldapprefix="cn=" ldapsuffix=", dc=example, dc=net" ...@@ -1464,9 +1464,9 @@ ldapserver=ldap.example.net ldapprefix="cn=" ldapsuffix=", dc=example, dc=net"
the client provide a valid certificate. No password prompt will be sent the client provide a valid certificate. No password prompt will be sent
to the client. The <literal>cn</literal> (Common Name) attribute of the to the client. The <literal>cn</literal> (Common Name) attribute of the
certificate certificate
will be compared to the requested database username, and if they match will be compared to the requested database user name, and if they match
the login will be allowed. Username mapping can be used to allow the login will be allowed. User name mapping can be used to allow
<literal>cn</literal> to be different from the database username. <literal>cn</literal> to be different from the database user name.
</para> </para>
<para> <para>
...@@ -1477,7 +1477,7 @@ ldapserver=ldap.example.net ldapprefix="cn=" ldapsuffix=", dc=example, dc=net" ...@@ -1477,7 +1477,7 @@ ldapserver=ldap.example.net ldapprefix="cn=" ldapsuffix=", dc=example, dc=net"
<term><literal>map</literal></term> <term><literal>map</literal></term>
<listitem> <listitem>
<para> <para>
Allows for mapping between system and database usernames. See Allows for mapping between system and database user names. See
<xref linkend="auth-username-maps"> for details. <xref linkend="auth-username-maps"> for details.
</para> </para>
</listitem> </listitem>
......
<!-- $PostgreSQL: pgsql/doc/src/sgml/config.sgml,v 1.303 2010/08/03 19:02:21 tgl Exp $ --> <!-- $PostgreSQL: pgsql/doc/src/sgml/config.sgml,v 1.304 2010/08/17 04:37:20 petere Exp $ -->
<chapter Id="runtime-config"> <chapter Id="runtime-config">
<title>Server Configuration</title> <title>Server Configuration</title>
...@@ -243,7 +243,7 @@ SET ENABLE_SEQSCAN TO OFF; ...@@ -243,7 +243,7 @@ SET ENABLE_SEQSCAN TO OFF;
<listitem> <listitem>
<para> <para>
Specifies the configuration file for Specifies the configuration file for
<xref linkend="auth-username-maps"> username mapping <xref linkend="auth-username-maps"> user name mapping
(customarily called <filename>pg_ident.conf</>). (customarily called <filename>pg_ident.conf</>).
This parameter can only be set at server start. This parameter can only be set at server start.
</para> </para>
...@@ -1495,7 +1495,7 @@ SET ENABLE_SEQSCAN TO OFF; ...@@ -1495,7 +1495,7 @@ SET ENABLE_SEQSCAN TO OFF;
one transaction is determined by the setting in effect when it one transaction is determined by the setting in effect when it
commits. It is therefore possible, and useful, to have some commits. It is therefore possible, and useful, to have some
transactions commit synchronously and others asynchronously. transactions commit synchronously and others asynchronously.
For example, to make a single multi-statement transaction commit For example, to make a single multistatement transaction commit
asynchronously when the default is the opposite, issue <command>SET asynchronously when the default is the opposite, issue <command>SET
LOCAL synchronous_commit TO OFF</> within the transaction. LOCAL synchronous_commit TO OFF</> within the transaction.
</para> </para>
...@@ -3407,9 +3407,8 @@ local0.* /var/log/postgresql ...@@ -3407,9 +3407,8 @@ local0.* /var/log/postgresql
fields to displayed messages. <literal>TERSE</> excludes fields to displayed messages. <literal>TERSE</> excludes
the logging of <literal>DETAIL</>, <literal>HINT</>, the logging of <literal>DETAIL</>, <literal>HINT</>,
<literal>QUERY</>, and <literal>CONTEXT</> error information. <literal>QUERY</>, and <literal>CONTEXT</> error information.
<literal>VERBOSE</> output includes the <link <literal>VERBOSE</> output includes the <symbol>SQLSTATE</> error
linkend="errcodes-appendix">SQLSTATE</> error code (see also <xref linkend="errcodes-appendix">) and the source code file name, function name,
code and the source code file name, function name,
and line number that generated the error. and line number that generated the error.
Only superusers can change this setting. Only superusers can change this setting.
</para> </para>
...@@ -5492,7 +5491,7 @@ dynamic_library_path = 'C:\tools\postgresql;H:\my_project\lib;$libdir' ...@@ -5492,7 +5491,7 @@ dynamic_library_path = 'C:\tools\postgresql;H:\my_project\lib;$libdir'
the server. The default value of <literal>NAMEDATALEN</> is the server. The default value of <literal>NAMEDATALEN</> is
64; therefore the default 64; therefore the default
<varname>max_identifier_length</varname> is 63 bytes, which <varname>max_identifier_length</varname> is 63 bytes, which
can be less than 63 characters when using multi-byte encodings. can be less than 63 characters when using multibyte encodings.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
...@@ -5803,7 +5802,7 @@ plruby.use_strict = true # generates error: unknown class name ...@@ -5803,7 +5802,7 @@ plruby.use_strict = true # generates error: unknown class name
If on, emit information about lock usage. Information dumped If on, emit information about lock usage. Information dumped
includes the type of lock operation, the type of lock and the unique includes the type of lock operation, the type of lock and the unique
identifier of the object being locked or unlocked. Also included identifier of the object being locked or unlocked. Also included
are bitmasks for the lock types already granted on this object as are bit masks for the lock types already granted on this object as
well as for the lock types awaited on this object. For each lock well as for the lock types awaited on this object. For each lock
type a count of the number of granted locks and waiting locks is type a count of the number of granted locks and waiting locks is
also dumped as well as the totals. An example of the log file output also dumped as well as the totals. An example of the log file output
...@@ -5823,7 +5822,7 @@ LOG: CleanUpLock: deleting: lock(0xb7acd844) id(24688,24696,0,0,0,1) ...@@ -5823,7 +5822,7 @@ LOG: CleanUpLock: deleting: lock(0xb7acd844) id(24688,24696,0,0,0,1)
wait(0) type(INVALID) wait(0) type(INVALID)
</screen> </screen>
Details of the structure being dumped may be found in Details of the structure being dumped may be found in
src/include/storage/lock.h <filename>src/include/storage/lock.h</filename>.
</para> </para>
<para> <para>
This parameter is only available if the <symbol>LOCK_DEBUG</symbol> This parameter is only available if the <symbol>LOCK_DEBUG</symbol>
...@@ -5917,7 +5916,7 @@ LOG: CleanUpLock: deleting: lock(0xb7acd844) id(24688,24696,0,0,0,1) ...@@ -5917,7 +5916,7 @@ LOG: CleanUpLock: deleting: lock(0xb7acd844) id(24688,24696,0,0,0,1)
<listitem> <listitem>
<para> <para>
If set, dumps information about all current locks when a If set, dumps information about all current locks when a
DeadLockTimeout occurs. deadlock timeout occurs.
</para> </para>
<para> <para>
This parameter is only available if the <symbol>LOCK_DEBUG</symbol> This parameter is only available if the <symbol>LOCK_DEBUG</symbol>
...@@ -5935,7 +5934,7 @@ LOG: CleanUpLock: deleting: lock(0xb7acd844) id(24688,24696,0,0,0,1) ...@@ -5935,7 +5934,7 @@ LOG: CleanUpLock: deleting: lock(0xb7acd844) id(24688,24696,0,0,0,1)
<listitem> <listitem>
<para> <para>
If set, logs system resource usage statistics (memory and CPU) on If set, logs system resource usage statistics (memory and CPU) on
various btree operations. various B-tree operations.
</para> </para>
<para> <para>
This parameter is only available if the <symbol>BTREE_BUILD_STATS</symbol> This parameter is only available if the <symbol>BTREE_BUILD_STATS</symbol>
...@@ -5981,7 +5980,7 @@ LOG: CleanUpLock: deleting: lock(0xb7acd844) id(24688,24696,0,0,0,1) ...@@ -5981,7 +5980,7 @@ LOG: CleanUpLock: deleting: lock(0xb7acd844) id(24688,24696,0,0,0,1)
to the log. The default is <literal>WARNING</>. Note that to the log. The default is <literal>WARNING</>. Note that
<literal>LOG</> has a different rank here than in <literal>LOG</> has a different rank here than in
<varname>client_min_messages</>. <varname>client_min_messages</>.
Parameter should be set in the postgresql.conf only. Parameter should be set in <filename>postgresql.conf</filename> only.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
......
<!-- $PostgreSQL: pgsql/doc/src/sgml/contrib-spi.sgml,v 1.2 2007/12/06 04:12:09 tgl Exp $ --> <!-- $PostgreSQL: pgsql/doc/src/sgml/contrib-spi.sgml,v 1.3 2010/08/17 04:37:20 petere Exp $ -->
<sect1 id="contrib-spi"> <sect1 id="contrib-spi">
<title>spi</title> <title>spi</title>
...@@ -133,8 +133,8 @@ CREATE TABLE mytab ( ...@@ -133,8 +133,8 @@ CREATE TABLE mytab (
<para> <para>
<function>set_timetravel()</> allows you to turn time-travel on or off for <function>set_timetravel()</> allows you to turn time-travel on or off for
a table. a table.
<literal>set_timetravel('mytab', 1)</> will turn TT ON for table mytab. <literal>set_timetravel('mytab', 1)</> will turn TT ON for table <literal>mytab</>.
<literal>set_timetravel('mytab', 0)</> will turn TT OFF for table mytab. <literal>set_timetravel('mytab', 0)</> will turn TT OFF for table <literal>mytab</>.
In both cases the old status is reported. While TT is off, you can modify In both cases the old status is reported. While TT is off, you can modify
the start_date and stop_date columns freely. Note that the on/off status the start_date and stop_date columns freely. Note that the on/off status
is local to the current database session &mdash; fresh sessions will is local to the current database session &mdash; fresh sessions will
......
<!-- $PostgreSQL: pgsql/doc/src/sgml/cube.sgml,v 1.8 2010/07/29 19:34:40 petere Exp $ --> <!-- $PostgreSQL: pgsql/doc/src/sgml/cube.sgml,v 1.9 2010/08/17 04:37:20 petere Exp $ -->
<sect1 id="cube"> <sect1 id="cube">
<title>cube</title> <title>cube</title>
...@@ -9,7 +9,7 @@ ...@@ -9,7 +9,7 @@
<para> <para>
This module implements a data type <type>cube</> for This module implements a data type <type>cube</> for
representing multi-dimensional cubes. representing multidimensional cubes.
</para> </para>
<sect2> <sect2>
...@@ -98,7 +98,7 @@ ...@@ -98,7 +98,7 @@
<para> <para>
The <filename>cube</> module includes a GiST index operator class for The <filename>cube</> module includes a GiST index operator class for
<type>cube</> values. <type>cube</> values.
The operators supported by the GiST opclass are shown in <xref linkend="cube-gist-operators">. The operators supported by the GiST operator class are shown in <xref linkend="cube-gist-operators">.
</para> </para>
<table id="cube-gist-operators"> <table id="cube-gist-operators">
...@@ -140,7 +140,7 @@ ...@@ -140,7 +140,7 @@
respectively called <literal>@</> and <literal>~</>. These names are still available, but are respectively called <literal>@</> and <literal>~</>. These names are still available, but are
deprecated and will eventually be retired. Notice that the old names deprecated and will eventually be retired. Notice that the old names
are reversed from the convention formerly followed by the core geometric are reversed from the convention formerly followed by the core geometric
datatypes!) data types!)
</para> </para>
<para> <para>
...@@ -339,7 +339,7 @@ cube_inter ...@@ -339,7 +339,7 @@ cube_inter
<para> <para>
In all binary operations on differently-dimensioned cubes, I assume the In all binary operations on differently-dimensioned cubes, I assume the
lower-dimensional one to be a cartesian projection, i. e., having zeroes lower-dimensional one to be a Cartesian projection, i. e., having zeroes
in place of coordinates omitted in the string representation. The above in place of coordinates omitted in the string representation. The above
examples are equivalent to: examples are equivalent to:
</para> </para>
......
<!-- $PostgreSQL: pgsql/doc/src/sgml/cvs.sgml,v 1.52 2009/12/07 19:19:56 mha Exp $ --> <!-- $PostgreSQL: pgsql/doc/src/sgml/cvs.sgml,v 1.53 2010/08/17 04:37:20 petere Exp $ -->
<appendix id="cvs"> <appendix id="cvs">
<appendixinfo> <appendixinfo>
...@@ -35,14 +35,14 @@ ...@@ -35,14 +35,14 @@
</para> </para>
<para> <para>
Using <productname>git</> is the most flexible way to work with the source, and it Using <productname>Git</> is the most flexible way to work with the source, and it
allows you to work offline without having constant access to the project servers. allows you to work offline without having constant access to the project servers.
<productname>rsync</> based <productname>cvs</> also lets you work offline, but <productname>rsync</> based <productname>CVS</> also lets you work offline, but
lacks many of the other advantages of <productname>git</>. lacks many of the other advantages of <productname>Git</>.
</para> </para>
<para> <para>
Our Wiki, <ulink Our wiki, <ulink
url="http://wiki.postgresql.org/wiki/Working_with_CVS"></ulink> and url="http://wiki.postgresql.org/wiki/Working_with_CVS"></ulink> and
<ulink url="http://wiki.postgresql.org/wiki/Working_with_Git"></ulink>, <ulink url="http://wiki.postgresql.org/wiki/Working_with_Git"></ulink>,
has additional details on working with CVS and Git. has additional details on working with CVS and Git.
...@@ -52,7 +52,7 @@ ...@@ -52,7 +52,7 @@
<title>Getting The Source Via <productname>Git</></title> <title>Getting The Source Via <productname>Git</></title>
<para> <para>
With <productname>git</> you will make a copy of the entire code repository With <productname>Git</> you will make a copy of the entire code repository
to your local machine, so you will have access to all history and branches to your local machine, so you will have access to all history and branches
offline. This is the fastest and most flexible way to develop or test offline. This is the fastest and most flexible way to develop or test
patches. patches.
...@@ -63,35 +63,35 @@ ...@@ -63,35 +63,35 @@
<step> <step>
<para> <para>
You will need an installed version of <productname>git</>, which you can get You will need an installed version of <productname>Git</>, which you can get
from <ulink url="http://git-scm.com"></ulink>. Many systems also have a recent from <ulink url="http://git-scm.com"></ulink>. Many systems also have a recent
version of <application>git</> installed by default, or available in their version of <application>Git</> installed by default, or available in their
package repository system. package repository system.
</para> </para>
</step> </step>
<step> <step>
<para> <para>
To being using the git repository, make a clone of the official mirror: To being using the Git repository, make a clone of the official mirror:
<programlisting> <programlisting>
git clone git://git.postgresql.org/git/postgresql.git git clone git://git.postgresql.org/git/postgresql.git
</programlisting> </programlisting>
This will copy the full repository to your local machine, so it may take This will copy the full repository to your local machine, so it may take
a while to complete, especially if you have a slow internet connection. a while to complete, especially if you have a slow Internet connection.
</para> </para>
<para> <para>
The git mirror can also be reached via the http protocol in case for example The Git mirror can also be reached via the HTTP protocol in case for example
a firewall is blocking access to the git protocol. Just replace the URL a firewall is blocking access to the Git protocol. Just replace the URL
like: like:
<programlisting> <programlisting>
git clone http://git.postgresql.org/git/postgresql.git git clone http://git.postgresql.org/git/postgresql.git
</programlisting> </programlisting>
The http protocol is less efficient than the git protocol, so it will be The HTTP protocol is less efficient than the Git protocol, so it will be
slightly slower to use. slightly slower to use.
</para> </para>
</step> </step>
...@@ -108,7 +108,7 @@ git fetch ...@@ -108,7 +108,7 @@ git fetch
</step> </step>
</procedure> </procedure>
<para> <para>
<productname>git</> can do a lot more things than just fetch the source. For <productname>Git</> can do a lot more things than just fetch the source. For
more information, consult the man pages for the product, or the website at more information, consult the man pages for the product, or the website at
<ulink url="http://git-scm.com"></>. <ulink url="http://git-scm.com"></>.
</para> </para>
...@@ -226,7 +226,7 @@ cvs update ...@@ -226,7 +226,7 @@ cvs update
CVS repository. To work around that deficiency, use CVS repository. To work around that deficiency, use
<productname>cvsutils</productname>, which is packaged in several <productname>cvsutils</productname>, which is packaged in several
operating systems, and is available in source form at <ulink operating systems, and is available in source form at <ulink
url="http://www.red-bean.com/cvsutils/"></ulink>, or use <productname>git</> url="http://www.red-bean.com/cvsutils/"></ulink>, or use <productname>Git</>
or another system designed to work offline. or another system designed to work offline.
</para> </para>
...@@ -265,7 +265,7 @@ rsync -avzH --delete anoncvs.postgresql.org::pgsql-cvs cvsroot/ ...@@ -265,7 +265,7 @@ rsync -avzH --delete anoncvs.postgresql.org::pgsql-cvs cvsroot/
</programlisting> </programlisting>
For full instructions, see the "rsync" section in the For full instructions, see the "rsync" section in the
<ulink url="http://pgfoundry.org/docman/view.php/1000040/4/PGBuildFarm-HOWTO.txt"> <ulink url="http://pgfoundry.org/docman/view.php/1000040/4/PGBuildFarm-HOWTO.txt">
pgbuildfarm instructions</ulink>. PostgreSQL Build Farm instructions</ulink>.
</para> </para>
</sect1> </sect1>
</appendix> </appendix>
<!-- $PostgreSQL: pgsql/doc/src/sgml/datatype.sgml,v 1.256 2010/08/10 20:41:27 petere Exp $ --> <!-- $PostgreSQL: pgsql/doc/src/sgml/datatype.sgml,v 1.257 2010/08/17 04:37:20 petere Exp $ -->
<chapter id="datatype"> <chapter id="datatype">
<title>Data Types</title> <title>Data Types</title>
...@@ -3792,7 +3792,7 @@ SELECT to_tsvector('english', 'The Fat Rats'); ...@@ -3792,7 +3792,7 @@ SELECT to_tsvector('english', 'The Fat Rats');
<para> <para>
A <type>tsquery</type> value stores lexemes that are to be A <type>tsquery</type> value stores lexemes that are to be
searched for, and combines them honoring the boolean operators searched for, and combines them honoring the Boolean operators
<literal>&amp;</literal> (AND), <literal>|</literal> (OR), and <literal>&amp;</literal> (AND), <literal>|</literal> (OR), and
<literal>!</> (NOT). Parentheses can be used to enforce grouping <literal>!</> (NOT). Parentheses can be used to enforce grouping
of the operators: of the operators:
......
<!-- $PostgreSQL: pgsql/doc/src/sgml/dblink.sgml,v 1.14 2010/07/29 19:34:40 petere Exp $ --> <!-- $PostgreSQL: pgsql/doc/src/sgml/dblink.sgml,v 1.15 2010/08/17 04:37:20 petere Exp $ -->
<sect1 id="dblink"> <sect1 id="dblink">
<title>dblink</title> <title>dblink</title>
...@@ -413,7 +413,7 @@ SELECT * ...@@ -413,7 +413,7 @@ SELECT *
extension.) This allows the system to understand what extension.) This allows the system to understand what
<literal>*</> should expand to, and what <structname>proname</> <literal>*</> should expand to, and what <structname>proname</>
in the <literal>WHERE</> clause refers to, in advance of trying in the <literal>WHERE</> clause refers to, in advance of trying
to execute the function. At runtime, an error will be thrown to execute the function. At run time, an error will be thrown
if the actual query result from the remote database does not if the actual query result from the remote database does not
have the same number of columns shown in the <literal>FROM</> clause. have the same number of columns shown in the <literal>FROM</> clause.
The column names need not match, however, and <function>dblink</> The column names need not match, however, and <function>dblink</>
...@@ -1320,7 +1320,7 @@ dblink_get_notify(text connname) returns setof (notify_name text, be_pid int, ex ...@@ -1320,7 +1320,7 @@ dblink_get_notify(text connname) returns setof (notify_name text, be_pid int, ex
<refsect1> <refsect1>
<title>Return Value</title> <title>Return Value</title>
<para>Returns setof (notify_name text, be_pid int, extra text), or an empty set if none.</para> <para>Returns <type>setof (notify_name text, be_pid int, extra text)</type>, or an empty set if none.</para>
</refsect1> </refsect1>
<refsect1> <refsect1>
...@@ -1615,7 +1615,7 @@ dblink_get_pkey(text relname) returns setof dblink_pkey_results ...@@ -1615,7 +1615,7 @@ dblink_get_pkey(text relname) returns setof dblink_pkey_results
<para> <para>
Returns one row for each primary key field, or no rows if the relation Returns one row for each primary key field, or no rows if the relation
has no primary key. The result rowtype is defined as has no primary key. The result row type is defined as
<programlisting> <programlisting>
CREATE TYPE dblink_pkey_results AS (position int, colname text); CREATE TYPE dblink_pkey_results AS (position int, colname text);
......
<!-- $PostgreSQL: pgsql/doc/src/sgml/diskusage.sgml,v 1.20 2010/02/07 20:48:09 tgl Exp $ --> <!-- $PostgreSQL: pgsql/doc/src/sgml/diskusage.sgml,v 1.21 2010/08/17 04:37:20 petere Exp $ -->
<chapter id="diskusage"> <chapter id="diskusage">
<title>Monitoring Disk Usage</title> <title>Monitoring Disk Usage</title>
...@@ -52,7 +52,7 @@ SELECT pg_relation_filepath(oid), relpages FROM pg_class WHERE relname = 'custom ...@@ -52,7 +52,7 @@ SELECT pg_relation_filepath(oid), relpages FROM pg_class WHERE relname = 'custom
</programlisting> </programlisting>
Each page is typically 8 kilobytes. (Remember, <structfield>relpages</> Each page is typically 8 kilobytes. (Remember, <structfield>relpages</>
is only updated by <command>VACUUM</>, <command>ANALYZE</>, and is only updated by <command>VACUUM</>, <command>ANALYZE</>, and
a few DDL commands such as <command>CREATE INDEX</>.) The file pathname a few DDL commands such as <command>CREATE INDEX</>.) The file path name
is of interest if you want to examine the table's disk file directly. is of interest if you want to examine the table's disk file directly.
</para> </para>
......
<!-- $PostgreSQL: pgsql/doc/src/sgml/docguide.sgml,v 1.85 2010/06/12 09:55:12 petere Exp $ --> <!-- $PostgreSQL: pgsql/doc/src/sgml/docguide.sgml,v 1.86 2010/08/17 04:37:20 petere Exp $ -->
<appendix id="docguide"> <appendix id="docguide">
<title>Documentation</title> <title>Documentation</title>
...@@ -241,7 +241,7 @@ ...@@ -241,7 +241,7 @@
<para> <para>
It's possible that the ports do not update the main catalog file It's possible that the ports do not update the main catalog file
in <filename>/usr/local/share/sgml/catalog.ports</filename> or order in <filename>/usr/local/share/sgml/catalog.ports</filename> or order
isn't proper . Be sure to have the following lines in begining of file: isn't proper . Be sure to have the following lines in beginning of file:
<programlisting> <programlisting>
CATALOG "openjade/catalog" CATALOG "openjade/catalog"
CATALOG "iso8879/catalog" CATALOG "iso8879/catalog"
...@@ -306,7 +306,7 @@ make install ...@@ -306,7 +306,7 @@ make install
<envar>SGML_CATALOG_FILES</envar> to point to the file <envar>SGML_CATALOG_FILES</envar> to point to the file
whenever you use <application>jade</application> later on. whenever you use <application>jade</application> later on.
(This method is also an option if OpenJade is already (This method is also an option if OpenJade is already
installed and you want to install the rest of the tool chain installed and you want to install the rest of the toolchain
locally.) locally.)
</para> </para>
</step> </step>
......
<!-- $PostgreSQL: pgsql/doc/src/sgml/earthdistance.sgml,v 1.3 2007/12/06 04:12:10 tgl Exp $ --> <!-- $PostgreSQL: pgsql/doc/src/sgml/earthdistance.sgml,v 1.4 2010/08/17 04:37:20 petere Exp $ -->
<sect1 id="earthdistance"> <sect1 id="earthdistance">
<title>earthdistance</title> <title>earthdistance</title>
...@@ -12,7 +12,7 @@ ...@@ -12,7 +12,7 @@
calculating great circle distances on the surface of the Earth. The one calculating great circle distances on the surface of the Earth. The one
described first depends on the <filename>cube</> package (which described first depends on the <filename>cube</> package (which
<emphasis>must</> be installed before <filename>earthdistance</> can be <emphasis>must</> be installed before <filename>earthdistance</> can be
installed). The second one is based on the built-in <type>point</> datatype, installed). The second one is based on the built-in <type>point</> data type,
using longitude and latitude for the coordinates. using longitude and latitude for the coordinates.
</para> </para>
...@@ -38,7 +38,7 @@ ...@@ -38,7 +38,7 @@
The radius of the Earth is obtained from the <function>earth()</> The radius of the Earth is obtained from the <function>earth()</>
function. It is given in meters. But by changing this one function you can function. It is given in meters. But by changing this one function you can
change the module to use some other units, or to use a different value of change the module to use some other units, or to use a different value of
the radius that you feel is more appropiate. the radius that you feel is more appropriate.
</para> </para>
<para> <para>
......
<!-- $PostgreSQL: pgsql/doc/src/sgml/ecpg.sgml,v 1.103 2010/08/11 19:03:16 rhaas Exp $ --> <!-- $PostgreSQL: pgsql/doc/src/sgml/ecpg.sgml,v 1.104 2010/08/17 04:37:20 petere Exp $ -->
<chapter id="ecpg"> <chapter id="ecpg">
<title><application>ECPG</application> - Embedded <acronym>SQL</acronym> in C</title> <title><application>ECPG</application> - Embedded <acronym>SQL</acronym> in C</title>
...@@ -825,7 +825,7 @@ numeric *PGTYPESnumeric_from_asc(char *str, char **endptr); ...@@ -825,7 +825,7 @@ numeric *PGTYPESnumeric_from_asc(char *str, char **endptr);
<literal>592.49E07</literal> or <literal>592.49E07</literal> or
<literal>-32.84e-4</literal>. <literal>-32.84e-4</literal>.
If the value could be parsed successfully, a valid pointer is returned, If the value could be parsed successfully, a valid pointer is returned,
else the NULL pointer. At the moment ecpg always parses the complete else the NULL pointer. At the moment ECPG always parses the complete
string and so it currently does not support to store the address of the string and so it currently does not support to store the address of the
first invalid character in <literal>*endptr</literal>. You can safely first invalid character in <literal>*endptr</literal>. You can safely
set <literal>endptr</literal> to NULL. set <literal>endptr</literal> to NULL.
...@@ -1127,14 +1127,14 @@ date PGTYPESdate_from_timestamp(timestamp dt); ...@@ -1127,14 +1127,14 @@ date PGTYPESdate_from_timestamp(timestamp dt);
date PGTYPESdate_from_asc(char *str, char **endptr); date PGTYPESdate_from_asc(char *str, char **endptr);
</synopsis> </synopsis>
The function receives a C char* string <literal>str</> and a pointer to The function receives a C char* string <literal>str</> and a pointer to
a C char* string <literal>endptr</>. At the moment ecpg always parses a C char* string <literal>endptr</>. At the moment ECPG always parses
the complete string and so it currently does not support to store the the complete string and so it currently does not support to store the
address of the first invalid character in <literal>*endptr</literal>. address of the first invalid character in <literal>*endptr</literal>.
You can safely set <literal>endptr</literal> to NULL. You can safely set <literal>endptr</literal> to NULL.
</para> </para>
<para> <para>
Note that the function always assumes MDY-formatted dates and there is Note that the function always assumes MDY-formatted dates and there is
currently no variable to change that within ecpg. currently no variable to change that within ECPG.
</para> </para>
<para> <para>
<xref linkend="ecpg-pgtypesdate-from-asc-table"> shows the allowed input formats. <xref linkend="ecpg-pgtypesdate-from-asc-table"> shows the allowed input formats.
...@@ -1401,8 +1401,8 @@ int PGTYPESdate_fmt_asc(date dDate, char *fmtstring, char *outbuf); ...@@ -1401,8 +1401,8 @@ int PGTYPESdate_fmt_asc(date dDate, char *fmtstring, char *outbuf);
<tgroup cols="2"> <tgroup cols="2">
<thead> <thead>
<row> <row>
<entry>fmt</entry> <entry>Format</entry>
<entry>result</entry> <entry>Result</entry>
</row> </row>
</thead> </thead>
<tbody> <tbody>
...@@ -1464,7 +1464,7 @@ int PGTYPESdate_fmt_asc(date dDate, char *fmtstring, char *outbuf); ...@@ -1464,7 +1464,7 @@ int PGTYPESdate_fmt_asc(date dDate, char *fmtstring, char *outbuf);
<term><function>PGTYPESdate_defmt_asc</function></term> <term><function>PGTYPESdate_defmt_asc</function></term>
<listitem> <listitem>
<para> <para>
Use a format mask to convert a C char* string to a value of type Use a format mask to convert a C <type>char*</type> string to a value of type
date. date.
<synopsis> <synopsis>
int PGTYPESdate_defmt_asc(date *d, char *fmt, char *str); int PGTYPESdate_defmt_asc(date *d, char *fmt, char *str);
...@@ -1491,9 +1491,9 @@ int PGTYPESdate_defmt_asc(date *d, char *fmt, char *str); ...@@ -1491,9 +1491,9 @@ int PGTYPESdate_defmt_asc(date *d, char *fmt, char *str);
<tgroup cols="3"> <tgroup cols="3">
<thead> <thead>
<row> <row>
<entry>fmt</entry> <entry>Format</entry>
<entry>str</entry> <entry>String</entry>
<entry>result</entry> <entry>Result</entry>
</row> </row>
</thead> </thead>
<tbody> <tbody>
...@@ -1592,21 +1592,21 @@ timestamp PGTYPEStimestamp_from_asc(char *str, char **endptr); ...@@ -1592,21 +1592,21 @@ timestamp PGTYPEStimestamp_from_asc(char *str, char **endptr);
</synopsis> </synopsis>
The function receives the string to parse (<literal>str</>) and a The function receives the string to parse (<literal>str</>) and a
pointer to a C char* (<literal>endptr</>). pointer to a C char* (<literal>endptr</>).
At the moment ecpg always parses At the moment ECPG always parses
the complete string and so it currently does not support to store the the complete string and so it currently does not support to store the
address of the first invalid character in <literal>*endptr</literal>. address of the first invalid character in <literal>*endptr</literal>.
You can safely set <literal>endptr</literal> to NULL. You can safely set <literal>endptr</literal> to NULL.
</para> </para>
<para> <para>
The function returns the parsed timestamp on success. On error, The function returns the parsed timestamp on success. On error,
<literal>PGTYPESInvalidTimestamp</literal> is returned and errno is <literal>PGTYPESInvalidTimestamp</literal> is returned and <varname>errno</> is
set to <literal>PGTYPES_TS_BAD_TIMESTAMP</>. See <xref linkend="PGTYPESInvalidTimestamp"> for important notes on this value. set to <literal>PGTYPES_TS_BAD_TIMESTAMP</>. See <xref linkend="PGTYPESInvalidTimestamp"> for important notes on this value.
</para> </para>
<para> <para>
In general, the input string can contain any combination of an allowed In general, the input string can contain any combination of an allowed
date specification, a whitespace character and an allowed time date specification, a whitespace character and an allowed time
specification. Note that timezones are not supported by ecpg. It can specification. Note that timezones are not supported by ECPG. It can
parse them but does not apply any calculation as the parse them but does not apply any calculation as the
<productname>PostgreSQL</> server does for example. Timezone <productname>PostgreSQL</> server does for example. Timezone
specifiers are silently discarded. specifiers are silently discarded.
...@@ -2146,7 +2146,7 @@ interval *PGTYPESinterval_from_asc(char *str, char **endptr); ...@@ -2146,7 +2146,7 @@ interval *PGTYPESinterval_from_asc(char *str, char **endptr);
</synopsis> </synopsis>
The function parses the input string <literal>str</> and returns a The function parses the input string <literal>str</> and returns a
pointer to an allocated interval variable. pointer to an allocated interval variable.
At the moment ecpg always parses At the moment ECPG always parses
the complete string and so it currently does not support to store the the complete string and so it currently does not support to store the
address of the first invalid character in <literal>*endptr</literal>. address of the first invalid character in <literal>*endptr</literal>.
You can safely set <literal>endptr</literal> to NULL. You can safely set <literal>endptr</literal> to NULL.
...@@ -2195,7 +2195,7 @@ int PGTYPESinterval_copy(interval *intvlsrc, interval *intvldest); ...@@ -2195,7 +2195,7 @@ int PGTYPESinterval_copy(interval *intvlsrc, interval *intvldest);
a maximal precision of 30 significant digits. In contrast to the numeric a maximal precision of 30 significant digits. In contrast to the numeric
type which can be created on the heap only, the decimal type can be type which can be created on the heap only, the decimal type can be
created either on the stack or on the heap (by means of the functions created either on the stack or on the heap (by means of the functions
PGTYPESdecimal_new() and PGTYPESdecimal_free(). There are a lot of other <function>PGTYPESdecimal_new()</> and <function>PGTYPESdecimal_free()</>. There are a lot of other
functions that deal with the decimal type in the <productname>Informix</productname> compatibility functions that deal with the decimal type in the <productname>Informix</productname> compatibility
mode described in <xref linkend="ecpg-informix-compat">. mode described in <xref linkend="ecpg-informix-compat">.
</para> </para>
...@@ -2231,7 +2231,7 @@ void PGTYPESdecimal_free(decimal *var); ...@@ -2231,7 +2231,7 @@ void PGTYPESdecimal_free(decimal *var);
</sect2> </sect2>
<sect2> <sect2>
<title>errno values of pgtypeslib </title> <title>errno values of pgtypeslib</title>
<para> <para>
<variablelist> <variablelist>
<varlistentry> <varlistentry>
...@@ -2351,7 +2351,7 @@ void PGTYPESdecimal_free(decimal *var); ...@@ -2351,7 +2351,7 @@ void PGTYPESdecimal_free(decimal *var);
</sect2> </sect2>
<sect2> <sect2>
<title>Special constants of pgtypeslib </title> <title>Special constants of pgtypeslib</title>
<para> <para>
<variablelist> <variablelist>
<varlistentry id="PGTYPESInvalidTimestamp"> <varlistentry id="PGTYPESInvalidTimestamp">
...@@ -2361,7 +2361,7 @@ void PGTYPESdecimal_free(decimal *var); ...@@ -2361,7 +2361,7 @@ void PGTYPESdecimal_free(decimal *var);
A value of type timestamp representing an invalid time stamp. This is A value of type timestamp representing an invalid time stamp. This is
returned by the function <function>PGTYPEStimestamp_from_asc</> on returned by the function <function>PGTYPEStimestamp_from_asc</> on
parse error. parse error.
Note that due to the internal representation of the timestamp datatype, Note that due to the internal representation of the <type>timestamp</type> data type,
<literal>PGTYPESInvalidTimestamp</literal> is also a valid timestamp at <literal>PGTYPESInvalidTimestamp</literal> is also a valid timestamp at
the same time. It is set to <literal>1899-12-31 23:59:59</>. In order the same time. It is set to <literal>1899-12-31 23:59:59</>. In order
to detect errors, make sure that your application does not only test to detect errors, make sure that your application does not only test
...@@ -2421,13 +2421,13 @@ EXEC SQL DEALLOCATE DESCRIPTOR <replaceable>identifier</replaceable>; ...@@ -2421,13 +2421,13 @@ EXEC SQL DEALLOCATE DESCRIPTOR <replaceable>identifier</replaceable>;
<programlisting> <programlisting>
EXEC SQL FETCH NEXT FROM mycursor INTO SQL DESCRIPTOR mydesc; EXEC SQL FETCH NEXT FROM mycursor INTO SQL DESCRIPTOR mydesc;
</programlisting> </programlisting>
If the resultset is empty, the Descriptor Area will still contain If the result set is empty, the Descriptor Area will still contain
the metadata from the query, i.e. the field names. the metadata from the query, i.e. the field names.
</para> </para>
<para> <para>
For not yet executed prepared queries, the <command>DESCRIBE</command> For not yet executed prepared queries, the <command>DESCRIBE</command>
statement can be used to get the metadata of the resultset: statement can be used to get the metadata of the result set:
<programlisting> <programlisting>
EXEC SQL BEGIN DECLARE SECTION; EXEC SQL BEGIN DECLARE SECTION;
char *sql_stmt = "SELECT * FROM table1"; char *sql_stmt = "SELECT * FROM table1";
...@@ -2449,7 +2449,7 @@ EXEC SQL DESCRIBE stmt1 INTO SQL DESCRIPTOR mydesc; ...@@ -2449,7 +2449,7 @@ EXEC SQL DESCRIBE stmt1 INTO SQL DESCRIPTOR mydesc;
<para> <para>
In <command>DESCRIBE</command> and <command>FETCH</command> statements, In <command>DESCRIBE</command> and <command>FETCH</command> statements,
the <literal>INTO</literal> and <literal>USING</literal> keywords can be the <literal>INTO</literal> and <literal>USING</literal> keywords can be
used to similarly: they produce the resultset and the metadata in a used to similarly: they produce the result set and the metadata in a
Descriptor Area. Descriptor Area.
</para> </para>
...@@ -2648,8 +2648,8 @@ EXEC SQL GET DESCRIPTOR mydesc VALUE 1 :id = DATA; ...@@ -2648,8 +2648,8 @@ EXEC SQL GET DESCRIPTOR mydesc VALUE 1 :id = DATA;
<para> <para>
An SQLDA Descriptor Area is a C language structure which can be also used An SQLDA Descriptor Area is a C language structure which can be also used
to get the resultset and the metadata of a query. One structure stores one to get the result set and the metadata of a query. One structure stores one
record from the resultset. record from the result set.
<programlisting> <programlisting>
EXEC SQL include sqlda.h; EXEC SQL include sqlda.h;
sqlda_t *mysqlda; sqlda_t *mysqlda;
...@@ -2703,7 +2703,7 @@ typedef struct sqlda_struct sqlda_t; ...@@ -2703,7 +2703,7 @@ typedef struct sqlda_struct sqlda_t;
<para> <para>
The allocated data for an SQLDA structure is variable as it depends on the The allocated data for an SQLDA structure is variable as it depends on the
number of fields in a resultset and also depends on the length of the string number of fields in a result set and also depends on the length of the string
data values in a record. The individual fields of the <literal>SQLDA</literal> data values in a record. The individual fields of the <literal>SQLDA</literal>
structure are: structure are:
...@@ -2742,7 +2742,7 @@ typedef struct sqlda_struct sqlda_t; ...@@ -2742,7 +2742,7 @@ typedef struct sqlda_struct sqlda_t;
<term><literal>sqld</></term> <term><literal>sqld</></term>
<listitem> <listitem>
<para> <para>
It contains the number of fields in a resultset. It contains the number of fields in a result set.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
...@@ -2759,7 +2759,7 @@ typedef struct sqlda_struct sqlda_t; ...@@ -2759,7 +2759,7 @@ typedef struct sqlda_struct sqlda_t;
<term><literal>sqlvar</></term> <term><literal>sqlvar</></term>
<listitem> <listitem>
<para> <para>
This is the array of the fields in the resultset. The fields are: This is the array of the fields in the result set. The fields are:
<variablelist> <variablelist>
...@@ -2777,7 +2777,7 @@ typedef struct sqlda_struct sqlda_t; ...@@ -2777,7 +2777,7 @@ typedef struct sqlda_struct sqlda_t;
<term><literal>sqllen</></term> <term><literal>sqllen</></term>
<listitem> <listitem>
<para> <para>
It contains the binary length of the field. E.g. 4 bytes for ECPGt_int. It contains the binary length of the field. E.g. 4 bytes for <type>ECPGt_int</type>.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
...@@ -2851,7 +2851,7 @@ struct sqlname ...@@ -2851,7 +2851,7 @@ struct sqlname
<sect1 id="ecpg-informix-compat"> <sect1 id="ecpg-informix-compat">
<title><productname>Informix</productname> compatibility mode</title> <title><productname>Informix</productname> compatibility mode</title>
<para> <para>
ecpg can be run in a so-called <firstterm>Informix compatibility mode</>. If <command>ecpg</command> can be run in a so-called <firstterm>Informix compatibility mode</>. If
this mode is active, it tries to behave as if it were the <productname>Informix</productname> this mode is active, it tries to behave as if it were the <productname>Informix</productname>
precompiler for <productname>Informix</productname> E/SQL. Generally spoken this will allow you to use precompiler for <productname>Informix</productname> E/SQL. Generally spoken this will allow you to use
the dollar sign instead of the <literal>EXEC SQL</> primitive to introduce the dollar sign instead of the <literal>EXEC SQL</> primitive to introduce
...@@ -2865,20 +2865,20 @@ $COMMIT; ...@@ -2865,20 +2865,20 @@ $COMMIT;
</programlisting> </programlisting>
</para> </para>
<para> <para>
There are two compatibility modes: INFORMIX, INFORMIX_SE There are two compatibility modes: <literal>INFORMIX</>, <literal>INFORMIX_SE</>
</para> </para>
<para> <para>
When linking programs that use this compatibility mode, remember to link When linking programs that use this compatibility mode, remember to link
against <literal>libcompat</> that is shipped with ecpg. against <literal>libcompat</> that is shipped with ECPG.
</para> </para>
<para> <para>
Besides the previously explained syntactic sugar, the <productname>Informix</productname> compatibility Besides the previously explained syntactic sugar, the <productname>Informix</productname> compatibility
mode ports some functions for input, output and transformation of data as mode ports some functions for input, output and transformation of data as
well as embedded SQL statements known from E/SQL to ecpg. well as embedded SQL statements known from E/SQL to ECPG.
</para> </para>
<para> <para>
<productname>Informix</productname> compatibility mode is closely connected to the pgtypeslib library <productname>Informix</productname> compatibility mode is closely connected to the pgtypeslib library
of ecpg. pgtypeslib maps SQL data types to data types within the C host of ECPG. pgtypeslib maps SQL data types to data types within the C host
program and most of the additional functions of the <productname>Informix</productname> compatibility program and most of the additional functions of the <productname>Informix</productname> compatibility
mode allow you to operate on those C host program types. Note however that mode allow you to operate on those C host program types. Note however that
the extent of the compatibility is limited. It does not try to copy <productname>Informix</productname> the extent of the compatibility is limited. It does not try to copy <productname>Informix</productname>
...@@ -2888,7 +2888,7 @@ $COMMIT; ...@@ -2888,7 +2888,7 @@ $COMMIT;
some of the data types are different. For example, some of the data types are different. For example,
<productname>PostgreSQL's</productname> datetime and interval types do not <productname>PostgreSQL's</productname> datetime and interval types do not
know about ranges like for example <literal>YEAR TO MINUTE</> so you won't know about ranges like for example <literal>YEAR TO MINUTE</> so you won't
find support in ecpg for that either. find support in ECPG for that either.
</para> </para>
<sect2> <sect2>
...@@ -2916,7 +2916,7 @@ EXEC SQL FETCH MYCUR INTO :userid; ...@@ -2916,7 +2916,7 @@ EXEC SQL FETCH MYCUR INTO :userid;
<listitem> <listitem>
<para> <para>
This statement closes the current connection. In fact, this is a This statement closes the current connection. In fact, this is a
synonym for ecpg's <literal>DISCONNECT CURRENT</>.: synonym for ECPG's <literal>DISCONNECT CURRENT</>.:
<programlisting> <programlisting>
$CLOSE DATABASE; /* close the current connection */ $CLOSE DATABASE; /* close the current connection */
EXEC SQL CLOSE DATABASE; EXEC SQL CLOSE DATABASE;
...@@ -2929,11 +2929,11 @@ EXEC SQL CLOSE DATABASE; ...@@ -2929,11 +2929,11 @@ EXEC SQL CLOSE DATABASE;
<listitem> <listitem>
<para> <para>
Due to the differences how ECPG works compared to Informix's ESQL/C (i.e. which steps Due to the differences how ECPG works compared to Informix's ESQL/C (i.e. which steps
are purely grammar transformations and which steps rely on the underlying runtime library) are purely grammar transformations and which steps rely on the underlying run-time library)
there is no <literal>FREE cursor_name</> statement in ECPG. This is because in ECPG, there is no <literal>FREE cursor_name</> statement in ECPG. This is because in ECPG,
<literal>DECLARE CURSOR</literal> doesn't translate to a function call into <literal>DECLARE CURSOR</literal> doesn't translate to a function call into
the runtime library that uses to the cursor name. This means that there's no runtime the run-time library that uses to the cursor name. This means that there's no run-time
bookkeeping of SQL cursors in the ECPG runtime library, only in the PostgreSQL server. bookkeeping of SQL cursors in the ECPG run-time library, only in the PostgreSQL server.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
...@@ -3020,7 +3020,7 @@ typedef struct sqlda_compat sqlda_t; ...@@ -3020,7 +3020,7 @@ typedef struct sqlda_compat sqlda_t;
<term><literal>desc_name</></term> <term><literal>desc_name</></term>
<listitem> <listitem>
<para> <para>
Unused, filled with zerobytes. Unused, filled with zero-bytes.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
...@@ -3038,7 +3038,7 @@ typedef struct sqlda_compat sqlda_t; ...@@ -3038,7 +3038,7 @@ typedef struct sqlda_compat sqlda_t;
<term><literal>desc_next</></term> <term><literal>desc_next</></term>
<listitem> <listitem>
<para> <para>
Pointer to the next SQLDA structure if the resultset contains more than one records. Pointer to the next SQLDA structure if the result set contains more than one records.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
...@@ -3126,7 +3126,7 @@ if (*(int2 *)sqldata->sqlvar[i].sqlind != 0) ...@@ -3126,7 +3126,7 @@ if (*(int2 *)sqldata->sqlvar[i].sqlind != 0)
<term><literal>sqlformat</></term> <term><literal>sqlformat</></term>
<listitem> <listitem>
<para> <para>
Reserved in Informix, value of PQfformat() for the field. Reserved in Informix, value of <function>PQfformat()</> for the field.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
...@@ -3155,7 +3155,7 @@ if (*(int2 *)sqldata->sqlvar[i].sqlind != 0) ...@@ -3155,7 +3155,7 @@ if (*(int2 *)sqldata->sqlvar[i].sqlind != 0)
<term><literal>sqlxid</></term> <term><literal>sqlxid</></term>
<listitem> <listitem>
<para> <para>
Extended type of the field, result of PQftype(). Extended type of the field, result of <function>PQftype()</>.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
...@@ -3243,9 +3243,9 @@ int decadd(decimal *arg1, decimal *arg2, decimal *sum); ...@@ -3243,9 +3243,9 @@ int decadd(decimal *arg1, decimal *arg2, decimal *sum);
(<literal>arg1</>), a pointer to the second operand of type decimal (<literal>arg1</>), a pointer to the second operand of type decimal
(<literal>arg2</>) and a pointer to a value of type decimal that will (<literal>arg2</>) and a pointer to a value of type decimal that will
contain the sum (<literal>sum</>). On success, the function returns 0. contain the sum (<literal>sum</>). On success, the function returns 0.
ECPG_INFORMIX_NUM_OVERFLOW is returned in case of overflow and <symbol>ECPG_INFORMIX_NUM_OVERFLOW</> is returned in case of overflow and
ECPG_INFORMIX_NUM_UNDERFLOW in case of underflow. -1 is returned for <symbol>ECPG_INFORMIX_NUM_UNDERFLOW</> in case of underflow. -1 is returned for
other failures and errno is set to the respective errno number of the other failures and <varname>errno</> is set to the respective <varname>errno</> number of the
pgtypeslib. pgtypeslib.
</para> </para>
</listitem> </listitem>
...@@ -3530,9 +3530,9 @@ int dectoint(decimal *np, int *ip); ...@@ -3530,9 +3530,9 @@ int dectoint(decimal *np, int *ip);
is returned. is returned.
</para> </para>
<para> <para>
Note that the ecpg implementation differs from the <productname>Informix</productname> Note that the ECPG implementation differs from the <productname>Informix</productname>
implementation. <productname>Informix</productname> limits an integer to the range from -32767 to implementation. <productname>Informix</productname> limits an integer to the range from -32767 to
32767, while the limits in the ecpg implementation depend on the 32767, while the limits in the ECPG implementation depend on the
architecture (<literal>-INT_MAX .. INT_MAX</>). architecture (<literal>-INT_MAX .. INT_MAX</>).
</para> </para>
</listitem> </listitem>
...@@ -3556,9 +3556,9 @@ int dectolong(decimal *np, long *lngp); ...@@ -3556,9 +3556,9 @@ int dectolong(decimal *np, long *lngp);
is returned. is returned.
</para> </para>
<para> <para>
Note that the ecpg implementation differs from the <productname>Informix</productname> Note that the ECPG implementation differs from the <productname>Informix</productname>
implementation. <productname>Informix</productname> limits a long integer to the range from implementation. <productname>Informix</productname> limits a long integer to the range from
-2,147,483,647 to 2,147,483,647, while the limits in the ecpg -2,147,483,647 to 2,147,483,647, while the limits in the ECPG
implementation depend on the architecture (<literal>-LONG_MAX .. implementation depend on the architecture (<literal>-LONG_MAX ..
LONG_MAX</>). LONG_MAX</>).
</para> </para>
...@@ -3584,9 +3584,9 @@ int rdatestr(date d, char *str); ...@@ -3584,9 +3584,9 @@ int rdatestr(date d, char *str);
error. error.
</para> </para>
<para> <para>
Note that ecpg's implementation differs from the <productname>Informix</productname> Note that ECPG's implementation differs from the <productname>Informix</productname>
implementation. In <productname>Informix</productname> the format can be influenced by setting implementation. In <productname>Informix</productname> the format can be influenced by setting
environment variables. In ecpg however, you cannot change the output environment variables. In ECPG however, you cannot change the output
format. format.
</para> </para>
</listitem> </listitem>
...@@ -5129,14 +5129,14 @@ EXEC SQL UNDEF MYNUMBER; ...@@ -5129,14 +5129,14 @@ EXEC SQL UNDEF MYNUMBER;
Of course you can continue to use the C versions <literal>#define</literal> Of course you can continue to use the C versions <literal>#define</literal>
and <literal>#undef</literal> in your embedded SQL program. The difference and <literal>#undef</literal> in your embedded SQL program. The difference
is where your defined values get evaluated. If you use <literal>EXEC SQL is where your defined values get evaluated. If you use <literal>EXEC SQL
DEFINE</> then the ecpg preprocessor evaluates the defines and substitutes DEFINE</> then the <command>ecpg</> preprocessor evaluates the defines and substitutes
the values. For example if you write: the values. For example if you write:
<programlisting> <programlisting>
EXEC SQL DEFINE MYNUMBER 12; EXEC SQL DEFINE MYNUMBER 12;
... ...
EXEC SQL UPDATE Tbl SET col = MYNUMBER; EXEC SQL UPDATE Tbl SET col = MYNUMBER;
</programlisting> </programlisting>
then ecpg will already do the substitution and your C compiler will never then <command>ecpg</> will already do the substitution and your C compiler will never
see any name or identifier <literal>MYNUMBER</>. Note that you cannot use see any name or identifier <literal>MYNUMBER</>. Note that you cannot use
<literal>#define</literal> for a constant that you are going to use in an <literal>#define</literal> for a constant that you are going to use in an
embedded SQL query because in this case the embedded SQL precompiler is not embedded SQL query because in this case the embedded SQL precompiler is not
...@@ -5145,7 +5145,7 @@ EXEC SQL UPDATE Tbl SET col = MYNUMBER; ...@@ -5145,7 +5145,7 @@ EXEC SQL UPDATE Tbl SET col = MYNUMBER;
</sect2> </sect2>
<sect2> <sect2>
<title>ifdef, ifndef, else, elif and endif directives</title> <title>ifdef, ifndef, else, elif, and endif directives</title>
<para> <para>
You can use the following directives to compile code sections conditionally: You can use the following directives to compile code sections conditionally:
......
<!-- $PostgreSQL: pgsql/doc/src/sgml/external-projects.sgml,v 1.20 2010/06/07 02:01:08 itagaki Exp $ --> <!-- $PostgreSQL: pgsql/doc/src/sgml/external-projects.sgml,v 1.21 2010/08/17 04:37:20 petere Exp $ -->
<appendix id="external-projects"> <appendix id="external-projects">
<title>External Projects</title> <title>External Projects</title>
...@@ -45,7 +45,7 @@ ...@@ -45,7 +45,7 @@
<listitem> <listitem>
<para> <para>
<link linkend="ecpg">ecpg</link> is included because it depends on the <link linkend="ecpg">ECPG</link> is included because it depends on the
server-side SQL grammar, and is therefore sensitive to changes in server-side SQL grammar, and is therefore sensitive to changes in
<productname>PostgreSQL</productname> itself. <productname>PostgreSQL</productname> itself.
</para> </para>
......
<!-- $PostgreSQL: pgsql/doc/src/sgml/func.sgml,v 1.528 2010/08/15 21:26:36 tgl Exp $ --> <!-- $PostgreSQL: pgsql/doc/src/sgml/func.sgml,v 1.529 2010/08/17 04:37:20 petere Exp $ -->
<chapter id="functions"> <chapter id="functions">
<title>Functions and Operators</title> <title>Functions and Operators</title>
...@@ -9658,7 +9658,7 @@ SELECT NULLIF(value, '(none)') ... ...@@ -9658,7 +9658,7 @@ SELECT NULLIF(value, '(none)') ...
<para> <para>
Array comparisons compare the array contents element-by-element, Array comparisons compare the array contents element-by-element,
using the default B-Tree comparison function for the element data type. using the default B-tree comparison function for the element data type.
In multidimensional arrays the elements are visited in row-major order In multidimensional arrays the elements are visited in row-major order
(last subscript varies most rapidly). (last subscript varies most rapidly).
If the contents of two arrays are equal but the dimensionality is If the contents of two arrays are equal but the dimensionality is
...@@ -10179,8 +10179,8 @@ SELECT NULLIF(value, '(none)') ... ...@@ -10179,8 +10179,8 @@ SELECT NULLIF(value, '(none)') ...
SELECT b1 = ANY((SELECT b2 FROM t2 ...)) FROM t1 ...; SELECT b1 = ANY((SELECT b2 FROM t2 ...)) FROM t1 ...;
</programlisting> </programlisting>
Here <function>ANY</function> can be considered either as introducing Here <function>ANY</function> can be considered either as introducing
a subquery, or as being an aggregate function, if the sub-select a subquery, or as being an aggregate function, if the subquery
returns one row with a boolean value. returns one row with a Boolean value.
Thus the standard name cannot be given to these aggregates. Thus the standard name cannot be given to these aggregates.
</para> </para>
</note> </note>
...@@ -11415,8 +11415,8 @@ AND ...@@ -11415,8 +11415,8 @@ AND
<literal>&gt;</> or <literal>&gt;</> or
<literal>&gt;=</>, <literal>&gt;=</>,
or has semantics similar to one of these. (To be specific, an operator or has semantics similar to one of these. (To be specific, an operator
can be a row comparison operator if it is a member of a B-Tree operator can be a row comparison operator if it is a member of a B-tree operator
class, or is the negator of the <literal>=</> member of a B-Tree operator class, or is the negator of the <literal>=</> member of a B-tree operator
class.) class.)
</para> </para>
...@@ -13390,7 +13390,7 @@ postgres=# select pg_start_backup('label_goes_here'); ...@@ -13390,7 +13390,7 @@ postgres=# select pg_start_backup('label_goes_here');
0/D4445B8 0/D4445B8
(1 row) (1 row)
</programlisting> </programlisting>
There is an optional boolean second parameter. If <literal>true</>, There is an optional second parameter of type <type>boolean</type>. If <literal>true</>,
it specifies executing <function>pg_start_backup</> as quickly as it specifies executing <function>pg_start_backup</> as quickly as
possible. This forces an immediate checkpoint which will cause a possible. This forces an immediate checkpoint which will cause a
spike in I/O operations, slowing any concurrently executing queries. spike in I/O operations, slowing any concurrently executing queries.
...@@ -13767,7 +13767,7 @@ postgres=# SELECT * FROM pg_xlogfile_name_offset(pg_stop_backup()); ...@@ -13767,7 +13767,7 @@ postgres=# SELECT * FROM pg_xlogfile_name_offset(pg_stop_backup());
<para> <para>
<function>pg_relation_filepath</> is similar to <function>pg_relation_filepath</> is similar to
<function>pg_relation_filenode</>, but it returns the entire file pathname <function>pg_relation_filenode</>, but it returns the entire file path name
(relative to the database cluster's data directory <varname>PGDATA</>) of (relative to the database cluster's data directory <varname>PGDATA</>) of
the relation. the relation.
</para> </para>
......
<!-- $PostgreSQL: pgsql/doc/src/sgml/fuzzystrmatch.sgml,v 1.7 2010/08/02 23:20:23 rhaas Exp $ --> <!-- $PostgreSQL: pgsql/doc/src/sgml/fuzzystrmatch.sgml,v 1.8 2010/08/17 04:37:20 petere Exp $ -->
<sect1 id="fuzzystrmatch"> <sect1 id="fuzzystrmatch">
<title>fuzzystrmatch</title> <title>fuzzystrmatch</title>
...@@ -16,7 +16,7 @@ ...@@ -16,7 +16,7 @@
<para> <para>
At present, the <function>soundex</>, <function>metaphone</>, At present, the <function>soundex</>, <function>metaphone</>,
<function>dmetaphone</>, and <function>dmetaphone_alt</> functions do <function>dmetaphone</>, and <function>dmetaphone_alt</> functions do
not work well with multi-byte encodings (such as UTF-8). not work well with multibyte encodings (such as UTF-8).
</para> </para>
</caution> </caution>
......
<!-- $PostgreSQL: pgsql/doc/src/sgml/gin.sgml,v 2.20 2010/04/03 07:22:54 petere Exp $ --> <!-- $PostgreSQL: pgsql/doc/src/sgml/gin.sgml,v 2.21 2010/08/17 04:37:20 petere Exp $ -->
<chapter id="GIN"> <chapter id="GIN">
<title>GIN Indexes</title> <title>GIN Indexes</title>
...@@ -62,11 +62,10 @@ ...@@ -62,11 +62,10 @@
<para> <para>
The four methods that an operator class for The four methods that an operator class for
<acronym>GIN</acronym> must provide are: <acronym>GIN</acronym> must provide are:
</para>
<variablelist> <variablelist>
<varlistentry> <varlistentry>
<term>int compare(Datum a, Datum b)</term> <term><function>int compare(Datum a, Datum b)</></term>
<listitem> <listitem>
<para> <para>
Compares keys (not indexed values!) and returns an integer less than Compares keys (not indexed values!) and returns an integer less than
...@@ -77,7 +76,7 @@ ...@@ -77,7 +76,7 @@
</varlistentry> </varlistentry>
<varlistentry> <varlistentry>
<term>Datum *extractValue(Datum inputValue, int32 *nkeys)</term> <term><function>Datum *extractValue(Datum inputValue, int32 *nkeys)</></term>
<listitem> <listitem>
<para> <para>
Returns an array of keys given a value to be indexed. The Returns an array of keys given a value to be indexed. The
...@@ -87,8 +86,8 @@ ...@@ -87,8 +86,8 @@
</varlistentry> </varlistentry>
<varlistentry> <varlistentry>
<term>Datum *extractQuery(Datum query, int32 *nkeys, <term><function>Datum *extractQuery(Datum query, int32 *nkeys,
StrategyNumber n, bool **pmatch, Pointer **extra_data)</term> StrategyNumber n, bool **pmatch, Pointer **extra_data)</></term>
<listitem> <listitem>
<para> <para>
Returns an array of keys given a value to be queried; that is, Returns an array of keys given a value to be queried; that is,
...@@ -109,7 +108,7 @@ ...@@ -109,7 +108,7 @@
so the index scan can be skipped entirely. so the index scan can be skipped entirely.
<literal>pmatch</> is an output argument for use when partial match <literal>pmatch</> is an output argument for use when partial match
is supported. To use it, <function>extractQuery</> must allocate is supported. To use it, <function>extractQuery</> must allocate
an array of <literal>*nkeys</> booleans and store its address at an array of <literal>*nkeys</> Booleans and store its address at
<literal>*pmatch</>. Each element of the array should be set to TRUE <literal>*pmatch</>. Each element of the array should be set to TRUE
if the corresponding key requires partial match, FALSE if not. if the corresponding key requires partial match, FALSE if not.
If <literal>*pmatch</> is set to NULL then GIN assumes partial match If <literal>*pmatch</> is set to NULL then GIN assumes partial match
...@@ -133,8 +132,8 @@ ...@@ -133,8 +132,8 @@
</varlistentry> </varlistentry>
<varlistentry> <varlistentry>
<term>bool consistent(bool check[], StrategyNumber n, Datum query, <term><function>bool consistent(bool check[], StrategyNumber n, Datum query,
int32 nkeys, Pointer extra_data[], bool *recheck)</term> int32 nkeys, Pointer extra_data[], bool *recheck)</></term>
<listitem> <listitem>
<para> <para>
Returns TRUE if the indexed value satisfies the query operator with Returns TRUE if the indexed value satisfies the query operator with
...@@ -156,19 +155,15 @@ ...@@ -156,19 +155,15 @@
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
</variablelist> </variablelist>
<para>
Optionally, an operator class for Optionally, an operator class for
<acronym>GIN</acronym> can supply a fifth method: <acronym>GIN</acronym> can supply a fifth method:
</para>
<variablelist> <variablelist>
<varlistentry> <varlistentry>
<term>int comparePartial(Datum partial_key, Datum key, StrategyNumber n, <term><function>int comparePartial(Datum partial_key, Datum key, StrategyNumber n,
Pointer extra_data)</term> Pointer extra_data)</></term>
<listitem> <listitem>
<para> <para>
Compare a partial-match query to an index key. Returns an integer Compare a partial-match query to an index key. Returns an integer
...@@ -184,8 +179,8 @@ ...@@ -184,8 +179,8 @@
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
</variablelist> </variablelist>
</para>
<para> <para>
To support <quote>partial match</> queries, an operator class must To support <quote>partial match</> queries, an operator class must
...@@ -408,37 +403,37 @@ ...@@ -408,37 +403,37 @@
feature. feature.
The following <filename>contrib</> modules also contain The following <filename>contrib</> modules also contain
<acronym>GIN</acronym> operator classes: <acronym>GIN</acronym> operator classes:
</para>
<variablelist> <variablelist>
<varlistentry> <varlistentry>
<term>btree-gin</term> <term><filename>btree_gin</></term>
<listitem> <listitem>
<para>B-Tree equivalent functionality for several data types</para> <para>B-tree equivalent functionality for several data types</para>
</listitem> </listitem>
</varlistentry> </varlistentry>
<varlistentry> <varlistentry>
<term>hstore</term> <term><filename>hstore</></term>
<listitem> <listitem>
<para>Module for storing (key, value) pairs</para> <para>Module for storing (key, value) pairs</para>
</listitem> </listitem>
</varlistentry> </varlistentry>
<varlistentry> <varlistentry>
<term>intarray</term> <term><filename>intarray</></term>
<listitem> <listitem>
<para>Enhanced support for int4[]</para> <para>Enhanced support for <type>int[]</type></para>
</listitem> </listitem>
</varlistentry> </varlistentry>
<varlistentry> <varlistentry>
<term>pg_trgm</term> <term><filename>pg_trgm</></term>
<listitem> <listitem>
<para>Text similarity using trigram matching</para> <para>Text similarity using trigram matching</para>
</listitem> </listitem>
</varlistentry> </varlistentry>
</variablelist> </variablelist>
</para>
</sect1> </sect1>
</chapter> </chapter>
<!-- $PostgreSQL: pgsql/doc/src/sgml/gist.sgml,v 1.31 2009/06/12 19:48:53 tgl Exp $ --> <!-- $PostgreSQL: pgsql/doc/src/sgml/gist.sgml,v 1.32 2010/08/17 04:37:20 petere Exp $ -->
<chapter id="GiST"> <chapter id="GiST">
<title>GiST Indexes</title> <title>GiST Indexes</title>
...@@ -102,7 +102,7 @@ ...@@ -102,7 +102,7 @@
<function>decompress</>, which allow an index to have internal tree data of <function>decompress</>, which allow an index to have internal tree data of
a different type than the data it indexes. The leaves are to be of the a different type than the data it indexes. The leaves are to be of the
indexed data type, while the other tree nodes can be of any C struct (but indexed data type, while the other tree nodes can be of any C struct (but
you still have to follow <productname>PostgreSQL</> datatype rules here, you still have to follow <productname>PostgreSQL</> data type rules here,
see about <literal>varlena</> for variable sized data). If the tree's see about <literal>varlena</> for variable sized data). If the tree's
internal data type exists at the SQL level, the <literal>STORAGE</> option internal data type exists at the SQL level, the <literal>STORAGE</> option
of the <command>CREATE OPERATOR CLASS</> command can be used. of the <command>CREATE OPERATOR CLASS</> command can be used.
...@@ -561,7 +561,7 @@ my_same(PG_FUNCTION_ARGS) ...@@ -561,7 +561,7 @@ my_same(PG_FUNCTION_ARGS)
</programlisting> </programlisting>
For historical reasons, the <function>same</> function doesn't For historical reasons, the <function>same</> function doesn't
just return a boolean result; instead it has to store the flag just return a Boolean result; instead it has to store the flag
at the location indicated by the third argument. at the location indicated by the third argument.
</para> </para>
</listitem> </listitem>
...@@ -583,58 +583,58 @@ my_same(PG_FUNCTION_ARGS) ...@@ -583,58 +583,58 @@ my_same(PG_FUNCTION_ARGS)
(see <filename>src/backend/access/gist/gistproc.c</>). The following (see <filename>src/backend/access/gist/gistproc.c</>). The following
<filename>contrib</> modules also contain <acronym>GiST</acronym> <filename>contrib</> modules also contain <acronym>GiST</acronym>
operator classes: operator classes:
</para>
<variablelist> <variablelist>
<varlistentry> <varlistentry>
<term>btree_gist</term> <term><filename>btree_gist</></term>
<listitem> <listitem>
<para>B-Tree equivalent functionality for several data types</para> <para>B-tree equivalent functionality for several data types</para>
</listitem> </listitem>
</varlistentry> </varlistentry>
<varlistentry> <varlistentry>
<term>cube</term> <term><filename>cube</></term>
<listitem> <listitem>
<para>Indexing for multidimensional cubes</para> <para>Indexing for multidimensional cubes</para>
</listitem> </listitem>
</varlistentry> </varlistentry>
<varlistentry> <varlistentry>
<term>hstore</term> <term><filename>hstore</></term>
<listitem> <listitem>
<para>Module for storing (key, value) pairs</para> <para>Module for storing (key, value) pairs</para>
</listitem> </listitem>
</varlistentry> </varlistentry>
<varlistentry> <varlistentry>
<term>intarray</term> <term><filename>intarray</></term>
<listitem> <listitem>
<para>RD-Tree for one-dimensional array of int4 values</para> <para>RD-Tree for one-dimensional array of int4 values</para>
</listitem> </listitem>
</varlistentry> </varlistentry>
<varlistentry> <varlistentry>
<term>ltree</term> <term><filename>ltree</></term>
<listitem> <listitem>
<para>Indexing for tree-like structures</para> <para>Indexing for tree-like structures</para>
</listitem> </listitem>
</varlistentry> </varlistentry>
<varlistentry> <varlistentry>
<term>pg_trgm</term> <term><filename>pg_trgm</></term>
<listitem> <listitem>
<para>Text similarity using trigram matching</para> <para>Text similarity using trigram matching</para>
</listitem> </listitem>
</varlistentry> </varlistentry>
<varlistentry> <varlistentry>
<term>seg</term> <term><filename>seg</></term>
<listitem> <listitem>
<para>Indexing for <quote>float ranges</quote></para> <para>Indexing for <quote>float ranges</quote></para>
</listitem> </listitem>
</varlistentry> </varlistentry>
</variablelist> </variablelist>
</para>
</sect1> </sect1>
......
<!-- $PostgreSQL: pgsql/doc/src/sgml/high-availability.sgml,v 1.78 2010/07/14 22:04:21 tgl Exp $ --> <!-- $PostgreSQL: pgsql/doc/src/sgml/high-availability.sgml,v 1.79 2010/08/17 04:37:20 petere Exp $ -->
<chapter id="high-availability"> <chapter id="high-availability">
<title>High Availability, Load Balancing, and Replication</title> <title>High Availability, Load Balancing, and Replication</title>
...@@ -449,7 +449,7 @@ protocol to make nodes agree on a serializable transactional order. ...@@ -449,7 +449,7 @@ protocol to make nodes agree on a serializable transactional order.
part of the query and return results to a central server where they part of the query and return results to a central server where they
are combined and returned to the user. <productname>Pgpool-II</> are combined and returned to the user. <productname>Pgpool-II</>
has this capability. Also, this can be implemented using the has this capability. Also, this can be implemented using the
<productname>PL/Proxy</> toolset. <productname>PL/Proxy</> tool set.
</para> </para>
</listitem> </listitem>
...@@ -602,21 +602,21 @@ protocol to make nodes agree on a serializable transactional order. ...@@ -602,21 +602,21 @@ protocol to make nodes agree on a serializable transactional order.
At startup, the standby begins by restoring all WAL available in the At startup, the standby begins by restoring all WAL available in the
archive location, calling <varname>restore_command</>. Once it archive location, calling <varname>restore_command</>. Once it
reaches the end of WAL available there and <varname>restore_command</> reaches the end of WAL available there and <varname>restore_command</>
fails, it tries to restore any WAL available in the pg_xlog directory. fails, it tries to restore any WAL available in the <filename>pg_xlog</> directory.
If that fails, and streaming replication has been configured, the If that fails, and streaming replication has been configured, the
standby tries to connect to the primary server and start streaming WAL standby tries to connect to the primary server and start streaming WAL
from the last valid record found in archive or pg_xlog. If that fails from the last valid record found in archive or <filename>pg_xlog</>. If that fails
or streaming replication is not configured, or if the connection is or streaming replication is not configured, or if the connection is
later disconnected, the standby goes back to step 1 and tries to later disconnected, the standby goes back to step 1 and tries to
restore the file from the archive again. This loop of retries from the restore the file from the archive again. This loop of retries from the
archive, pg_xlog, and via streaming replication goes on until the server archive, <filename>pg_xlog</>, and via streaming replication goes on until the server
is stopped or failover is triggered by a trigger file. is stopped or failover is triggered by a trigger file.
</para> </para>
<para> <para>
Standby mode is exited and the server switches to normal operation, Standby mode is exited and the server switches to normal operation,
when a trigger file is found (<varname>trigger_file</>). Before failover, when a trigger file is found (<varname>trigger_file</>). Before failover,
any WAL immediately available in the archive or in pg_xlog will be any WAL immediately available in the archive or in <filename>pg_xlog</> will be
restored, but no attempt is made to connect to the master. restored, but no attempt is made to connect to the master.
</para> </para>
</sect2> </sect2>
...@@ -753,7 +753,7 @@ trigger_file = '/path/to/trigger_file' ...@@ -753,7 +753,7 @@ trigger_file = '/path/to/trigger_file'
too early, while the standby might still need them to catch up. If the too early, while the standby might still need them to catch up. If the
standby falls behind too much, it needs to be reinitialized from a new standby falls behind too much, it needs to be reinitialized from a new
base backup. If you set up a WAL archive that's accessible from the base backup. If you set up a WAL archive that's accessible from the
standby, wal_keep_segments is not required as the standby can always standby, <varname>wal_keep_segments</> is not required as the standby can always
use the archive to catch up. use the archive to catch up.
</para> </para>
...@@ -1743,7 +1743,7 @@ LOG: database system is ready to accept read only connections ...@@ -1743,7 +1743,7 @@ LOG: database system is ready to accept read only connections
</para> </para>
<para> <para>
New oids cannot be assigned, though some <acronym>UUID</> generators may still New OIDs cannot be assigned, though some <acronym>UUID</> generators may still
work as long as they do not rely on writing new status to the database. work as long as they do not rely on writing new status to the database.
</para> </para>
......
<!-- $PostgreSQL: pgsql/doc/src/sgml/hstore.sgml,v 1.13 2010/07/29 19:34:40 petere Exp $ --> <!-- $PostgreSQL: pgsql/doc/src/sgml/hstore.sgml,v 1.14 2010/08/17 04:37:20 petere Exp $ -->
<sect1 id="hstore"> <sect1 id="hstore">
<title>hstore</title> <title>hstore</title>
...@@ -214,7 +214,7 @@ key =&gt; NULL ...@@ -214,7 +214,7 @@ key =&gt; NULL
and <literal>&lt;@</> were called <literal>@</> and <literal>~</>, and <literal>&lt;@</> were called <literal>@</> and <literal>~</>,
respectively. These names are still available, but are deprecated and will respectively. These names are still available, but are deprecated and will
eventually be removed. Notice that the old names are reversed from the eventually be removed. Notice that the old names are reversed from the
convention formerly followed by the core geometric datatypes! convention formerly followed by the core geometric data types!
</para> </para>
</note> </note>
...@@ -409,7 +409,7 @@ b ...@@ -409,7 +409,7 @@ b
<para> <para>
The function <function>populate_record</function> is actually declared The function <function>populate_record</function> is actually declared
with <type>anyelement</>, not <type>record</>, as its first argument, with <type>anyelement</>, not <type>record</>, as its first argument,
but it will reject non-record types with a runtime error. but it will reject non-record types with a run-time error.
</para> </para>
</note> </note>
</sect2> </sect2>
......
<!-- $PostgreSQL: pgsql/doc/src/sgml/indexam.sgml,v 2.34 2010/07/29 19:34:40 petere Exp $ --> <!-- $PostgreSQL: pgsql/doc/src/sgml/indexam.sgml,v 2.35 2010/08/17 04:37:20 petere Exp $ -->
<chapter id="indexam"> <chapter id="indexam">
<title>Index Access Method Interface Definition</title> <title>Index Access Method Interface Definition</title>
...@@ -189,7 +189,7 @@ aminsert (Relation indexRelation, ...@@ -189,7 +189,7 @@ aminsert (Relation indexRelation,
</para> </para>
<para> <para>
The function's boolean result value is significant only when The function's Boolean result value is significant only when
<literal>checkUnique</> is <literal>UNIQUE_CHECK_PARTIAL</>. <literal>checkUnique</> is <literal>UNIQUE_CHECK_PARTIAL</>.
In this case a TRUE result means the new entry is known unique, whereas In this case a TRUE result means the new entry is known unique, whereas
FALSE means it might be non-unique (and a deferred uniqueness check must FALSE means it might be non-unique (and a deferred uniqueness check must
...@@ -366,7 +366,7 @@ amgetbitmap (IndexScanDesc scan, ...@@ -366,7 +366,7 @@ amgetbitmap (IndexScanDesc scan,
TIDBitmap *tbm); TIDBitmap *tbm);
</programlisting> </programlisting>
Fetch all tuples in the given scan and add them to the caller-supplied Fetch all tuples in the given scan and add them to the caller-supplied
TIDBitmap (that is, OR the set of tuple IDs into whatever set is already <type>TIDBitmap</type> (that is, OR the set of tuple IDs into whatever set is already
in the bitmap). The number of tuples fetched is returned (this might be in the bitmap). The number of tuples fetched is returned (this might be
just an approximate count, for instance some AMs do not detect duplicates). just an approximate count, for instance some AMs do not detect duplicates).
While inserting tuple IDs into the bitmap, <function>amgetbitmap</> can While inserting tuple IDs into the bitmap, <function>amgetbitmap</> can
...@@ -820,19 +820,19 @@ amrestrpos (IndexScanDesc scan); ...@@ -820,19 +820,19 @@ amrestrpos (IndexScanDesc scan);
<title>Index Cost Estimation Functions</title> <title>Index Cost Estimation Functions</title>
<para> <para>
The amcostestimate function is given a list of WHERE clauses that have The <function>amcostestimate</> function is given a list of WHERE clauses that have
been determined to be usable with the index. It must return estimates been determined to be usable with the index. It must return estimates
of the cost of accessing the index and the selectivity of the WHERE of the cost of accessing the index and the selectivity of the WHERE
clauses (that is, the fraction of parent-table rows that will be clauses (that is, the fraction of parent-table rows that will be
retrieved during the index scan). For simple cases, nearly all the retrieved during the index scan). For simple cases, nearly all the
work of the cost estimator can be done by calling standard routines work of the cost estimator can be done by calling standard routines
in the optimizer; the point of having an amcostestimate function is in the optimizer; the point of having an <function>amcostestimate</> function is
to allow index access methods to provide index-type-specific knowledge, to allow index access methods to provide index-type-specific knowledge,
in case it is possible to improve on the standard estimates. in case it is possible to improve on the standard estimates.
</para> </para>
<para> <para>
Each amcostestimate function must have the signature: Each <function>amcostestimate</> function must have the signature:
<programlisting> <programlisting>
void void
...@@ -850,7 +850,7 @@ amcostestimate (PlannerInfo *root, ...@@ -850,7 +850,7 @@ amcostestimate (PlannerInfo *root,
<variablelist> <variablelist>
<varlistentry> <varlistentry>
<term>root</term> <term><parameter>root</></term>
<listitem> <listitem>
<para> <para>
The planner's information about the query being processed. The planner's information about the query being processed.
...@@ -859,7 +859,7 @@ amcostestimate (PlannerInfo *root, ...@@ -859,7 +859,7 @@ amcostestimate (PlannerInfo *root,
</varlistentry> </varlistentry>
<varlistentry> <varlistentry>
<term>index</term> <term><parameter>index</></term>
<listitem> <listitem>
<para> <para>
The index being considered. The index being considered.
...@@ -868,23 +868,23 @@ amcostestimate (PlannerInfo *root, ...@@ -868,23 +868,23 @@ amcostestimate (PlannerInfo *root,
</varlistentry> </varlistentry>
<varlistentry> <varlistentry>
<term>indexQuals</term> <term><parameter>indexQuals</></term>
<listitem> <listitem>
<para> <para>
List of index qual clauses (implicitly ANDed); List of index qual clauses (implicitly ANDed);
a NIL list indicates no qualifiers are available. a <symbol>NIL</> list indicates no qualifiers are available.
Note that the list contains expression trees, not ScanKeys. Note that the list contains expression trees, not ScanKeys.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
<varlistentry> <varlistentry>
<term>outer_rel</term> <term><parameter>outer_rel</></term>
<listitem> <listitem>
<para> <para>
If the index is being considered for use in a join inner indexscan, If the index is being considered for use in a join inner indexscan,
the planner's information about the outer side of the join. Otherwise the planner's information about the outer side of the join. Otherwise
NULL. When non-NULL, some of the qual clauses will be join clauses <symbol>NULL</>. When non-<symbol>NULL</>, some of the qual clauses will be join clauses
with this rel rather than being simple restriction clauses. Also, with this rel rather than being simple restriction clauses. Also,
the cost estimator should expect that the index scan will be repeated the cost estimator should expect that the index scan will be repeated
for each row of the outer rel. for each row of the outer rel.
...@@ -899,7 +899,7 @@ amcostestimate (PlannerInfo *root, ...@@ -899,7 +899,7 @@ amcostestimate (PlannerInfo *root,
<variablelist> <variablelist>
<varlistentry> <varlistentry>
<term>*indexStartupCost</term> <term><parameter>*indexStartupCost</></term>
<listitem> <listitem>
<para> <para>
Set to cost of index start-up processing Set to cost of index start-up processing
...@@ -908,7 +908,7 @@ amcostestimate (PlannerInfo *root, ...@@ -908,7 +908,7 @@ amcostestimate (PlannerInfo *root,
</varlistentry> </varlistentry>
<varlistentry> <varlistentry>
<term>*indexTotalCost</term> <term><parameter>*indexTotalCost</></term>
<listitem> <listitem>
<para> <para>
Set to total cost of index processing Set to total cost of index processing
...@@ -917,7 +917,7 @@ amcostestimate (PlannerInfo *root, ...@@ -917,7 +917,7 @@ amcostestimate (PlannerInfo *root,
</varlistentry> </varlistentry>
<varlistentry> <varlistentry>
<term>*indexSelectivity</term> <term><parameter>*indexSelectivity</></term>
<listitem> <listitem>
<para> <para>
Set to index selectivity Set to index selectivity
...@@ -926,7 +926,7 @@ amcostestimate (PlannerInfo *root, ...@@ -926,7 +926,7 @@ amcostestimate (PlannerInfo *root,
</varlistentry> </varlistentry>
<varlistentry> <varlistentry>
<term>*indexCorrelation</term> <term><parameter>*indexCorrelation</></term>
<listitem> <listitem>
<para> <para>
Set to correlation coefficient between index scan order and Set to correlation coefficient between index scan order and
...@@ -951,7 +951,7 @@ amcostestimate (PlannerInfo *root, ...@@ -951,7 +951,7 @@ amcostestimate (PlannerInfo *root,
row should usually be taken as <varname>cpu_index_tuple_cost</>. In row should usually be taken as <varname>cpu_index_tuple_cost</>. In
addition, an appropriate multiple of <varname>cpu_operator_cost</> should addition, an appropriate multiple of <varname>cpu_operator_cost</> should
be charged for any comparison operators invoked during index processing be charged for any comparison operators invoked during index processing
(especially evaluation of the indexQuals themselves). (especially evaluation of the <literal>indexQuals</> themselves).
</para> </para>
<para> <para>
...@@ -968,14 +968,14 @@ amcostestimate (PlannerInfo *root, ...@@ -968,14 +968,14 @@ amcostestimate (PlannerInfo *root,
</para> </para>
<para> <para>
The indexSelectivity should be set to the estimated fraction of the parent The <parameter>indexSelectivity</> should be set to the estimated fraction of the parent
table rows that will be retrieved during the index scan. In the case table rows that will be retrieved during the index scan. In the case
of a lossy query, this will typically be higher than the fraction of of a lossy query, this will typically be higher than the fraction of
rows that actually pass the given qual conditions. rows that actually pass the given qual conditions.
</para> </para>
<para> <para>
The indexCorrelation should be set to the correlation (ranging between The <parameter>indexCorrelation</> should be set to the correlation (ranging between
-1.0 and 1.0) between the index order and the table order. This is used -1.0 and 1.0) between the index order and the table order. This is used
to adjust the estimate for the cost of fetching rows from the parent to adjust the estimate for the cost of fetching rows from the parent
table. table.
...@@ -1009,16 +1009,16 @@ amcostestimate (PlannerInfo *root, ...@@ -1009,16 +1009,16 @@ amcostestimate (PlannerInfo *root,
<step> <step>
<para> <para>
Estimate the number of index rows that will be visited during the Estimate the number of index rows that will be visited during the
scan. For many index types this is the same as indexSelectivity times scan. For many index types this is the same as <parameter>indexSelectivity</> times
the number of rows in the index, but it might be more. (Note that the the number of rows in the index, but it might be more. (Note that the
index's size in pages and rows is available from the IndexOptInfo struct.) index's size in pages and rows is available from the <structname>IndexOptInfo</> struct.)
</para> </para>
</step> </step>
<step> <step>
<para> <para>
Estimate the number of index pages that will be retrieved during the scan. Estimate the number of index pages that will be retrieved during the scan.
This might be just indexSelectivity times the index's size in pages. This might be just <parameter>indexSelectivity</> times the index's size in pages.
</para> </para>
</step> </step>
......
<!-- $PostgreSQL: pgsql/doc/src/sgml/indices.sgml,v 1.81 2010/04/03 07:22:54 petere Exp $ --> <!-- $PostgreSQL: pgsql/doc/src/sgml/indices.sgml,v 1.82 2010/08/17 04:37:20 petere Exp $ -->
<chapter id="indexes"> <chapter id="indexes">
<title>Indexes</title> <title>Indexes</title>
...@@ -92,9 +92,9 @@ CREATE INDEX test1_id_index ON test1 (id); ...@@ -92,9 +92,9 @@ CREATE INDEX test1_id_index ON test1 (id);
<para> <para>
Creating an index on a large table can take a long time. By default, Creating an index on a large table can take a long time. By default,
<productname>PostgreSQL</productname> allows reads (selects) to occur <productname>PostgreSQL</productname> allows reads (<command>SELECT</command> statements) to occur
on the table in parallel with index creation, but writes (INSERTs, on the table in parallel with index creation, but writes (<command>INSERT</command>,
UPDATEs, DELETEs) are blocked until the index build is finished. <command>UPDATE</command>, <command>DELETE</command>) are blocked until the index build is finished.
In production environments this is often unacceptable. In production environments this is often unacceptable.
It is possible to allow writes to occur in parallel with index It is possible to allow writes to occur in parallel with index
creation, but there are several caveats to be aware of &mdash; creation, but there are several caveats to be aware of &mdash;
......
<!-- $PostgreSQL: pgsql/doc/src/sgml/installation.sgml,v 1.350 2010/07/29 18:29:52 tgl Exp $ --> <!-- $PostgreSQL: pgsql/doc/src/sgml/installation.sgml,v 1.351 2010/08/17 04:37:20 petere Exp $ -->
<chapter id="installation"> <chapter id="installation">
<title><![%standalone-include[<productname>PostgreSQL</>]]> <title><![%standalone-include[<productname>PostgreSQL</>]]>
...@@ -2471,7 +2471,7 @@ createlang: language installation failed: ERROR: could not load library "/opt/d ...@@ -2471,7 +2471,7 @@ createlang: language installation failed: ERROR: could not load library "/opt/d
<listitem> <listitem>
<para> <para>
The GNU make command is called "make" not "gmake". The GNU make command is called <command>make</command>, not <command>gmake</command>.
</para> </para>
</listitem> </listitem>
...@@ -2982,7 +2982,7 @@ configure ... LDFLAGS="-R /usr/sfw/lib:/opt/sfw/lib:/usr/local/lib" ...@@ -2982,7 +2982,7 @@ configure ... LDFLAGS="-R /usr/sfw/lib:/opt/sfw/lib:/usr/local/lib"
On Solaris 7 and older, the 64-bit version of libc has a buggy On Solaris 7 and older, the 64-bit version of libc has a buggy
<function>vsnprintf</function> routine, which leads to erratic <function>vsnprintf</function> routine, which leads to erratic
core dumps in PostgreSQL. The simplest known workaround is to core dumps in PostgreSQL. The simplest known workaround is to
force PostgreSQL to use its own version of vsnprintf rather than force PostgreSQL to use its own version of <function>vsnprintf</function> rather than
the library copy. To do this, after you the library copy. To do this, after you
run <command>configure</command> edit a file produced by run <command>configure</command> edit a file produced by
<command>configure</command>: <command>configure</command>:
...@@ -3044,7 +3044,7 @@ LIBOBJS = snprintf.o ...@@ -3044,7 +3044,7 @@ LIBOBJS = snprintf.o
</para> </para>
<para> <para>
If you see the linking of the postgres executable abort with an If you see the linking of the <command>postgres</command> executable abort with an
error message like: error message like:
<screen> <screen>
Undefined first referenced Undefined first referenced
......
<!-- $PostgreSQL: pgsql/doc/src/sgml/intarray.sgml,v 1.11 2010/07/29 19:34:40 petere Exp $ --> <!-- $PostgreSQL: pgsql/doc/src/sgml/intarray.sgml,v 1.12 2010/08/17 04:37:20 petere Exp $ -->
<sect1 id="intarray"> <sect1 id="intarray">
<title>intarray</title> <title>intarray</title>
...@@ -207,7 +207,7 @@ ...@@ -207,7 +207,7 @@
<literal>&lt;@</> were respectively called <literal>@</> and <literal>~</>. <literal>&lt;@</> were respectively called <literal>@</> and <literal>~</>.
These names are still available, but are deprecated and will eventually be These names are still available, but are deprecated and will eventually be
retired. Notice that the old names are reversed from the convention retired. Notice that the old names are reversed from the convention
formerly followed by the core geometric datatypes!) formerly followed by the core geometric data types!)
</para> </para>
<para> <para>
......
<!-- $PostgreSQL: pgsql/doc/src/sgml/isn.sgml,v 1.7 2010/08/10 20:42:01 petere Exp $ --> <!-- $PostgreSQL: pgsql/doc/src/sgml/isn.sgml,v 1.8 2010/08/17 04:37:20 petere Exp $ -->
<sect1 id="isn"> <sect1 id="isn">
<title>isn</title> <title>isn</title>
...@@ -214,7 +214,7 @@ ...@@ -214,7 +214,7 @@
<para> <para>
The <filename>isn</> module provides the standard comparison operators, The <filename>isn</> module provides the standard comparison operators,
plus btree and hash indexing support for all these datatypes. In plus B-tree and hash indexing support for all these data types. In
addition there are several specialized functions; shown in <xref linkend="isn-functions">. addition there are several specialized functions; shown in <xref linkend="isn-functions">.
In this table, In this table,
<type>isn</> means any one of the module's data types. <type>isn</> means any one of the module's data types.
...@@ -375,7 +375,7 @@ SELECT isbn13(id) FROM test; ...@@ -375,7 +375,7 @@ SELECT isbn13(id) FROM test;
<para> <para>
This module was inspired by Garrett A. Wollman's This module was inspired by Garrett A. Wollman's
isbn_issn code. <filename>isbn_issn</> code.
</para> </para>
</sect2> </sect2>
......
<!-- $PostgreSQL: pgsql/doc/src/sgml/libpq.sgml,v 1.320 2010/08/10 02:56:46 rhaas Exp $ --> <!-- $PostgreSQL: pgsql/doc/src/sgml/libpq.sgml,v 1.321 2010/08/17 04:37:20 petere Exp $ -->
<chapter id="libpq"> <chapter id="libpq">
<title><application>libpq</application> - C Library</title> <title><application>libpq</application> - C Library</title>
...@@ -79,13 +79,13 @@ ...@@ -79,13 +79,13 @@
<para> <para>
On Windows, there is a way to improve performance if a single On Windows, there is a way to improve performance if a single
database connection is repeatedly started and shutdown. Internally, database connection is repeatedly started and shutdown. Internally,
libpq calls WSAStartup() and WSACleanup() for connection startup libpq calls <function>WSAStartup()</> and <function>WSACleanup()</> for connection startup
and shutdown, respectively. WSAStartup() increments an internal and shutdown, respectively. <function>WSAStartup()</> increments an internal
Windows library reference count which is decremented by WSACleanup(). Windows library reference count which is decremented by <function>WSACleanup()</>.
When the reference count is just one, calling WSACleanup() frees When the reference count is just one, calling <function>WSACleanup()</> frees
all resources and all DLLs are unloaded. This is an expensive all resources and all DLLs are unloaded. This is an expensive
operation. To avoid this, an application can manually call operation. To avoid this, an application can manually call
WSAStartup() so resources will not be freed when the last database <function>WSAStartup()</> so resources will not be freed when the last database
connection is closed. connection is closed.
</para> </para>
</note> </note>
...@@ -405,7 +405,7 @@ PGconn *PQconnectdbParams(const char **keywords, const char **values, int expand ...@@ -405,7 +405,7 @@ PGconn *PQconnectdbParams(const char **keywords, const char **values, int expand
<entry><literal>verify-full</></entry> <entry><literal>verify-full</></entry>
<entry>only try an <acronym>SSL</> connection, verify that <entry>only try an <acronym>SSL</> connection, verify that
the server certificate is issued by a trusted <acronym>CA</> and the server certificate is issued by a trusted <acronym>CA</> and
that the server hostname matches that in the certificate</entry> that the server host name matches that in the certificate</entry>
</row> </row>
</tbody> </tbody>
...@@ -471,7 +471,7 @@ PGconn *PQconnectdbParams(const char **keywords, const char **values, int expand ...@@ -471,7 +471,7 @@ PGconn *PQconnectdbParams(const char **keywords, const char **values, int expand
<listitem> <listitem>
<para> <para>
This parameter specifies the location for the secret key used for This parameter specifies the location for the secret key used for
the client certificate. It can either specify a filename that will the client certificate. It can either specify a file name that will
be used instead of the default be used instead of the default
<filename>~/.postgresql/postgresql.key</>, or it can specify a key <filename>~/.postgresql/postgresql.key</>, or it can specify a key
obtained from an external <quote>engine</> (engines are obtained from an external <quote>engine</> (engines are
...@@ -953,7 +953,7 @@ PQconninfoOption *PQconninfoParse(const char *conninfo, char **errmsg); ...@@ -953,7 +953,7 @@ PQconninfoOption *PQconninfoParse(const char *conninfo, char **errmsg);
<para> <para>
Parses a connection string and returns the resulting options as an Parses a connection string and returns the resulting options as an
array; or returns NULL if there is a problem with the connection array; or returns <symbol>NULL</> if there is a problem with the connection
string. This can be used to determine string. This can be used to determine
the <function>PQconnectdb</function> options in the provided the <function>PQconnectdb</function> options in the provided
connection string. The return value points to an array of connection string. The return value points to an array of
...@@ -967,10 +967,10 @@ PQconninfoOption *PQconninfoParse(const char *conninfo, char **errmsg); ...@@ -967,10 +967,10 @@ PQconninfoOption *PQconninfoParse(const char *conninfo, char **errmsg);
</para> </para>
<para> <para>
If <literal>errmsg</> is not NULL, then <literal>*errmsg</> is set If <literal>errmsg</> is not <symbol>NULL</>, then <literal>*errmsg</> is set
to NULL on success, else to a malloc'd error string explaining to <symbol>NULL</> on success, else to a <function>malloc</>'d error string explaining
the problem. (It is also possible for <literal>*errmsg</> to be the problem. (It is also possible for <literal>*errmsg</> to be
set to NULL even when NULL is returned; this indicates an out-of-memory set to <symbol>NULL</> even when <symbol>NULL</> is returned; this indicates an out-of-memory
situation.) situation.)
</para> </para>
...@@ -978,7 +978,7 @@ PQconninfoOption *PQconninfoParse(const char *conninfo, char **errmsg); ...@@ -978,7 +978,7 @@ PQconninfoOption *PQconninfoParse(const char *conninfo, char **errmsg);
After processing the options array, free it by passing it to After processing the options array, free it by passing it to
<function>PQconninfoFree</function>. If this is not done, some memory <function>PQconninfoFree</function>. If this is not done, some memory
is leaked for each call to <function>PQconninfoParse</function>. is leaked for each call to <function>PQconninfoParse</function>.
Conversely, if an error occurs and <literal>errmsg</> is not NULL, Conversely, if an error occurs and <literal>errmsg</> is not <symbol>NULL</>,
be sure to free the error string using <function>PQfreemem</>. be sure to free the error string using <function>PQfreemem</>.
</para> </para>
...@@ -1974,7 +1974,7 @@ PGresult *PQdescribePrepared(PGconn *conn, const char *stmtName); ...@@ -1974,7 +1974,7 @@ PGresult *PQdescribePrepared(PGconn *conn, const char *stmtName);
</para> </para>
<para> <para>
<parameter>stmtName</> can be <literal>""</> or NULL to reference <parameter>stmtName</> can be <literal>""</> or <symbol>NULL</> to reference
the unnamed statement, otherwise it must be the name of an existing the unnamed statement, otherwise it must be the name of an existing
prepared statement. On success, a <structname>PGresult</> with prepared statement. On success, a <structname>PGresult</> with
status <literal>PGRES_COMMAND_OK</literal> is returned. The status <literal>PGRES_COMMAND_OK</literal> is returned. The
...@@ -2017,7 +2017,7 @@ PGresult *PQdescribePortal(PGconn *conn, const char *portalName); ...@@ -2017,7 +2017,7 @@ PGresult *PQdescribePortal(PGconn *conn, const char *portalName);
</para> </para>
<para> <para>
<parameter>portalName</> can be <literal>""</> or NULL to reference <parameter>portalName</> can be <literal>""</> or <symbol>NULL</> to reference
the unnamed portal, otherwise it must be the name of an existing the unnamed portal, otherwise it must be the name of an existing
portal. On success, a <structname>PGresult</> with status portal. On success, a <structname>PGresult</> with status
<literal>PGRES_COMMAND_OK</literal> is returned. The functions <literal>PGRES_COMMAND_OK</literal> is returned. The functions
...@@ -3138,7 +3138,7 @@ char *PQescapeLiteral(PGconn *conn, const char *str, size_t length); ...@@ -3138,7 +3138,7 @@ char *PQescapeLiteral(PGconn *conn, const char *str, size_t length);
</para> </para>
<para> <para>
On error, <function>PQescapeLiteral</> returns NULL and a suitable On error, <function>PQescapeLiteral</> returns <symbol>NULL</> and a suitable
message is stored in the <parameter>conn</> object. message is stored in the <parameter>conn</> object.
</para> </para>
...@@ -3201,7 +3201,7 @@ char *PQescapeIdentifier(PGconn *conn, const char *str, size_t length); ...@@ -3201,7 +3201,7 @@ char *PQescapeIdentifier(PGconn *conn, const char *str, size_t length);
</para> </para>
<para> <para>
On error, <function>PQescapeIdentifier</> returns NULL and a suitable On error, <function>PQescapeIdentifier</> returns <symbol>NULL</> and a suitable
message is stored in the <parameter>conn</> object. message is stored in the <parameter>conn</> object.
</para> </para>
...@@ -3254,13 +3254,13 @@ size_t PQescapeStringConn(PGconn *conn, ...@@ -3254,13 +3254,13 @@ size_t PQescapeStringConn(PGconn *conn,
</para> </para>
<para> <para>
If the <parameter>error</> parameter is not NULL, then If the <parameter>error</> parameter is not <symbol>NULL</>, then
<literal>*error</> is set to zero on success, nonzero on error. <literal>*error</> is set to zero on success, nonzero on error.
Presently the only possible error conditions involve invalid multibyte Presently the only possible error conditions involve invalid multibyte
encoding in the source string. The output string is still generated encoding in the source string. The output string is still generated
on error, but it can be expected that the server will reject it as on error, but it can be expected that the server will reject it as
malformed. On error, a suitable message is stored in the malformed. On error, a suitable message is stored in the
<parameter>conn</> object, whether or not <parameter>error</> is NULL. <parameter>conn</> object, whether or not <parameter>error</> is <symbol>NULL</>.
</para> </para>
<para> <para>
...@@ -3365,7 +3365,7 @@ unsigned char *PQescapeByteaConn(PGconn *conn, ...@@ -3365,7 +3365,7 @@ unsigned char *PQescapeByteaConn(PGconn *conn,
</para> </para>
<para> <para>
On error, a NULL pointer is returned, and a suitable error message On error, a null pointer is returned, and a suitable error message
is stored in the <parameter>conn</> object. Currently, the only is stored in the <parameter>conn</> object. Currently, the only
possible error is insufficient memory for the result string. possible error is insufficient memory for the result string.
</para> </para>
...@@ -3438,7 +3438,7 @@ unsigned char *PQunescapeBytea(const unsigned char *from, size_t *to_length); ...@@ -3438,7 +3438,7 @@ unsigned char *PQunescapeBytea(const unsigned char *from, size_t *to_length);
to a <type>bytea</type> column. <function>PQunescapeBytea</function> to a <type>bytea</type> column. <function>PQunescapeBytea</function>
converts this string representation into its binary representation. converts this string representation into its binary representation.
It returns a pointer to a buffer allocated with It returns a pointer to a buffer allocated with
<function>malloc()</function>, or NULL on error, and puts the size of <function>malloc()</function>, or <symbol>NULL</> on error, and puts the size of
the buffer in <parameter>to_length</parameter>. The result must be the buffer in <parameter>to_length</parameter>. The result must be
freed using <function>PQfreemem</> when it is no longer needed. freed using <function>PQfreemem</> when it is no longer needed.
</para> </para>
...@@ -3993,7 +3993,7 @@ PGcancel *PQgetCancel(PGconn *conn); ...@@ -3993,7 +3993,7 @@ PGcancel *PQgetCancel(PGconn *conn);
<function>PQgetCancel</function> creates a <function>PQgetCancel</function> creates a
<structname>PGcancel</><indexterm><primary>PGcancel</></> object <structname>PGcancel</><indexterm><primary>PGcancel</></> object
given a <structname>PGconn</> connection object. It will return given a <structname>PGconn</> connection object. It will return
NULL if the given <parameter>conn</> is NULL or an invalid <symbol>NULL</> if the given <parameter>conn</> is <symbol>NULL</> or an invalid
connection. The <structname>PGcancel</> object is an opaque connection. The <structname>PGcancel</> object is an opaque
structure that is not meant to be accessed directly by the structure that is not meant to be accessed directly by the
application; it can only be passed to <function>PQcancel</function> application; it can only be passed to <function>PQcancel</function>
...@@ -5078,7 +5078,7 @@ PGresult *PQmakeEmptyPGresult(PGconn *conn, ExecStatusType status); ...@@ -5078,7 +5078,7 @@ PGresult *PQmakeEmptyPGresult(PGconn *conn, ExecStatusType status);
<para> <para>
This is <application>libpq</>'s internal function to allocate and This is <application>libpq</>'s internal function to allocate and
initialize an empty <structname>PGresult</structname> object. This initialize an empty <structname>PGresult</structname> object. This
function returns NULL if memory could not be allocated. It is function returns <symbol>NULL</> if memory could not be allocated. It is
exported because some applications find it useful to generate result exported because some applications find it useful to generate result
objects (particularly objects with error status) themselves. If objects (particularly objects with error status) themselves. If
<parameter>conn</parameter> is not null and <parameter>status</> <parameter>conn</parameter> is not null and <parameter>status</>
...@@ -5117,7 +5117,7 @@ int PQfireResultCreateEvents(PGconn *conn, PGresult *res); ...@@ -5117,7 +5117,7 @@ int PQfireResultCreateEvents(PGconn *conn, PGresult *res);
<para> <para>
The <literal>conn</> argument is passed through to event procedures The <literal>conn</> argument is passed through to event procedures
but not used directly. It can be <literal>NULL</> if the event but not used directly. It can be <symbol>NULL</> if the event
procedures won't use it. procedures won't use it.
</para> </para>
...@@ -5149,7 +5149,7 @@ int PQfireResultCreateEvents(PGconn *conn, PGresult *res); ...@@ -5149,7 +5149,7 @@ int PQfireResultCreateEvents(PGconn *conn, PGresult *res);
Makes a copy of a <structname>PGresult</structname> object. The copy is Makes a copy of a <structname>PGresult</structname> object. The copy is
not linked to the source result in any way and not linked to the source result in any way and
<function>PQclear</function> must be called when the copy is no longer <function>PQclear</function> must be called when the copy is no longer
needed. If the function fails, NULL is returned. needed. If the function fails, <symbol>NULL</> is returned.
<synopsis> <synopsis>
PGresult *PQcopyResult(const PGresult *src, int flags); PGresult *PQcopyResult(const PGresult *src, int flags);
...@@ -5193,7 +5193,7 @@ int PQsetResultAttrs(PGresult *res, int numAttributes, PGresAttDesc *attDescs); ...@@ -5193,7 +5193,7 @@ int PQsetResultAttrs(PGresult *res, int numAttributes, PGresAttDesc *attDescs);
<para> <para>
The provided <parameter>attDescs</parameter> are copied into the result. The provided <parameter>attDescs</parameter> are copied into the result.
If the <parameter>attDescs</parameter> pointer is NULL or If the <parameter>attDescs</parameter> pointer is <symbol>NULL</> or
<parameter>numAttributes</parameter> is less than one, the request is <parameter>numAttributes</parameter> is less than one, the request is
ignored and the function succeeds. If <parameter>res</parameter> ignored and the function succeeds. If <parameter>res</parameter>
already contains attributes, the function will fail. If the function already contains attributes, the function will fail. If the function
...@@ -5227,8 +5227,8 @@ int PQsetvalue(PGresult *res, int tup_num, int field_num, char *value, int len); ...@@ -5227,8 +5227,8 @@ int PQsetvalue(PGresult *res, int tup_num, int field_num, char *value, int len);
field of any existing tuple can be modified in any order. If a value at field of any existing tuple can be modified in any order. If a value at
<parameter>field_num</parameter> already exists, it will be overwritten. <parameter>field_num</parameter> already exists, it will be overwritten.
If <parameter>len</parameter> is <literal>-1</literal> or If <parameter>len</parameter> is <literal>-1</literal> or
<parameter>value</parameter> is <literal>NULL</literal>, the field value <parameter>value</parameter> is <symbol>NULL</>, the field value
will be set to an SQL <literal>NULL</literal>. The will be set to an SQL null value. The
<parameter>value</parameter> is copied into the result's private storage, <parameter>value</parameter> is copied into the result's private storage,
thus is no longer needed after the function thus is no longer needed after the function
returns. If the function fails, the return value is zero. If the returns. If the function fails, the return value is zero. If the
...@@ -5256,7 +5256,7 @@ void *PQresultAlloc(PGresult *res, size_t nBytes); ...@@ -5256,7 +5256,7 @@ void *PQresultAlloc(PGresult *res, size_t nBytes);
<para> <para>
Any memory allocated with this function will be freed when Any memory allocated with this function will be freed when
<parameter>res</parameter> is cleared. If the function fails, <parameter>res</parameter> is cleared. If the function fails,
the return value is <literal>NULL</literal>. The result is the return value is <symbol>NULL</>. The result is
guaranteed to be adequately aligned for any type of data, guaranteed to be adequately aligned for any type of data,
just as for <function>malloc</>. just as for <function>malloc</>.
</para> </para>
...@@ -5399,7 +5399,7 @@ defaultNoticeProcessor(void *arg, const char *message) ...@@ -5399,7 +5399,7 @@ defaultNoticeProcessor(void *arg, const char *message)
life of the <structname>PGconn</> and all <structname>PGresult</>s life of the <structname>PGconn</> and all <structname>PGresult</>s
generated from it; so if used, it must point to long-lived data. generated from it; so if used, it must point to long-lived data.
In addition there is an <firstterm>instance data</> pointer, which starts In addition there is an <firstterm>instance data</> pointer, which starts
out NULL in every <structname>PGconn</> and <structname>PGresult</>. out <symbol>NULL</> in every <structname>PGconn</> and <structname>PGresult</>.
This pointer can be manipulated using the This pointer can be manipulated using the
<function>PQinstanceData</function>, <function>PQinstanceData</function>,
<function>PQsetInstanceData</function>, <function>PQsetInstanceData</function>,
...@@ -5704,11 +5704,11 @@ int PQregisterEventProc(PGconn *conn, PGEventProc proc, ...@@ -5704,11 +5704,11 @@ int PQregisterEventProc(PGconn *conn, PGEventProc proc,
event is fired. Its memory address is also used to lookup event is fired. Its memory address is also used to lookup
<literal>instanceData</literal>. The <parameter>name</parameter> <literal>instanceData</literal>. The <parameter>name</parameter>
argument is used to refer to the event procedure in error messages. argument is used to refer to the event procedure in error messages.
This value cannot be NULL or a zero-length string. The name string is This value cannot be <symbol>NULL</> or a zero-length string. The name string is
copied into the <structname>PGconn</>, so what is passed need not be copied into the <structname>PGconn</>, so what is passed need not be
long-lived. The <parameter>passThrough</parameter> pointer is passed long-lived. The <parameter>passThrough</parameter> pointer is passed
to the <parameter>proc</parameter> whenever an event occurs. This to the <parameter>proc</parameter> whenever an event occurs. This
argument can be NULL. argument can be <symbol>NULL</>.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
...@@ -5722,9 +5722,11 @@ int PQregisterEventProc(PGconn *conn, PGEventProc proc, ...@@ -5722,9 +5722,11 @@ int PQregisterEventProc(PGconn *conn, PGEventProc proc,
</term> </term>
<listitem> <listitem>
<para> <para>
Sets the conn's instanceData for proc to data. This returns non-zero Sets the connection <parameter>conn</>'s <literal>instanceData</>
for success and zero for failure. (Failure is only possible if for procedure <parameter>proc</> to <parameter>data</>. This
the proc has not been properly registered in the conn.) returns non-zero for success and zero for failure. (Failure is
only possible if <parameter>proc</> has not been properly
registered in <parameter>conn</>.)
<synopsis> <synopsis>
int PQsetInstanceData(PGconn *conn, PGEventProc proc, void *data); int PQsetInstanceData(PGconn *conn, PGEventProc proc, void *data);
...@@ -5742,8 +5744,10 @@ int PQsetInstanceData(PGconn *conn, PGEventProc proc, void *data); ...@@ -5742,8 +5744,10 @@ int PQsetInstanceData(PGconn *conn, PGEventProc proc, void *data);
</term> </term>
<listitem> <listitem>
<para> <para>
Returns the conn's instanceData associated with proc, or NULL Returns the
if there is none. connection <parameter>conn</>'s <literal>instanceData</literal>
associated with procedure <parameter>proc</>,
or <symbol>NULL</symbol> if there is none.
<synopsis> <synopsis>
void *PQinstanceData(const PGconn *conn, PGEventProc proc); void *PQinstanceData(const PGconn *conn, PGEventProc proc);
...@@ -5761,9 +5765,11 @@ void *PQinstanceData(const PGconn *conn, PGEventProc proc); ...@@ -5761,9 +5765,11 @@ void *PQinstanceData(const PGconn *conn, PGEventProc proc);
</term> </term>
<listitem> <listitem>
<para> <para>
Sets the result's instanceData for proc to data. This returns non-zero Sets the result's <literal>instanceData</>
for success and zero for failure. (Failure is only possible if the for <parameter>proc</> to <parameter>data</>. This returns
proc has not been properly registered in the result.) non-zero for success and zero for failure. (Failure is only
possible if <parameter>proc</> has not been properly registered
in the result.)
<synopsis> <synopsis>
int PQresultSetInstanceData(PGresult *res, PGEventProc proc, void *data); int PQresultSetInstanceData(PGresult *res, PGEventProc proc, void *data);
...@@ -5781,7 +5787,7 @@ int PQresultSetInstanceData(PGresult *res, PGEventProc proc, void *data); ...@@ -5781,7 +5787,7 @@ int PQresultSetInstanceData(PGresult *res, PGEventProc proc, void *data);
</term> </term>
<listitem> <listitem>
<para> <para>
Returns the result's instanceData associated with proc, or NULL Returns the result's <literal>instanceData</> associated with <parameter>proc</>, or <symbol>NULL</>
if there is none. if there is none.
<synopsis> <synopsis>
...@@ -6513,7 +6519,7 @@ ldap://ldap.acme.com/cn=dbserver,cn=hosts?pgconnectinfo?base?(objectclass=*) ...@@ -6513,7 +6519,7 @@ ldap://ldap.acme.com/cn=dbserver,cn=hosts?pgconnectinfo?base?(objectclass=*)
libpq will verify that the server is trustworthy by checking the libpq will verify that the server is trustworthy by checking the
certificate chain up to a trusted certificate authority certificate chain up to a trusted certificate authority
(<acronym>CA</>). If <literal>sslmode</> is set to <literal>verify-full</>, (<acronym>CA</>). If <literal>sslmode</> is set to <literal>verify-full</>,
libpq will <emphasis>also</> verify that the server hostname matches its libpq will <emphasis>also</> verify that the server host name matches its
certificate. The SSL connection will fail if the server certificate cannot certificate. The SSL connection will fail if the server certificate cannot
be verified. <literal>verify-full</> is recommended in most be verified. <literal>verify-full</> is recommended in most
security-sensitive environments. security-sensitive environments.
...@@ -6521,11 +6527,11 @@ ldap://ldap.acme.com/cn=dbserver,cn=hosts?pgconnectinfo?base?(objectclass=*) ...@@ -6521,11 +6527,11 @@ ldap://ldap.acme.com/cn=dbserver,cn=hosts?pgconnectinfo?base?(objectclass=*)
<para> <para>
In <literal>verify-full</> mode, the <literal>cn</> (Common Name) attribute In <literal>verify-full</> mode, the <literal>cn</> (Common Name) attribute
of the certificate is matched against the hostname. If the <literal>cn</> of the certificate is matched against the host name. If the <literal>cn</>
attribute starts with an asterisk (<literal>*</>), it will be treated as attribute starts with an asterisk (<literal>*</>), it will be treated as
a wildcard, and will match all characters <emphasis>except</> a dot a wildcard, and will match all characters <emphasis>except</> a dot
(<literal>.</>). This means the certificate will not match subdomains. (<literal>.</>). This means the certificate will not match subdomains.
If the connection is made using an IP address instead of a hostname, the If the connection is made using an IP address instead of a host name, the
IP address will be matched (without doing any DNS lookups). IP address will be matched (without doing any DNS lookups).
</para> </para>
...@@ -6617,7 +6623,7 @@ ldap://ldap.acme.com/cn=dbserver,cn=hosts?pgconnectinfo?base?(objectclass=*) ...@@ -6617,7 +6623,7 @@ ldap://ldap.acme.com/cn=dbserver,cn=hosts?pgconnectinfo?base?(objectclass=*)
<entry>Eavesdropping</entry> <entry>Eavesdropping</entry>
<entry>If a third party can examine the network traffic between the <entry>If a third party can examine the network traffic between the
client and the server, it can read both connection information (including client and the server, it can read both connection information (including
the username and password) and the data that is passed. <acronym>SSL</> the user name and password) and the data that is passed. <acronym>SSL</>
uses encryption to prevent this. uses encryption to prevent this.
</entry> </entry>
</row> </row>
......
<!-- $PostgreSQL: pgsql/doc/src/sgml/lo.sgml,v 1.4 2010/07/29 19:34:40 petere Exp $ --> <!-- $PostgreSQL: pgsql/doc/src/sgml/lo.sgml,v 1.5 2010/08/17 04:37:20 petere Exp $ -->
<sect1 id="lo"> <sect1 id="lo">
<title>lo</title> <title>lo</title>
...@@ -19,7 +19,7 @@ ...@@ -19,7 +19,7 @@
<para> <para>
One of the problems with the JDBC driver (and this affects the ODBC driver One of the problems with the JDBC driver (and this affects the ODBC driver
also), is that the specification assumes that references to BLOBs (Binary also), is that the specification assumes that references to BLOBs (Binary
Large OBjects) are stored within a table, and if that entry is changed, the Large Objects) are stored within a table, and if that entry is changed, the
associated BLOB is deleted from the database. associated BLOB is deleted from the database.
</para> </para>
......
<!-- $PostgreSQL: pgsql/doc/src/sgml/ltree.sgml,v 1.5 2010/07/29 19:34:40 petere Exp $ --> <!-- $PostgreSQL: pgsql/doc/src/sgml/ltree.sgml,v 1.6 2010/08/17 04:37:20 petere Exp $ -->
<sect1 id="ltree"> <sect1 id="ltree">
<title>ltree</title> <title>ltree</title>
...@@ -42,7 +42,7 @@ ...@@ -42,7 +42,7 @@
</para> </para>
<para> <para>
The <filename>ltree</> module provides several datatypes: The <filename>ltree</> module provides several data types:
</para> </para>
<itemizedlist> <itemizedlist>
......
<!-- $PostgreSQL: pgsql/doc/src/sgml/monitoring.sgml,v 1.83 2010/08/14 02:22:10 rhaas Exp $ --> <!-- $PostgreSQL: pgsql/doc/src/sgml/monitoring.sgml,v 1.84 2010/08/17 04:37:20 petere Exp $ -->
<chapter id="monitoring"> <chapter id="monitoring">
<title>Monitoring Database Activity</title> <title>Monitoring Database Activity</title>
...@@ -807,7 +807,7 @@ postgres: <replaceable>user</> <replaceable>database</> <replaceable>host</> <re ...@@ -807,7 +807,7 @@ postgres: <replaceable>user</> <replaceable>database</> <replaceable>host</> <re
<entry><literal><function>pg_stat_get_activity</function>(<type>integer</type>)</literal></entry> <entry><literal><function>pg_stat_get_activity</function>(<type>integer</type>)</literal></entry>
<entry><type>setof record</type></entry> <entry><type>setof record</type></entry>
<entry> <entry>
Returns a record of information about the backend with the specified pid, or Returns a record of information about the backend with the specified PID, or
one record for each active backend in the system if <symbol>NULL</symbol> is one record for each active backend in the system if <symbol>NULL</symbol> is
specified. The fields returned are a subset of those in the specified. The fields returned are a subset of those in the
<structname>pg_stat_activity</structname> view. <structname>pg_stat_activity</structname> view.
......
<!-- $PostgreSQL: pgsql/doc/src/sgml/oid2name.sgml,v 1.9 2010/07/29 19:34:40 petere Exp $ --> <!-- $PostgreSQL: pgsql/doc/src/sgml/oid2name.sgml,v 1.10 2010/08/17 04:37:20 petere Exp $ -->
<sect1 id="oid2name"> <sect1 id="oid2name">
<title>oid2name</title> <title>oid2name</title>
...@@ -105,7 +105,7 @@ ...@@ -105,7 +105,7 @@
<varlistentry> <varlistentry>
<term><option>-U</option> <replaceable>username</></term> <term><option>-U</option> <replaceable>username</></term>
<listitem><para>username to connect as</para></listitem> <listitem><para>user name to connect as</para></listitem>
</varlistentry> </varlistentry>
<varlistentry> <varlistentry>
...@@ -122,8 +122,8 @@ ...@@ -122,8 +122,8 @@
using <option>-o</>, <option>-f</> and/or <option>-t</>. using <option>-o</>, <option>-f</> and/or <option>-t</>.
<option>-o</> takes an OID, <option>-o</> takes an OID,
<option>-f</> takes a filenode, <option>-f</> takes a filenode,
and <option>-t</> takes a tablename (actually, it's a LIKE and <option>-t</> takes a table name (actually, it's a <literal>LIKE</>
pattern, so you can use things like <option>foo%</>). pattern, so you can use things like <literal>foo%</>).
You can use as many You can use as many
of these options as you like, and the listing will include all objects of these options as you like, and the listing will include all objects
matched by any of the options. But note that these options can only matched by any of the options. But note that these options can only
......
<!-- $PostgreSQL: pgsql/doc/src/sgml/pageinspect.sgml,v 1.7 2010/07/29 19:34:40 petere Exp $ --> <!-- $PostgreSQL: pgsql/doc/src/sgml/pageinspect.sgml,v 1.8 2010/08/17 04:37:20 petere Exp $ -->
<sect1 id="pageinspect"> <sect1 id="pageinspect">
<title>pageinspect</title> <title>pageinspect</title>
...@@ -107,7 +107,7 @@ test=# SELECT * FROM heap_page_items(get_raw_page('pg_class', 0)); ...@@ -107,7 +107,7 @@ test=# SELECT * FROM heap_page_items(get_raw_page('pg_class', 0));
<listitem> <listitem>
<para> <para>
<function>bt_metap</function> returns information about a btree <function>bt_metap</function> returns information about a B-tree
index's metapage. For example: index's metapage. For example:
<screen> <screen>
test=# SELECT * FROM bt_metap('pg_cast_oid_index'); test=# SELECT * FROM bt_metap('pg_cast_oid_index');
...@@ -131,7 +131,7 @@ fastlevel | 0 ...@@ -131,7 +131,7 @@ fastlevel | 0
<listitem> <listitem>
<para> <para>
<function>bt_page_stats</function> returns summary information about <function>bt_page_stats</function> returns summary information about
single pages of btree indexes. For example: single pages of B-tree indexes. For example:
<screen> <screen>
test=# SELECT * FROM bt_page_stats('pg_cast_oid_index', 1); test=# SELECT * FROM bt_page_stats('pg_cast_oid_index', 1);
-[ RECORD 1 ]-+----- -[ RECORD 1 ]-+-----
...@@ -159,7 +159,7 @@ btpo_flags | 3 ...@@ -159,7 +159,7 @@ btpo_flags | 3
<listitem> <listitem>
<para> <para>
<function>bt_page_items</function> returns detailed information about <function>bt_page_items</function> returns detailed information about
all of the items on a btree index page. For example: all of the items on a B-tree index page. For example:
<screen> <screen>
test=# SELECT * FROM bt_page_items('pg_cast_oid_index', 1); test=# SELECT * FROM bt_page_items('pg_cast_oid_index', 1);
itemoffset | ctid | itemlen | nulls | vars | data itemoffset | ctid | itemlen | nulls | vars | data
...@@ -185,7 +185,7 @@ test=# SELECT * FROM bt_page_items('pg_cast_oid_index', 1); ...@@ -185,7 +185,7 @@ test=# SELECT * FROM bt_page_items('pg_cast_oid_index', 1);
<listitem> <listitem>
<para> <para>
<function>fsm_page_contents</function> shows the internal node structure <function>fsm_page_contents</function> shows the internal node structure
of a FSM page. The output is a multi-line string, with one line per of a FSM page. The output is a multiline string, with one line per
node in the binary tree within the page. Only those nodes that are not node in the binary tree within the page. Only those nodes that are not
zero are printed. The so-called "next" pointer, which points to the zero are printed. The so-called "next" pointer, which points to the
next slot to be returned from the page, is also printed. next slot to be returned from the page, is also printed.
......
<!-- $PostgreSQL: pgsql/doc/src/sgml/pgarchivecleanup.sgml,v 1.3 2010/08/15 20:20:30 tgl Exp $ --> <!-- $PostgreSQL: pgsql/doc/src/sgml/pgarchivecleanup.sgml,v 1.4 2010/08/17 04:37:20 petere Exp $ -->
<sect1 id="pgarchivecleanup"> <sect1 id="pgarchivecleanup">
<title>pg_archivecleanup</title> <title>pg_archivecleanup</title>
...@@ -61,11 +61,11 @@ pg_archivecleanup <optional> <replaceable>option</> ... </optional> <replaceable ...@@ -61,11 +61,11 @@ pg_archivecleanup <optional> <replaceable>option</> ... </optional> <replaceable
</synopsis> </synopsis>
When used as a standalone program all WAL files logically preceding the When used as a standalone program all WAL files logically preceding the
<literal>restartwalfile</> will be removed <replaceable>archivelocation</>. <literal>restartwalfile</> will be removed <replaceable>archivelocation</>.
In this mode, if you specify a .backup filename, then only the file prefix In this mode, if you specify a <filename>.backup</> file name, then only the file prefix
will be used as the <literal>restartwalfile</>. This allows you to remove will be used as the <literal>restartwalfile</>. This allows you to remove
all WAL files archived prior to a specific base backup without error. all WAL files archived prior to a specific base backup without error.
For example, the following example will remove all files older than For example, the following example will remove all files older than
WAL filename 000000010000003700000010: WAL file name <filename>000000010000003700000010</>:
<programlisting> <programlisting>
pg_archivecleanup -d archive 000000010000003700000010.00000020.backup pg_archivecleanup -d archive 000000010000003700000010.00000020.backup
......
<!-- $PostgreSQL: pgsql/doc/src/sgml/pgbench.sgml,v 1.19 2010/08/15 19:46:24 tgl Exp $ --> <!-- $PostgreSQL: pgsql/doc/src/sgml/pgbench.sgml,v 1.20 2010/08/17 04:37:20 petere Exp $ -->
<sect1 id="pgbench"> <sect1 id="pgbench">
<title>pgbench</title> <title>pgbench</title>
...@@ -242,7 +242,7 @@ pgbench <optional> <replaceable>options</> </optional> <replaceable>dbname</> ...@@ -242,7 +242,7 @@ pgbench <optional> <replaceable>options</> </optional> <replaceable>dbname</>
<term><option>-l</option></term> <term><option>-l</option></term>
<listitem> <listitem>
<para> <para>
Write the time taken by each transaction to a logfile. Write the time taken by each transaction to a log file.
See below for details. See below for details.
</para> </para>
</listitem> </listitem>
...@@ -380,7 +380,7 @@ pgbench <optional> <replaceable>options</> </optional> <replaceable>dbname</> ...@@ -380,7 +380,7 @@ pgbench <optional> <replaceable>options</> </optional> <replaceable>dbname</>
<term><option>-h</option> <replaceable>hostname</></term> <term><option>-h</option> <replaceable>hostname</></term>
<listitem> <listitem>
<para> <para>
The database server's hostname The database server's host name
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
...@@ -398,7 +398,7 @@ pgbench <optional> <replaceable>options</> </optional> <replaceable>dbname</> ...@@ -398,7 +398,7 @@ pgbench <optional> <replaceable>options</> </optional> <replaceable>dbname</>
<term><option>-U</option> <replaceable>login</></term> <term><option>-U</option> <replaceable>login</></term>
<listitem> <listitem>
<para> <para>
The username to connect as The user name to connect as
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
...@@ -447,7 +447,7 @@ pgbench <optional> <replaceable>options</> </optional> <replaceable>dbname</> ...@@ -447,7 +447,7 @@ pgbench <optional> <replaceable>options</> </optional> <replaceable>dbname</>
</para> </para>
<para> <para>
The format of a script file is one SQL command per line; multi-line The format of a script file is one SQL command per line; multiline
SQL commands are not supported. Empty lines and lines beginning with SQL commands are not supported. Empty lines and lines beginning with
<literal>--</> are ignored. Script file lines can also be <literal>--</> are ignored. Script file lines can also be
<quote>meta commands</>, which are interpreted by <application>pgbench</> <quote>meta commands</>, which are interpreted by <application>pgbench</>
...@@ -626,7 +626,7 @@ END; ...@@ -626,7 +626,7 @@ END;
<para> <para>
With the <literal>-l</> option, <application>pgbench</> writes the time With the <literal>-l</> option, <application>pgbench</> writes the time
taken by each transaction to a logfile. The logfile will be named taken by each transaction to a log file. The log file will be named
<filename>pgbench_log.<replaceable>nnn</></filename>, where <filename>pgbench_log.<replaceable>nnn</></filename>, where
<replaceable>nnn</> is the PID of the pgbench process. <replaceable>nnn</> is the PID of the pgbench process.
If the <literal>-j</> option is 2 or higher, creating multiple worker If the <literal>-j</> option is 2 or higher, creating multiple worker
......
<!-- $PostgreSQL: pgsql/doc/src/sgml/pgcrypto.sgml,v 1.12 2010/08/15 01:57:03 rhaas Exp $ --> <!-- $PostgreSQL: pgsql/doc/src/sgml/pgcrypto.sgml,v 1.13 2010/08/17 04:37:21 petere Exp $ -->
<sect1 id="pgcrypto"> <sect1 id="pgcrypto">
<title>pgcrypto</title> <title>pgcrypto</title>
...@@ -519,7 +519,7 @@ pgp_sym_decrypt_bytea(msg bytea, psw text [, options text ]) returns bytea ...@@ -519,7 +519,7 @@ pgp_sym_decrypt_bytea(msg bytea, psw text [, options text ]) returns bytea
Decrypt a symmetric-key-encrypted PGP message. Decrypt a symmetric-key-encrypted PGP message.
</para> </para>
<para> <para>
Decrypting bytea data with <function>pgp_sym_decrypt</> is disallowed. Decrypting <type>bytea</> data with <function>pgp_sym_decrypt</> is disallowed.
This is to avoid outputting invalid character data. Decrypting This is to avoid outputting invalid character data. Decrypting
originally textual data with <function>pgp_sym_decrypt_bytea</> is fine. originally textual data with <function>pgp_sym_decrypt_bytea</> is fine.
</para> </para>
...@@ -561,7 +561,7 @@ pgp_pub_decrypt_bytea(msg bytea, key bytea [, psw text [, options text ]]) retur ...@@ -561,7 +561,7 @@ pgp_pub_decrypt_bytea(msg bytea, key bytea [, psw text [, options text ]]) retur
options, you need to give an empty password. options, you need to give an empty password.
</para> </para>
<para> <para>
Decrypting bytea data with <function>pgp_pub_decrypt</> is disallowed. Decrypting <type>bytea</> data with <function>pgp_pub_decrypt</> is disallowed.
This is to avoid outputting invalid character data. Decrypting This is to avoid outputting invalid character data. Decrypting
originally textual data with <function>pgp_pub_decrypt_bytea</> is fine. originally textual data with <function>pgp_pub_decrypt_bytea</> is fine.
</para> </para>
...@@ -621,7 +621,7 @@ armor(data bytea) returns text ...@@ -621,7 +621,7 @@ armor(data bytea) returns text
dearmor(data text) returns bytea dearmor(data text) returns bytea
</synopsis> </synopsis>
<para> <para>
These functions wrap/unwrap binary data into PGP Ascii Armor format, These functions wrap/unwrap binary data into PGP ASCII-armor format,
which is basically Base64 with CRC and additional formatting. which is basically Base64 with CRC and additional formatting.
</para> </para>
</sect3> </sect3>
...@@ -825,13 +825,13 @@ gpg --list-secret-keys ...@@ -825,13 +825,13 @@ gpg --list-secret-keys
</programlisting> </programlisting>
</para> </para>
<para> <para>
To export a public key in ascii-armor format: To export a public key in ASCII-armor format:
<programlisting> <programlisting>
gpg -a --export KEYID > public.key gpg -a --export KEYID > public.key
</programlisting> </programlisting>
</para> </para>
<para> <para>
To export a secret key in ascii-armor format: To export a secret key in ASCII-armor format:
<programlisting> <programlisting>
gpg -a --export-secret-keys KEYID > secret.key gpg -a --export-secret-keys KEYID > secret.key
</programlisting> </programlisting>
...@@ -1206,7 +1206,7 @@ gen_random_bytes(count integer) returns bytea ...@@ -1206,7 +1206,7 @@ gen_random_bytes(count integer) returns bytea
</listitem> </listitem>
<listitem> <listitem>
<para><ulink url="http://jlcooke.ca/random/"></ulink></para> <para><ulink url="http://jlcooke.ca/random/"></ulink></para>
<para>Jean-Luc Cooke Fortuna-based /dev/random driver for Linux.</para> <para>Jean-Luc Cooke Fortuna-based <filename>/dev/random</> driver for Linux.</para>
</listitem> </listitem>
<listitem> <listitem>
<para><ulink url="http://research.cyber.ee/~lipmaa/crypto/"></ulink></para> <para><ulink url="http://research.cyber.ee/~lipmaa/crypto/"></ulink></para>
......
<!-- $PostgreSQL: pgsql/doc/src/sgml/pgfreespacemap.sgml,v 2.7 2010/07/29 19:34:40 petere Exp $ --> <!-- $PostgreSQL: pgsql/doc/src/sgml/pgfreespacemap.sgml,v 2.8 2010/08/17 04:37:21 petere Exp $ -->
<sect1 id="pgfreespacemap"> <sect1 id="pgfreespacemap">
<title>pg_freespacemap</title> <title>pg_freespacemap</title>
...@@ -33,7 +33,6 @@ ...@@ -33,7 +33,6 @@
<para> <para>
Returns the amount of free space on the page of the relation, specified Returns the amount of free space on the page of the relation, specified
by <literal>blkno</>, according to the FSM. by <literal>blkno</>, according to the FSM.
(blkno).
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
...@@ -56,7 +55,7 @@ ...@@ -56,7 +55,7 @@
<para> <para>
The values stored in the free space map are not exact. They're rounded The values stored in the free space map are not exact. They're rounded
to precision of 1/256th of BLCKSZ (32 bytes with default BLCKSZ), and to precision of 1/256th of <symbol>BLCKSZ</> (32 bytes with default <symbol>BLCKSZ</>), and
they're not kept fully up-to-date as tuples are inserted and updated. they're not kept fully up-to-date as tuples are inserted and updated.
</para> </para>
......
<!-- $PostgreSQL: pgsql/doc/src/sgml/pgstandby.sgml,v 2.12 2010/07/29 19:34:40 petere Exp $ --> <!-- $PostgreSQL: pgsql/doc/src/sgml/pgstandby.sgml,v 2.13 2010/08/17 04:37:21 petere Exp $ -->
<sect1 id="pgstandby"> <sect1 id="pgstandby">
<title>pg_standby</title> <title>pg_standby</title>
...@@ -202,7 +202,7 @@ pg_standby <optional> <replaceable>option</> ... </optional> <replaceable>archiv ...@@ -202,7 +202,7 @@ pg_standby <optional> <replaceable>option</> ... </optional> <replaceable>archiv
<listitem> <listitem>
<para> <para>
Specify a trigger file whose presence should cause failover. Specify a trigger file whose presence should cause failover.
It is recommended that you use a structured filename to It is recommended that you use a structured file name to
avoid confusion as to which server is being triggered avoid confusion as to which server is being triggered
when multiple servers exist on the same system; for example when multiple servers exist on the same system; for example
<filename>/tmp/pgsql.trigger.5432</>. <filename>/tmp/pgsql.trigger.5432</>.
...@@ -326,7 +326,7 @@ recovery_end_command = 'del C:\pgsql.trigger.5442' ...@@ -326,7 +326,7 @@ recovery_end_command = 'del C:\pgsql.trigger.5442'
<para> <para>
The <literal>copy</> command on Windows sets the final file size The <literal>copy</> command on Windows sets the final file size
before the file is completely copied, which would ordinarly confuse before the file is completely copied, which would ordinarily confuse
<application>pg_standby</application>. Therefore <application>pg_standby</application>. Therefore
<application>pg_standby</application> waits <literal>sleeptime</> <application>pg_standby</application> waits <literal>sleeptime</>
seconds once it sees the proper file size. GNUWin32's <literal>cp</> seconds once it sees the proper file size. GNUWin32's <literal>cp</>
......
<!-- $PostgreSQL: pgsql/doc/src/sgml/pgstattuple.sgml,v 1.7 2010/08/10 20:42:01 petere Exp $ --> <!-- $PostgreSQL: pgsql/doc/src/sgml/pgstattuple.sgml,v 1.8 2010/08/17 04:37:21 petere Exp $ -->
<sect1 id="pgstattuple"> <sect1 id="pgstattuple">
<title>pgstattuple</title> <title>pgstattuple</title>
...@@ -140,7 +140,7 @@ free_percent | 1.95 ...@@ -140,7 +140,7 @@ free_percent | 1.95
<listitem> <listitem>
<para> <para>
<function>pgstatindex</function> returns a record showing information <function>pgstatindex</function> returns a record showing information
about a btree index. For example: about a B-tree index. For example:
<programlisting> <programlisting>
test=> SELECT * FROM pgstatindex('pg_cast_oid_index'); test=> SELECT * FROM pgstatindex('pg_cast_oid_index');
-[ RECORD 1 ]------+------ -[ RECORD 1 ]------+------
...@@ -174,7 +174,7 @@ leaf_fragmentation | 0 ...@@ -174,7 +174,7 @@ leaf_fragmentation | 0
<row> <row>
<entry><structfield>version</structfield></entry> <entry><structfield>version</structfield></entry>
<entry><type>integer</type></entry> <entry><type>integer</type></entry>
<entry>Btree version number</entry> <entry>B-tree version number</entry>
</row> </row>
<row> <row>
......
<!-- $PostgreSQL: pgsql/doc/src/sgml/pgtrgm.sgml,v 2.3 2010/07/29 19:34:40 petere Exp $ --> <!-- $PostgreSQL: pgsql/doc/src/sgml/pgtrgm.sgml,v 2.4 2010/08/17 04:37:21 petere Exp $ -->
<sect1 id="pgtrgm"> <sect1 id="pgtrgm">
<title>pg_trgm</title> <title>pg_trgm</title>
...@@ -130,7 +130,7 @@ ...@@ -130,7 +130,7 @@
operator classes that allow you to create an index over a text column for operator classes that allow you to create an index over a text column for
the purpose of very fast similarity searches. These index types support the purpose of very fast similarity searches. These index types support
the <literal>%</> similarity operator (and no other operators, so you may the <literal>%</> similarity operator (and no other operators, so you may
want a regular btree index too). want a regular B-tree index too).
</para> </para>
<para> <para>
......
<!-- $PostgreSQL: pgsql/doc/src/sgml/pgupgrade.sgml,v 1.13 2010/07/25 03:28:32 momjian Exp $ --> <!-- $PostgreSQL: pgsql/doc/src/sgml/pgupgrade.sgml,v 1.14 2010/08/17 04:37:21 petere Exp $ -->
<sect1 id="pgupgrade"> <sect1 id="pgupgrade">
<title>pg_upgrade</title> <title>pg_upgrade</title>
...@@ -8,21 +8,21 @@ ...@@ -8,21 +8,21 @@
</indexterm> </indexterm>
<para> <para>
<application>pg_upgrade</> (formerly called pg_migrator) allows data <application>pg_upgrade</> (formerly called <application>pg_migrator</>) allows data
stored in <productname>PostgreSQL</> data files to be migrated to a later <productname>PostgreSQL</> stored in <productname>PostgreSQL</> data files to be migrated to a later <productname>PostgreSQL</>
major version without the data dump/reload typically required for major version without the data dump/reload typically required for
major version upgrades, e.g. from 8.4.7 to the current major release major version upgrades, e.g. from 8.4.7 to the current major release
of <productname>PostgreSQL</>. It is not required for minor version upgrades, e.g of <productname>PostgreSQL</>. It is not required for minor version upgrades, e.g. from
9.0.1 -> 9.0.4. 9.0.1 to 9.0.4.
</para> </para>
<para> <para>
<application>pg_upgrade</> works because, though new features are <application>pg_upgrade</> works because, though new features are
regularly added to Postgres major releases, the internal data storage regularly added to PostgreSQL major releases, the internal data storage
format rarely changes. <application>pg_upgrade</> does its best to format rarely changes. <application>pg_upgrade</> does its best to
make sure the old and new clusters are binary-compatible, e.g. by make sure the old and new clusters are binary-compatible, e.g. by
checking for compatible compile-time settings. It is important that checking for compatible compile-time settings. It is important that
any external modules are also binary compatibile, though this cannot any external modules are also binary compatible, though this cannot
be checked by <application>pg_upgrade</>. be checked by <application>pg_upgrade</>.
</para> </para>
...@@ -144,50 +144,43 @@ ...@@ -144,50 +144,43 @@
<sect2> <sect2>
<title>Upgrade Steps</title> <title>Upgrade Steps</title>
<orderedlist> <procedure>
<listitem> <step performance="optional">
<para> <title>Optionally move the old cluster</title>
Optionally move the old cluster
</para>
<para> <para>
If you are using a version-specific installation directory, e.g. If you are using a version-specific installation directory, e.g.
/opt/PostgreSQL/8.4, you do not need to move the old cluster. The <filename>/opt/PostgreSQL/8.4</>, you do not need to move the old cluster. The
one-click installers all use version-specific install directories. one-click installers all use version-specific installation directories.
</para> </para>
<para> <para>
If your installation directory is not version-specific, e.g. If your installation directory is not version-specific, e.g.
/usr/local/pgsql, it is necessary to move the current PostgreSQL install <filename>/usr/local/pgsql</>, it is necessary to move the current PostgreSQL install
directory so it does not interfere with the new <productname>PostgreSQL</> installation. directory so it does not interfere with the new <productname>PostgreSQL</> installation.
Once the current <productname>PostgreSQL</> server is shut down, it is safe to rename the Once the current <productname>PostgreSQL</> server is shut down, it is safe to rename the
PostgreSQL install directory; assuming the old directory is PostgreSQL installation directory; assuming the old directory is
/usr/local/pgsql, you can do: <filename>/usr/local/pgsql</>, you can do:
<programlisting> <programlisting>
mv /usr/local/pgsql /usr/local/pgsql.old mv /usr/local/pgsql /usr/local/pgsql.old
</programlisting> </programlisting>
to rename the directory. to rename the directory.
</para> </para>
</step>
</listitem> <step>
<title>For source installs, build the new version</title>
<listitem>
<para> <para>
For source installs, build the new version Build the new PostgreSQL source with <command>configure</> flags that are compatible
</para>
<para>
Build the new PostgreSQL source with configure flags that are compatible
with the old cluster. <application>pg_upgrade</> will check <command>pg_controldata</> to make with the old cluster. <application>pg_upgrade</> will check <command>pg_controldata</> to make
sure all settings are compatible before starting the upgrade. sure all settings are compatible before starting the upgrade.
</para> </para>
</listitem> </step>
<listitem> <step>
<para> <title>Install the new PostgreSQL binaries</title>
Install the new PostgreSQL binaries
</para>
<para> <para>
Install the new server's binaries and support files. You can use the Install the new server's binaries and support files. You can use the
...@@ -197,75 +190,67 @@ mv /usr/local/pgsql /usr/local/pgsql.old ...@@ -197,75 +190,67 @@ mv /usr/local/pgsql /usr/local/pgsql.old
<para> <para>
For source installs, if you wish to install the new server in a custom For source installs, if you wish to install the new server in a custom
location, use 'prefix': location, use the <literal>prefix</literal> variable:
<programlisting> <programlisting>
gmake prefix=/usr/local/pgsql.new install gmake prefix=/usr/local/pgsql.new install
</programlisting> </programlisting>
</para> </para>
</listitem> </step>
<step>
<title>Install pg_upgrade</title>
<listitem>
<para> <para>
Install <application>pg_upgrade</> and Install <application>pg_upgrade</> and
<application>pg_upgrade_support</> in the new PostgreSQL cluster <application>pg_upgrade_support</> in the new PostgreSQL cluster
</para> </para>
</listitem> </step>
<listitem> <step>
<para> <title>Initialize the new PostgreSQL cluster</title>
Initialize the new PostgreSQL cluster
</para>
<para> <para>
Initialize the new cluster <xref Initialize the new cluster using <command>initdb</command>.
linkend="app-initdb">,<indexterm><primary>initdb</></>. Again, use compatible <command>initdb</command>
Again, use compatible initdb
flags that match the old cluster. Many flags that match the old cluster. Many
prebuilt installers do this step automatically. There is no need to prebuilt installers do this step automatically. There is no need to
start the new cluster. start the new cluster.
</para> </para>
</step>
</listitem> <step>
<title>Install custom shared object files</title>
<listitem>
<para>
Install custom shared object files (or DLLs)
</para>
<para> <para>
Install any custom shared object files (or DLLs) used by the old cluster Install any custom shared object files (or DLLs) used by the old cluster
into the new cluster, e.g. pgcrypto.so, whether they are from /contrib into the new cluster, e.g. <filename>pgcrypto.so</filename>, whether they are from <filename>contrib</filename>
or some other source. Do not install the schema definitions, e.g. or some other source. Do not install the schema definitions, e.g.
pgcrypto.sql --- these will be migrated from the old cluster. <filename>pgcrypto.sql</>, because these will be migrated from the old cluster.
</para> </para>
</listitem> </step>
<listitem> <step>
<para> <title>Adjust authentication</title>
Adjust authentication
</para>
<para> <para>
pg_upgrade will connect to the old and new servers several times, <command>pg_upgrade</> will connect to the old and new servers several times,
so you might want to set authentication to <literal>trust</> in so you might want to set authentication to <literal>trust</> in
<filename>pg_hba.conf</>, or if using <literal>md5</> authentication, <filename>pg_hba.conf</>, or if using <literal>md5</> authentication,
use a <filename>~/.pgpass</> file (see <xref linkend="libpq-pgpass">) use a <filename>~/.pgpass</> file (see <xref linkend="libpq-pgpass">)
to avoid being prompted repeatedly for a password. to avoid being prompted repeatedly for a password.
</para> </para>
</listitem> </step>
<listitem> <step>
<para> <title>Stop both servers</title>
Stop both servers
</para>
<para> <para>
Make sure both database servers are stopped using on Unix, e.g.: Make sure both database servers are stopped using on Unix, e.g.:
<programlisting> <programlisting>
pg_ctl --pgdata /opt/PostgreSQL/8.4 stop pg_ctl -D /opt/PostgreSQL/8.4 stop
pg_ctl --pgdata /opt/PostgreSQL/9.0 stop pg_ctl -D /opt/PostgreSQL/9.0 stop
</programlisting> </programlisting>
or on Windows or on Windows
...@@ -281,27 +266,25 @@ NET STOP postgresql-9.0 ...@@ -281,27 +266,25 @@ NET STOP postgresql-9.0
NET STOP pgsql-8.3 (<productname>PostgreSQL</> 8.3 and older used a different service name) NET STOP pgsql-8.3 (<productname>PostgreSQL</> 8.3 and older used a different service name)
</programlisting> </programlisting>
</para> </para>
</listitem> </step>
<listitem> <step>
<para> <title>Run <application>pg_upgrade</></title>
Run <application>pg_upgrade</>
</para>
<para> <para>
Always run the <application>pg_upgrade</> binary in the new server, not the old one. Always run the <application>pg_upgrade</> binary in the new server, not the old one.
<application>pg_upgrade</> requires the specification of the old and new cluster's <application>pg_upgrade</> requires the specification of the old and new cluster's
<varname>PGDATA</> and executable (/bin) directories. You can also specify separate data and executable (<filename>bin</>) directories. You can also specify separate
user and port values, and whether you want the data linked instead of user and port values, and whether you want the data linked instead of
copied (the default). If you use linking, the migration will be much copied (the default). If you use linking, the migration will be much
faster (no data copying), but you will no longer be able to access your faster (no data copying), but you will no longer be able to access your
old cluster once you start the new cluster after the upgrade. See old cluster once you start the new cluster after the upgrade. See
pg_upgrade --help for a full list of options. <literal>pg_upgrade --help</> for a full list of options.
</para> </para>
<para> <para>
For Windows users, you must be logged into an administrative account, and For Windows users, you must be logged into an administrative account, and
then start a shell as the 'postgres' user and set the proper path: then start a shell as the <literal>postgres</> user and set the proper path:
<programlisting> <programlisting>
RUNAS /USER:postgres "CMD.EXE" RUNAS /USER:postgres "CMD.EXE"
...@@ -318,10 +301,10 @@ pg_upgrade.exe ...@@ -318,10 +301,10 @@ pg_upgrade.exe
--new-bindir "C:/Program Files/PostgreSQL/9.0/bin" --new-bindir "C:/Program Files/PostgreSQL/9.0/bin"
</programlisting> </programlisting>
Once started, pg_upgrade will verify the two clusters are compatible Once started, <command>pg_upgrade</> will verify the two clusters are compatible
and then do the migration. You can use pg_upgrade <option>--check</> and then do the migration. You can use <command>pg_upgrade --check</>
to perform only the checks, even if the old server is still to perform only the checks, even if the old server is still
running. pg_upgrade <option>--check</> will also outline any running. <command>pg_upgrade --check</> will also outline any
manual adjustments you will need to make after the migration. manual adjustments you will need to make after the migration.
</para> </para>
...@@ -330,31 +313,27 @@ pg_upgrade.exe ...@@ -330,31 +313,27 @@ pg_upgrade.exe
</para> </para>
<para> <para>
If an error occurs while restoring the database schema, pg_upgrade will If an error occurs while restoring the database schema, <command>pg_upgrade</> will
exit and you will have to revert to the old cluster as outlined in step exit and you will have to revert to the old cluster as outlined in <xref linkend="pgupgrade-step-revert">
#15 below. To try pg_upgrade again, you will need to modify the old below. To try <command>pg_upgrade</command> again, you will need to modify the old
cluster so the pg_upgrade schema restore succeeds. If the problem is a cluster so the pg_upgrade schema restore succeeds. If the problem is a
/contrib module, you might need to uninstall the /contrib module from contrib module, you might need to uninstall the contrib module from
the old cluster and install it in the new cluster after the migration, the old cluster and install it in the new cluster after the migration,
assuming the module is not being used to store user data. assuming the module is not being used to store user data.
</para> </para>
</listitem> </step>
<listitem> <step>
<para> <title>Restore <filename>pg_hba.conf</></title>
Restore <filename>pg_hba.conf</>
</para>
<para> <para>
If you modified <filename>pg_hba.conf</> to use <literal>trust</>, If you modified <filename>pg_hba.conf</> to use <literal>trust</>,
restore its original authentication settings. restore its original authentication settings.
</para> </para>
</listitem> </step>
<listitem> <step>
<para> <title>Post-migration processing</title>
Post-Migration processing
</para>
<para> <para>
If any post-migration processing is required, pg_upgrade will issue If any post-migration processing is required, pg_upgrade will issue
...@@ -379,76 +358,81 @@ psql --username postgres --file script.sql postgres ...@@ -379,76 +358,81 @@ psql --username postgres --file script.sql postgres
scripts can be accessed immediately. scripts can be accessed immediately.
</para> </para>
</caution> </caution>
</listitem> </step>
<step>
<title>Statistics</title>
<listitem>
<para>
Statistics
</para>
<caution>
<para> <para>
Because optimizer statistics are not transferred by pg_upgrade, you will Because optimizer statistics are not transferred by <command>pg_upgrade</>, you will
be instructed to run a command to regenerate that information at the end be instructed to run a command to regenerate that information at the end
of the migration. of the migration.
</para> </para>
</caution> </step>
</listitem>
<listitem> <step>
<para> <title>Delete old cluster</title>
Delete old cluster
</para>
<para> <para>
Once you are satisfied with the upgrade, you can delete the old Once you are satisfied with the upgrade, you can delete the old
cluster's data directories by running the script mentioned when cluster's data directories by running the script mentioned when
pg_upgrade completes. You will need to manually delete the old install <command>pg_upgrade</command> completes. You can also delete the
directories, e.g. /bin, /share. old installation directories
(e.g. <filename>bin</>, <filename>share</>).
</para> </para>
</listitem> </step>
<listitem> <step id="pgupgrade-step-revert" performance="optional">
<para> <title>Reverting to old cluster</title>
Reverting to old cluster
</para>
<para> <para>
If, after running pg_upgrade, you wish to revert to the old cluster, If, after running <command>pg_upgrade</command>, you wish to revert to the old cluster,
there are several options. there are several options:
</para>
<itemizedlist>
<listitem>
<para> <para>
If you ran pg_upgrade with <option>--check</>, no modifications If you ran <command>pg_upgrade</command>
were made to the old cluster and you can re-use it anytime. with <option>--check</>, no modifications were made to the old
cluster and you can re-use it anytime.
</para> </para>
</listitem>
<listitem>
<para> <para>
If you ran pg_upgrade with <option>--link</>, the data files If you ran <command>pg_upgrade</command>
are shared between the old and new cluster. If you started with <option>--link</>, the data files are shared between the
the new cluster, the new server has written to those shared old and new cluster. If you started the new cluster, the new
files and it is unsafe to use the old cluster. server has written to those shared files and it is unsafe to
use the old cluster.
</para> </para>
</listitem>
<listitem>
<para> <para>
If you ran pg_upgrade <emphasis>without</>_ <option>--link</> If you
ran <command>pg_upgrade</command> <emphasis>without</> <option>--link</>
or did not start the new server, the old cluster was not or did not start the new server, the old cluster was not
modified except that an <literal>.old</> suffix was appended modified except that an <literal>.old</> suffix was appended
to <filename>$PGDATA/global/pg_control</> and perhaps tablespace to <filename>$PGDATA/global/pg_control</> and perhaps
directories. To reuse the old cluster, remove the ".old" tablespace directories. To reuse the old cluster, remove
suffix from <filename>$PGDATA/global/pg_control</>. and, if the <filename>.old</> suffix
migrating to 8.4 or earlier, remove the tablespace directories from <filename>$PGDATA/global/pg_control</>. and, if migrating
created by the migration and remove the ".old" suffix from to 8.4 or earlier, remove the tablespace directories created
by the migration and remove the <filename>.old</> suffix from
the tablespace directory names; then you can restart the old the tablespace directory names; then you can restart the old
cluster. cluster.
</para> </para>
</listitem> </listitem>
</orderedlist> </itemizedlist>
</para>
</step>
</procedure>
</sect2> </sect2>
<sect2> <sect2>
<title>Limitations in migrating <emphasis>from</> PostgreSQL 8.3</title> <title>Limitations in Migrating <emphasis>from</> PostgreSQL 8.3</title>
<para> <para>
Upgrading from PostgreSQL 8.3 has additional restrictions not present Upgrading from PostgreSQL 8.3 has additional restrictions not present
...@@ -478,7 +462,7 @@ psql --username postgres --file script.sql postgres ...@@ -478,7 +462,7 @@ psql --username postgres --file script.sql postgres
<itemizedlist> <itemizedlist>
<listitem> <listitem>
<para> <para>
a user column is of data type tsvector a user column is of data type <type>tsvector</type>
</para> </para>
</listitem> </listitem>
</itemizedlist> </itemizedlist>
...@@ -489,7 +473,7 @@ psql --username postgres --file script.sql postgres ...@@ -489,7 +473,7 @@ psql --username postgres --file script.sql postgres
<itemizedlist> <itemizedlist>
<listitem> <listitem>
<para> <para>
an index is of type hash or gin an index is of type hash or GIN
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
...@@ -522,7 +506,7 @@ psql --username postgres --file script.sql postgres ...@@ -522,7 +506,7 @@ psql --username postgres --file script.sql postgres
<para> <para>
<application>pg_upgrade</> does not support migration of databases <application>pg_upgrade</> does not support migration of databases
containing these reg* system oid-referencing data types: containing these <type>reg*</> OID-referencing system data types:
<type>regproc</>, <type>regprocedure</>, <type>regoper</>, <type>regproc</>, <type>regprocedure</>, <type>regoper</>,
<type>regoperator</>, <type>regclass</>, <type>regconfig</>, and <type>regoperator</>, <type>regclass</>, <type>regconfig</>, and
<type>regdictionary</>. (<type>regtype</> can be migrated.) <type>regdictionary</>. (<type>regtype</> can be migrated.)
...@@ -544,9 +528,9 @@ psql --username postgres --file script.sql postgres ...@@ -544,9 +528,9 @@ psql --username postgres --file script.sql postgres
If you want to use link mode and you don't want your old cluster If you want to use link mode and you don't want your old cluster
to be modified when the new cluster is started, make a copy of the to be modified when the new cluster is started, make a copy of the
old cluster and migrate that with link mode. To make a valid copy old cluster and migrate that with link mode. To make a valid copy
of the old cluster, use <application>rsync</> to create a dirty of the old cluster, use <command>rsync</> to create a dirty
copy of the old cluster while the server is running, then shut down copy of the old cluster while the server is running, then shut down
the old server and run rsync again to update the copy with any the old server and run <command>rsync</> again to update the copy with any
changes to make it consistent. changes to make it consistent.
</para> </para>
......
<!-- $PostgreSQL: pgsql/doc/src/sgml/planstats.sgml,v 1.10 2010/07/13 20:57:19 tgl Exp $ --> <!-- $PostgreSQL: pgsql/doc/src/sgml/planstats.sgml,v 1.11 2010/08/17 04:37:21 petere Exp $ -->
<chapter id="planner-stats-details"> <chapter id="planner-stats-details">
<title>How the Planner Uses Statistics</title> <title>How the Planner Uses Statistics</title>
...@@ -428,7 +428,7 @@ rows = (outer_cardinality * inner_cardinality) * selectivity ...@@ -428,7 +428,7 @@ rows = (outer_cardinality * inner_cardinality) * selectivity
the unmodified size of <structname>tenk2</>. It might appear from the unmodified size of <structname>tenk2</>. It might appear from
inspection of the <command>EXPLAIN</> output that the estimate of inspection of the <command>EXPLAIN</> output that the estimate of
join rows comes from 50 * 1, that is, the number of outer rows times join rows comes from 50 * 1, that is, the number of outer rows times
the estimated number of rows obtained by each inner indexscan on the estimated number of rows obtained by each inner index scan on
<structname>tenk2</>. But this is not the case: the join relation size <structname>tenk2</>. But this is not the case: the join relation size
is estimated before any particular join plan has been considered. If is estimated before any particular join plan has been considered. If
everything is working well then the two ways of estimating the join everything is working well then the two ways of estimating the join
......
<!-- $PostgreSQL: pgsql/doc/src/sgml/plperl.sgml,v 2.87 2010/07/29 19:34:40 petere Exp $ --> <!-- $PostgreSQL: pgsql/doc/src/sgml/plperl.sgml,v 2.88 2010/08/17 04:37:21 petere Exp $ -->
<chapter id="plperl"> <chapter id="plperl">
<title>PL/Perl - Perl Procedural Language</title> <title>PL/Perl - Perl Procedural Language</title>
...@@ -694,7 +694,7 @@ SELECT release_hosts_query(); ...@@ -694,7 +694,7 @@ SELECT release_hosts_query();
<listitem> <listitem>
<para> <para>
Return the unescaped binary data represented by the contents of the given string, Return the unescaped binary data represented by the contents of the given string,
which should be bytea encoded. which should be <type>bytea</type> encoded.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
...@@ -708,7 +708,7 @@ SELECT release_hosts_query(); ...@@ -708,7 +708,7 @@ SELECT release_hosts_query();
<term><literal><function>encode_bytea</>(<replaceable>string</replaceable>)</literal></term> <term><literal><function>encode_bytea</>(<replaceable>string</replaceable>)</literal></term>
<listitem> <listitem>
<para> <para>
Return the bytea encoded form of the binary data contents of the given string. Return the <type>bytea</type> encoded form of the binary data contents of the given string.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
......
<!-- $PostgreSQL: pgsql/doc/src/sgml/plpgsql.sgml,v 1.157 2010/08/09 02:25:05 tgl Exp $ --> <!-- $PostgreSQL: pgsql/doc/src/sgml/plpgsql.sgml,v 1.158 2010/08/17 04:37:21 petere Exp $ -->
<chapter id="plpgsql"> <chapter id="plpgsql">
<title><application>PL/pgSQL</application> - <acronym>SQL</acronym> Procedural Language</title> <title><application>PL/pgSQL</application> - <acronym>SQL</acronym> Procedural Language</title>
...@@ -1842,7 +1842,7 @@ END CASE; ...@@ -1842,7 +1842,7 @@ END CASE;
<para> <para>
The searched form of <command>CASE</> provides conditional execution The searched form of <command>CASE</> provides conditional execution
based on truth of boolean expressions. Each <literal>WHEN</> clause's based on truth of Boolean expressions. Each <literal>WHEN</> clause's
<replaceable>boolean-expression</replaceable> is evaluated in turn, <replaceable>boolean-expression</replaceable> is evaluated in turn,
until one is found that yields <literal>true</>. Then the until one is found that yields <literal>true</>. Then the
corresponding <replaceable>statements</replaceable> are executed, and corresponding <replaceable>statements</replaceable> are executed, and
......
<!-- <!--
$PostgreSQL: pgsql/doc/src/sgml/ref/alter_opfamily.sgml,v 1.7 2010/04/03 07:22:57 petere Exp $ $PostgreSQL: pgsql/doc/src/sgml/ref/alter_opfamily.sgml,v 1.8 2010/08/17 04:37:21 petere Exp $
PostgreSQL documentation PostgreSQL documentation
--> -->
...@@ -240,7 +240,7 @@ ALTER OPERATOR FAMILY <replaceable>name</replaceable> USING <replaceable class=" ...@@ -240,7 +240,7 @@ ALTER OPERATOR FAMILY <replaceable>name</replaceable> USING <replaceable class="
Before <productname>PostgreSQL</productname> 8.4, the <literal>OPERATOR</> Before <productname>PostgreSQL</productname> 8.4, the <literal>OPERATOR</>
clause could include a <literal>RECHECK</> option. This is no longer clause could include a <literal>RECHECK</> option. This is no longer
supported because whether an index operator is <quote>lossy</> is now supported because whether an index operator is <quote>lossy</> is now
determined on-the-fly at runtime. This allows efficient handling of determined on-the-fly at run time. This allows efficient handling of
cases where an operator might or might not be lossy. cases where an operator might or might not be lossy.
</para> </para>
</refsect1> </refsect1>
......
<!-- <!--
$PostgreSQL: pgsql/doc/src/sgml/ref/alter_role.sgml,v 1.17 2010/04/21 20:54:19 tgl Exp $ $PostgreSQL: pgsql/doc/src/sgml/ref/alter_role.sgml,v 1.18 2010/08/17 04:37:21 petere Exp $
PostgreSQL documentation PostgreSQL documentation
--> -->
...@@ -86,7 +86,7 @@ ALTER ROLE <replaceable class="PARAMETER">name</replaceable> [ IN DATABASE <repl ...@@ -86,7 +86,7 @@ ALTER ROLE <replaceable class="PARAMETER">name</replaceable> [ IN DATABASE <repl
the named database. Whenever the role subsequently the named database. Whenever the role subsequently
starts a new session, the specified value becomes the session starts a new session, the specified value becomes the session
default, overriding whatever setting is present in default, overriding whatever setting is present in
<filename>postgresql.conf</> or has been received from the postgres <filename>postgresql.conf</> or has been received from the <command>postgres</command>
command line. This only happens at login time; executing command line. This only happens at login time; executing
<xref linkend="sql-set-role"> or <xref linkend="sql-set-role"> or
<xref linkend="sql-set-session-authorization"> does not cause new <xref linkend="sql-set-session-authorization"> does not cause new
......
<!-- <!--
$PostgreSQL: pgsql/doc/src/sgml/ref/create_opclass.sgml,v 1.25 2010/04/03 07:22:58 petere Exp $ $PostgreSQL: pgsql/doc/src/sgml/ref/create_opclass.sgml,v 1.26 2010/08/17 04:37:21 petere Exp $
PostgreSQL documentation PostgreSQL documentation
--> -->
...@@ -250,7 +250,7 @@ CREATE OPERATOR CLASS <replaceable class="parameter">name</replaceable> [ DEFAUL ...@@ -250,7 +250,7 @@ CREATE OPERATOR CLASS <replaceable class="parameter">name</replaceable> [ DEFAUL
Before <productname>PostgreSQL</productname> 8.4, the <literal>OPERATOR</> Before <productname>PostgreSQL</productname> 8.4, the <literal>OPERATOR</>
clause could include a <literal>RECHECK</> option. This is no longer clause could include a <literal>RECHECK</> option. This is no longer
supported because whether an index operator is <quote>lossy</> is now supported because whether an index operator is <quote>lossy</> is now
determined on-the-fly at runtime. This allows efficient handling of determined on-the-fly at run time. This allows efficient handling of
cases where an operator might or might not be lossy. cases where an operator might or might not be lossy.
</para> </para>
</refsect1> </refsect1>
......
<!-- <!--
$PostgreSQL: pgsql/doc/src/sgml/ref/create_table.sgml,v 1.130 2010/07/26 01:43:52 momjian Exp $ $PostgreSQL: pgsql/doc/src/sgml/ref/create_table.sgml,v 1.131 2010/08/17 04:37:21 petere Exp $
PostgreSQL documentation PostgreSQL documentation
--> -->
...@@ -512,7 +512,7 @@ CREATE [ [ GLOBAL | LOCAL ] { TEMPORARY | TEMP } ] TABLE [ IF NOT EXISTS ] <repl ...@@ -512,7 +512,7 @@ CREATE [ [ GLOBAL | LOCAL ] { TEMPORARY | TEMP } ] TABLE [ IF NOT EXISTS ] <repl
The access method must support <literal>amgettuple</> (see <xref The access method must support <literal>amgettuple</> (see <xref
linkend="indexam">); at present this means <acronym>GIN</> linkend="indexam">); at present this means <acronym>GIN</>
cannot be used. Although it's allowed, there is little point in using cannot be used. Although it's allowed, there is little point in using
btree or hash indexes with an exclusion constraint, because this B-tree or hash indexes with an exclusion constraint, because this
does nothing that an ordinary unique constraint doesn't do better. does nothing that an ordinary unique constraint doesn't do better.
So in practice the access method will always be <acronym>GiST</>. So in practice the access method will always be <acronym>GiST</>.
</para> </para>
......
<!-- <!--
$PostgreSQL: pgsql/doc/src/sgml/ref/create_trigger.sgml,v 1.53 2010/04/03 07:23:00 petere Exp $ $PostgreSQL: pgsql/doc/src/sgml/ref/create_trigger.sgml,v 1.54 2010/08/17 04:37:21 petere Exp $
PostgreSQL documentation PostgreSQL documentation
--> -->
...@@ -74,7 +74,7 @@ CREATE TRIGGER <replaceable class="PARAMETER">name</replaceable> { BEFORE | AFTE ...@@ -74,7 +74,7 @@ CREATE TRIGGER <replaceable class="PARAMETER">name</replaceable> { BEFORE | AFTE
</para> </para>
<para> <para>
Also, a trigger definition can specify a boolean <literal>WHEN</> Also, a trigger definition can specify a Boolean <literal>WHEN</>
condition, which will be tested to see whether the trigger should condition, which will be tested to see whether the trigger should
be fired. In row-level triggers the <literal>WHEN</> condition can be fired. In row-level triggers the <literal>WHEN</> condition can
examine the old and/or new values of columns of the row. Statement-level examine the old and/or new values of columns of the row. Statement-level
......
<!-- <!--
$PostgreSQL: pgsql/doc/src/sgml/ref/pg_ctl-ref.sgml,v 1.51 2010/06/22 16:19:36 momjian Exp $ $PostgreSQL: pgsql/doc/src/sgml/ref/pg_ctl-ref.sgml,v 1.52 2010/08/17 04:37:21 petere Exp $
PostgreSQL documentation PostgreSQL documentation
--> -->
...@@ -402,8 +402,8 @@ PostgreSQL documentation ...@@ -402,8 +402,8 @@ PostgreSQL documentation
<listitem> <listitem>
<para> <para>
Default hostname or Unix-domain socket location for <xref Default host name or Unix-domain socket location for <xref
linkend="app-psql"> (used by the -w option). linkend="app-psql"> (used by the <option>-w</option> option).
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
...@@ -413,7 +413,7 @@ PostgreSQL documentation ...@@ -413,7 +413,7 @@ PostgreSQL documentation
<listitem> <listitem>
<para> <para>
Default port number for <xref linkend="app-psql"> (used by the -w option). Default port number for <xref linkend="app-psql"> (used by the <option>-w</option> option).
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
......
<!-- <!--
$PostgreSQL: pgsql/doc/src/sgml/ref/pg_dumpall.sgml,v 1.83 2010/07/22 01:22:33 rhaas Exp $ $PostgreSQL: pgsql/doc/src/sgml/ref/pg_dumpall.sgml,v 1.84 2010/08/17 04:37:21 petere Exp $
PostgreSQL documentation PostgreSQL documentation
--> -->
...@@ -406,8 +406,8 @@ PostgreSQL documentation ...@@ -406,8 +406,8 @@ PostgreSQL documentation
<para> <para>
Specifies the name of the database to connect to to dump global Specifies the name of the database to connect to to dump global
objects and discover what other databases should be dumped. If objects and discover what other databases should be dumped. If
not specified, the <quote>postgres</quote> database will be used, not specified, the <literal>postgres</literal> database will be used,
and if that does not exist, <quote>template1</quote> will be used. and if that does not exist, <literal>template1</literal> will be used.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
......
<!-- $PostgreSQL: pgsql/doc/src/sgml/ref/pg_restore.sgml,v 1.87 2010/05/15 18:11:07 tgl Exp $ --> <!-- $PostgreSQL: pgsql/doc/src/sgml/ref/pg_restore.sgml,v 1.88 2010/08/17 04:37:21 petere Exp $ -->
<refentry id="APP-PGRESTORE"> <refentry id="APP-PGRESTORE">
<refmeta> <refmeta>
...@@ -221,7 +221,7 @@ ...@@ -221,7 +221,7 @@
create indexes, or create constraints &mdash; using multiple create indexes, or create constraints &mdash; using multiple
concurrent jobs. This option can dramatically reduce the time concurrent jobs. This option can dramatically reduce the time
to restore a large database to a server running on a to restore a large database to a server running on a
multi-processor machine. multiprocessor machine.
</para> </para>
<para> <para>
......
<!-- <!--
$PostgreSQL: pgsql/doc/src/sgml/ref/psql-ref.sgml,v 1.249 2010/08/14 13:59:49 tgl Exp $ $PostgreSQL: pgsql/doc/src/sgml/ref/psql-ref.sgml,v 1.250 2010/08/17 04:37:21 petere Exp $
PostgreSQL documentation PostgreSQL documentation
--> -->
...@@ -1043,7 +1043,7 @@ testdb=&gt; ...@@ -1043,7 +1043,7 @@ testdb=&gt;
If <replaceable class="parameter">pattern</replaceable> is If <replaceable class="parameter">pattern</replaceable> is
specified, only those servers whose name matches the pattern specified, only those servers whose name matches the pattern
are listed. If the form <literal>\des+</literal> is used, a are listed. If the form <literal>\des+</literal> is used, a
full desription of each server is shown, including the full description of each server is shown, including the
server's ACL, type, version, and options. server's ACL, type, version, and options.
</para> </para>
</listitem> </listitem>
...@@ -1706,8 +1706,8 @@ lo_import 152801 ...@@ -1706,8 +1706,8 @@ lo_import 152801
<para> <para>
Prompts the user to set variable <replaceable Prompts the user to set variable <replaceable
class="parameter">name</>. An optional prompt, <replaceable class="parameter">name</>. An optional prompt, <replaceable
class="parameter">text</>, can be specified. (For multi-word class="parameter">text</>, can be specified. (For multiword
prompts, use single-quotes.) prompts, use single quotes.)
</para> </para>
<para> <para>
...@@ -2836,7 +2836,7 @@ testdb=&gt; <userinput>SELECT * FROM :"foo";</userinput> ...@@ -2836,7 +2836,7 @@ testdb=&gt; <userinput>SELECT * FROM :"foo";</userinput>
testdb=&gt; <userinput>\set content `cat my_file.txt`</userinput> testdb=&gt; <userinput>\set content `cat my_file.txt`</userinput>
testdb=&gt; <userinput>INSERT INTO my_table VALUES (:'content');</userinput> testdb=&gt; <userinput>INSERT INTO my_table VALUES (:'content');</userinput>
</programlisting> </programlisting>
(Note that this still won't work if my_file.txt contains NUL bytes. (Note that this still won't work if <filename>my_file.txt</filename> contains NUL bytes.
psql does not support embedded NUL bytes in variable values.) psql does not support embedded NUL bytes in variable values.)
</para> </para>
......
<!-- $PostgreSQL: pgsql/doc/src/sgml/regress.sgml,v 1.67 2010/05/02 12:22:40 sriggs Exp $ --> <!-- $PostgreSQL: pgsql/doc/src/sgml/regress.sgml,v 1.68 2010/08/17 04:37:21 petere Exp $ -->
<chapter id="regress"> <chapter id="regress">
<title>Regression Tests</title> <title>Regression Tests</title>
...@@ -165,8 +165,8 @@ psql -h primary -c "CREATE DATABASE regression" ...@@ -165,8 +165,8 @@ psql -h primary -c "CREATE DATABASE regression"
psql -h primary -f src/test/regress/sql/hs_primary_setup.sql regression psql -h primary -f src/test/regress/sql/hs_primary_setup.sql regression
</screen> </screen>
Now confirm that the default connection for the tester is the standby Now confirm that the default connection for the tester is the standby
server under test and then run standbycheck from the regression server under test and then run the <literal>standbycheck</> target from the regression
directory. directory:
<screen> <screen>
cd src/test/regress cd src/test/regress
gmake standbycheck gmake standbycheck
......
<!-- $PostgreSQL: pgsql/doc/src/sgml/release-9.0.sgml,v 2.48 2010/08/07 13:07:06 momjian Exp $ --> <!-- $PostgreSQL: pgsql/doc/src/sgml/release-9.0.sgml,v 2.49 2010/08/17 04:37:21 petere Exp $ -->
<sect1 id="release-9-0"> <sect1 id="release-9-0">
<title>Release 9.0</title> <title>Release 9.0</title>
...@@ -99,7 +99,7 @@ ...@@ -99,7 +99,7 @@
<listitem> <listitem>
<para> <para>
New and enhanced security features, including RADIUS authentication, New and enhanced security features, including RADIUS authentication,
LDAP authentication improvements, and the new checkpassword optional module LDAP authentication improvements, and the new <filename>checkpassword</> optional module
for testing password strength. for testing password strength.
</para> </para>
</listitem> </listitem>
...@@ -117,7 +117,7 @@ ...@@ -117,7 +117,7 @@
<listitem> <listitem>
<para> <para>
Add <link linkend="pgupgrade"><filename>/contrib/pg_upgrade</></link> Add <link linkend="pgupgrade"><filename>contrib/pg_upgrade</></link>
to support in-place upgrades from 8.3 or 8.4 to 9.0. to support in-place upgrades from 8.3 or 8.4 to 9.0.
</para> </para>
</listitem> </listitem>
...@@ -149,14 +149,14 @@ ...@@ -149,14 +149,14 @@
<listitem> <listitem>
<para> <para>
EXPLAIN plans are now available in JSON, XML and YAML format, and include <command>EXPLAIN</> plans are now available in JSON, XML, and YAML format, and include
buffer utilization and other data not previously available. buffer utilization and other data not previously available.
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
The HStore optional module has been improved with new functions and greater The <filename>hstore</> optional module has been improved with new functions and greater
data capacity to make it a high-performance key-value store. data capacity to make it a high-performance key-value store.
</para> </para>
</listitem> </listitem>
...@@ -205,7 +205,7 @@ ...@@ -205,7 +205,7 @@
Remove server variable <varname>regex_flavor</>, which Remove server variable <varname>regex_flavor</>, which
was defaulted to <link was defaulted to <link
linkend="posix-syntax-details"><literal>advanced</></link> linkend="posix-syntax-details"><literal>advanced</></link>
(e.g. Perl-regex compatible) for many years. (Tom Lane) (i.e., Perl compatible) for many years. (Tom Lane)
</para> </para>
</listitem> </listitem>
...@@ -554,7 +554,7 @@ ...@@ -554,7 +554,7 @@
<para> <para>
This is particularly useful for finding This is particularly useful for finding
<function>MAX()</>/<function>MIN()</> values in indexes that also <function>MAX()</>/<function>MIN()</> values in indexes that also
contain NULLs. contain null values.
</para> </para>
</listitem> </listitem>
...@@ -581,7 +581,7 @@ ...@@ -581,7 +581,7 @@
While the Genetic Query Optimizer (GEQO) still selects While the Genetic Query Optimizer (GEQO) still selects
random plans, it now selects the same random plans for random plans, it now selects the same random plans for
identical queries. You can modify <link identical queries. You can modify <link
linkend="guc-geqo-seed">geqo_seed</link> to randomize linkend="guc-geqo-seed"><varname>geqo_seed</></link> to randomize
the starting value of the random plan generator. the starting value of the random plan generator.
</para> </para>
...@@ -766,7 +766,7 @@ ...@@ -766,7 +766,7 @@
</para> </para>
<para> <para>
Now there is true multi-lingual support for PostgreSQL log messages Now there is true multilingual support for PostgreSQL log messages
on Windows. on Windows.
</para> </para>
</listitem> </listitem>
...@@ -827,7 +827,7 @@ ...@@ -827,7 +827,7 @@
<listitem> <listitem>
<para> <para>
Add boolean variable <link Add Boolean variable <link
linkend="guc-bonjour"><varname>bonjour</></link>, which linkend="guc-bonjour"><varname>bonjour</></link>, which
controls whether a Bonjour-enabled binary advertises controls whether a Bonjour-enabled binary advertises
itself via <productname>Bonjour</> (Tom Lane) itself via <productname>Bonjour</> (Tom Lane)
...@@ -840,7 +840,7 @@ ...@@ -840,7 +840,7 @@
<listitem> <listitem>
<para> <para>
Add boolean variable <link Add Boolean variable <link
linkend="guc-enable-material"><varname>enable_material</></link>, which linkend="guc-enable-material"><varname>enable_material</></link>, which
controls the use of materialize nodes in the optimizer controls the use of materialize nodes in the optimizer
(Robert Haas) (Robert Haas)
...@@ -1390,7 +1390,7 @@ ...@@ -1390,7 +1390,7 @@
<listitem> <listitem>
<para> <para>
Add <literal>point_ops</> opclass for GiST (Teodor Sigaev) Add <literal>point_ops</> operator class for GiST (Teodor Sigaev)
</para> </para>
<para> <para>
...@@ -1433,7 +1433,7 @@ ...@@ -1433,7 +1433,7 @@
<para> <para>
The variable <link The variable <link
linkend="guc-bytea-output">bytea_output</link> controls linkend="guc-bytea-output"><varname>bytea_output</></link> controls
if hex (default) or octal escapes are used for <type>bytea</> if hex (default) or octal escapes are used for <type>bytea</>
output. (SWITCH DEFAULT FOR BETA? PETER) Libpq's output. (SWITCH DEFAULT FOR BETA? PETER) Libpq's
<function>PQescapeByteaConn()</> now uses the hex format <function>PQescapeByteaConn()</> now uses the hex format
...@@ -1516,8 +1516,8 @@ ...@@ -1516,8 +1516,8 @@
<para> <para>
Previously, only <acronym>ASCII</> characters and single-byte Previously, only <acronym>ASCII</> characters and single-byte
encodings worked properly. Other multi-byte, non-<acronym>UTF-8</> encodings worked properly. Multibyte encodings other than <acronym>UTF-8</>
encodings are still broken for case-insensitive regular expression are still broken for case-insensitive regular expression
matching. matching.
</para> </para>
</listitem> </listitem>
...@@ -1868,14 +1868,14 @@ ...@@ -1868,14 +1868,14 @@
<listitem> <listitem>
<para> <para>
Add server variable <link Add server variable <link
linkend="guc-plperl-on-init">plperl.on_init</link> to linkend="guc-plperl-on-init"><varname>plperl.on_init</></link> to
specify a PL/Perl Perl initialization function (Tim specify a PL/Perl Perl initialization function (Tim
Bunce) Bunce)
</para> </para>
<para> <para>
<link <link
linkend="guc-plperl-on-plperl-init">plperl.on_plperl_init</link> linkend="guc-plperl-on-plperl-init"><varname>plperl.on_plperl_init</></link>
and <varname>plperl.on_plperlu_init</> are also available and <varname>plperl.on_plperlu_init</> are also available
for trusted/untrusted-specific initialization. for trusted/untrusted-specific initialization.
</para> </para>
...@@ -1904,7 +1904,7 @@ ...@@ -1904,7 +1904,7 @@
<para> <para>
This can be globally enabled with the server variable <link This can be globally enabled with the server variable <link
linkend="guc-plperl-use-strict">plperl.use_strict</link>. linkend="guc-plperl-use-strict"><varname>plperl.use_strict</></link>.
</para> </para>
</listitem> </listitem>
...@@ -1965,8 +1965,8 @@ ...@@ -1965,8 +1965,8 @@
<para> <para>
<type>Bytea</> values passed into PL/Python now are represented as <type>Bytea</> values passed into PL/Python now are represented as
binary, rather than the Postgres <type>bytea</> text format. Null binary, rather than the PostgreSQL <type>bytea</> text format. Null
bytes are now also output properly from PL/Python. <type>Boolean</> bytes are now also output properly from PL/Python. <type>boolean</>
and <type>numeric</> value passing in PL/Python was also improved. and <type>numeric</> value passing in PL/Python was also improved.
</para> </para>
</listitem> </listitem>
...@@ -2489,7 +2489,7 @@ ...@@ -2489,7 +2489,7 @@
<para> <para>
These are similar to the existing <literal>all</>, <literal>install</>, These are similar to the existing <literal>all</>, <literal>install</>,
and <literal>installcheck</> targets, but they build <acronym>HTML</> and <literal>installcheck</> targets, but they build <acronym>HTML</>
documentation, build and test <filename>/contrib</>, and test documentation, build and test <filename>contrib</>, and test
server-side languages and <application>ecpg</>. server-side languages and <application>ecpg</>.
</para> </para>
</listitem> </listitem>
...@@ -2582,7 +2582,7 @@ ...@@ -2582,7 +2582,7 @@
<listitem> <listitem>
<para> <para>
Allow multi-processor compilation using <productname>Microsoft Visual Allow multiprocessor compilation using <productname>Microsoft Visual
C</> (Magnus Hagander) C</> (Magnus Hagander)
</para> </para>
</listitem> </listitem>
...@@ -2647,7 +2647,7 @@ ...@@ -2647,7 +2647,7 @@
<listitem> <listitem>
<para> <para>
Improve source code test coverage, including /contrib, PL/Python, Improve source code test coverage, including <filename>contrib</>, PL/Python,
and PL/Perl (Peter Eisentraut, Andrew Dunstan) and PL/Perl (Peter Eisentraut, Andrew Dunstan)
</para> </para>
</listitem> </listitem>
...@@ -2839,7 +2839,7 @@ ...@@ -2839,7 +2839,7 @@
<listitem> <listitem>
<para> <para>
Add <link linkend="pgupgrade"><filename>/contrib/pg_upgrade</></link> Add <link linkend="pgupgrade"><filename>contrib/pg_upgrade</></link>
to support in-place upgrades (Bruce Momjian) to support in-place upgrades (Bruce Momjian)
</para> </para>
...@@ -2894,8 +2894,8 @@ ...@@ -2894,8 +2894,8 @@
<listitem> <listitem>
<para> <para>
Add multi-threaded option (<option>-j</>) to <link Add multithreaded option (<option>-j</>) to <link
linkend="pgbench"><filename>/contrib/pgbench</></link> linkend="pgbench"><filename>contrib/pgbench</></link>
(Itagaki Takahiro) (Itagaki Takahiro)
</para> </para>
...@@ -2908,7 +2908,7 @@ ...@@ -2908,7 +2908,7 @@
<para> <para>
Add <command>\shell</> and <command>\setshell</> meta Add <command>\shell</> and <command>\setshell</> meta
commands to <link commands to <link
linkend="pgbench"><filename>/contrib/pgbench</></link> linkend="pgbench"><filename>contrib/pgbench</></link>
(Michael Paquier) (Michael Paquier)
</para> </para>
</listitem> </listitem>
...@@ -2916,7 +2916,7 @@ ...@@ -2916,7 +2916,7 @@
<listitem> <listitem>
<para> <para>
New features for <link New features for <link
linkend="dict-xsyn"><filename>/contrib/dict_xsyn</></link> linkend="dict-xsyn"><filename>contrib/dict_xsyn</></link>
(Sergey Karpov) (Sergey Karpov)
</para> </para>
...@@ -2929,7 +2929,7 @@ ...@@ -2929,7 +2929,7 @@
<listitem> <listitem>
<para> <para>
Add full text dictionary <link Add full text dictionary <link
linkend="unaccent"><filename>/contrib/unaccent</></link> linkend="unaccent"><filename>contrib/unaccent</></link>
(Teodor Sigaev) (Teodor Sigaev)
</para> </para>
...@@ -2943,17 +2943,17 @@ ...@@ -2943,17 +2943,17 @@
<para> <para>
Add <link Add <link
linkend="CONTRIB-DBLINK-GET-NOTIFY"><function>dblink_get_notify()</></link> linkend="CONTRIB-DBLINK-GET-NOTIFY"><function>dblink_get_notify()</></link>
to <filename>/contrib/dblink</> (Marcus Kempe) to <filename>contrib/dblink</> (Marcus Kempe)
</para> </para>
<para> <para>
This allows async notifications in <productname>dblink</>. This allows asynchronous notifications in <productname>dblink</>.
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Improve <filename>/contrib/dblink</>s handling of dropped columns Improve <filename>contrib/dblink</>s handling of dropped columns
(Tom Lane) (Tom Lane)
</para> </para>
...@@ -2967,22 +2967,22 @@ ...@@ -2967,22 +2967,22 @@
<listitem> <listitem>
<para> <para>
Greatly increase <link Greatly increase <link
linkend="hstore"><filename>/contrib/hstore</></link>'s linkend="hstore"><filename>contrib/hstore</></link>'s
length limit and add btree and hash abilities so <literal>GROUP length limit and add B-tree and hash abilities so <literal>GROUP
BY</> and <literal>DISTINCT</> operations are possible BY</> and <literal>DISTINCT</> operations are possible
(Andrew Gierth) (Andrew Gierth)
</para> </para>
<para> <para>
New functions and operators were also added. These improvements New functions and operators were also added. These improvements
make HStore a full-functional key-value store embedded in PostgreSQL. make hstore a full-functional key-value store embedded in PostgreSQL.
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Add <link Add <link
linkend="passwordcheck"><filename>/contrib/passwordcheck</></link> linkend="passwordcheck"><filename>contrib/passwordcheck</></link>
which can check the strength of assigned passwords (Laurenz which can check the strength of assigned passwords (Laurenz
Albe) Albe)
</para> </para>
...@@ -2996,7 +2996,7 @@ ...@@ -2996,7 +2996,7 @@
<listitem> <listitem>
<para> <para>
Add <link Add <link
linkend="pgarchivecleanup"><filename>/contrib/pg_archivecleanup</></link> linkend="pgarchivecleanup"><filename>contrib/pg_archivecleanup</></link>
tool (Simon Riggs) tool (Simon Riggs)
</para> </para>
...@@ -3009,7 +3009,7 @@ ...@@ -3009,7 +3009,7 @@
<listitem> <listitem>
<para> <para>
Add query text to <link Add query text to <link
linkend="auto-explain"><filename>/contrib/auto_explain</></link> linkend="auto-explain"><filename>contrib/auto_explain</></link>
output (Andrew Dunstan) output (Andrew Dunstan)
</para> </para>
</listitem> </listitem>
...@@ -3017,7 +3017,7 @@ ...@@ -3017,7 +3017,7 @@
<listitem> <listitem>
<para> <para>
Add buffer access counters to <link Add buffer access counters to <link
linkend="pgstatstatements"><filename>/contrib/pg_stat_statements</></link> linkend="pgstatstatements"><filename>contrib/pg_stat_statements</></link>
(Itagaki Takahiro) (Itagaki Takahiro)
</para> </para>
</listitem> </listitem>
...@@ -3025,7 +3025,7 @@ ...@@ -3025,7 +3025,7 @@
<listitem> <listitem>
<para> <para>
Update <link Update <link
linkend="server-start"><filename>/contrib/start-scripts/linux</></link> linkend="server-start"><filename>contrib/start-scripts/linux</></link>
to use <filename>/proc/self/oom_adj</> to disable the to use <filename>/proc/self/oom_adj</> to disable the
<link linkend="linux-memory-overcommit"><productname>Linux</> <link linkend="linux-memory-overcommit"><productname>Linux</>
out-of-memory</link> (<acronym>OOM</>) killer (Alex out-of-memory</link> (<acronym>OOM</>) killer (Alex
......
<!-- $PostgreSQL: pgsql/doc/src/sgml/release.sgml,v 1.638 2010/03/21 22:12:27 momjian Exp $ --> <!-- $PostgreSQL: pgsql/doc/src/sgml/release.sgml,v 1.639 2010/08/17 04:37:21 petere Exp $ -->
<!-- <!--
Typical markup: Typical markup:
...@@ -51,7 +51,7 @@ can be created without links to the main documentation. Don't use <xref>. ...@@ -51,7 +51,7 @@ can be created without links to the main documentation. Don't use <xref>.
A complete list of changes for each release can be obtained by A complete list of changes for each release can be obtained by
viewing the <link linkend="cvs">CVS</link> logs for each release. viewing the <link linkend="cvs">CVS</link> logs for each release.
The <ulink The <ulink
url="http://archives.postgresql.org/pgsql-committers/">pgsql-committers url="http://archives.postgresql.org/pgsql-committers/"><literal>pgsql-committers</literal>
email list</ulink> records all source code changes as well. There is also email list</ulink> records all source code changes as well. There is also
a <ulink url="http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/">web a <ulink url="http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/">web
interface</ulink> that shows changes to specific files. interface</ulink> that shows changes to specific files.
......
<!-- $PostgreSQL: pgsql/doc/src/sgml/seg.sgml,v 1.8 2010/08/10 20:42:01 petere Exp $ --> <!-- $PostgreSQL: pgsql/doc/src/sgml/seg.sgml,v 1.9 2010/08/17 04:37:21 petere Exp $ -->
<sect1 id="seg"> <sect1 id="seg">
<title>seg</title> <title>seg</title>
...@@ -237,7 +237,7 @@ test=> select '6.25 .. 6.50'::seg as "pH"; ...@@ -237,7 +237,7 @@ test=> select '6.25 .. 6.50'::seg as "pH";
<para> <para>
The <filename>seg</> module includes a GiST index operator class for The <filename>seg</> module includes a GiST index operator class for
<type>seg</> values. <type>seg</> values.
The operators supported by the GiST opclass are shown in <xref linkend="seg-gist-operators">. The operators supported by the GiST operator class are shown in <xref linkend="seg-gist-operators">.
</para> </para>
<table id="seg-gist-operators"> <table id="seg-gist-operators">
...@@ -308,7 +308,7 @@ test=> select '6.25 .. 6.50'::seg as "pH"; ...@@ -308,7 +308,7 @@ test=> select '6.25 .. 6.50'::seg as "pH";
respectively called <literal>@</> and <literal>~</>. These names are still available, but are respectively called <literal>@</> and <literal>~</>. These names are still available, but are
deprecated and will eventually be retired. Notice that the old names deprecated and will eventually be retired. Notice that the old names
are reversed from the convention formerly followed by the core geometric are reversed from the convention formerly followed by the core geometric
datatypes!) data types!)
</para> </para>
<para> <para>
......
<!-- $PostgreSQL: pgsql/doc/src/sgml/spi.sgml,v 1.67 2010/04/03 07:22:55 petere Exp $ --> <!-- $PostgreSQL: pgsql/doc/src/sgml/spi.sgml,v 1.68 2010/08/17 04:37:21 petere Exp $ -->
<chapter id="spi"> <chapter id="spi">
<title>Server Programming Interface</title> <title>Server Programming Interface</title>
...@@ -987,7 +987,7 @@ SPIPlanPtr SPI_prepare_cursor(const char * <parameter>command</parameter>, int < ...@@ -987,7 +987,7 @@ SPIPlanPtr SPI_prepare_cursor(const char * <parameter>command</parameter>, int <
<para> <para>
<function>SPI_prepare_cursor</function> is identical to <function>SPI_prepare_cursor</function> is identical to
<function>SPI_prepare</function>, except that it also allows specification <function>SPI_prepare</function>, except that it also allows specification
of the planner's <quote>cursor options</> parameter. This is a bitmask of the planner's <quote>cursor options</> parameter. This is a bit mask
having the values shown in <filename>nodes/parsenodes.h</filename> having the values shown in <filename>nodes/parsenodes.h</filename>
for the <structfield>options</> field of <structname>DeclareCursorStmt</>. for the <structfield>options</> field of <structname>DeclareCursorStmt</>.
<function>SPI_prepare</function> always takes the cursor options as zero. <function>SPI_prepare</function> always takes the cursor options as zero.
...@@ -1030,7 +1030,7 @@ SPIPlanPtr SPI_prepare_cursor(const char * <parameter>command</parameter>, int < ...@@ -1030,7 +1030,7 @@ SPIPlanPtr SPI_prepare_cursor(const char * <parameter>command</parameter>, int <
<term><literal>int <parameter>cursorOptions</parameter></literal></term> <term><literal>int <parameter>cursorOptions</parameter></literal></term>
<listitem> <listitem>
<para> <para>
integer bitmask of cursor options; zero produces default behavior integer bit mask of cursor options; zero produces default behavior
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
...@@ -1130,7 +1130,7 @@ SPIPlanPtr SPI_prepare_params(const char * <parameter>command</parameter>, ...@@ -1130,7 +1130,7 @@ SPIPlanPtr SPI_prepare_params(const char * <parameter>command</parameter>,
<term><literal>int <parameter>cursorOptions</parameter></literal></term> <term><literal>int <parameter>cursorOptions</parameter></literal></term>
<listitem> <listitem>
<para> <para>
integer bitmask of cursor options; zero produces default behavior integer bit mask of cursor options; zero produces default behavior
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
...@@ -1925,7 +1925,7 @@ Portal SPI_cursor_open_with_args(const char *<parameter>name</parameter>, ...@@ -1925,7 +1925,7 @@ Portal SPI_cursor_open_with_args(const char *<parameter>name</parameter>,
<term><literal>int <parameter>cursorOptions</parameter></literal></term> <term><literal>int <parameter>cursorOptions</parameter></literal></term>
<listitem> <listitem>
<para> <para>
integer bitmask of cursor options; zero produces default behavior integer bit mask of cursor options; zero produces default behavior
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
......
<!-- $PostgreSQL: pgsql/doc/src/sgml/storage.sgml,v 1.33 2010/08/13 20:10:50 rhaas Exp $ --> <!-- $PostgreSQL: pgsql/doc/src/sgml/storage.sgml,v 1.34 2010/08/17 04:37:21 petere Exp $ -->
<chapter id="storage"> <chapter id="storage">
...@@ -821,7 +821,7 @@ data. Empty in ordinary tables.</entry> ...@@ -821,7 +821,7 @@ data. Empty in ordinary tables.</entry>
the next. Then make sure you have the right alignment. If the field is a the next. Then make sure you have the right alignment. If the field is a
fixed width field, then all the bytes are simply placed. If it's a fixed width field, then all the bytes are simply placed. If it's a
variable length field (attlen = -1) then it's a bit more complicated. variable length field (attlen = -1) then it's a bit more complicated.
All variable-length datatypes share the common header structure All variable-length data types share the common header structure
<type>struct varlena</type>, which includes the total length of the stored <type>struct varlena</type>, which includes the total length of the stored
value and some flag bits. Depending on the flags, the data can be either value and some flag bits. Depending on the flags, the data can be either
inline or in a <acronym>TOAST</> table; inline or in a <acronym>TOAST</> table;
......
<!-- $PostgreSQL: pgsql/doc/src/sgml/tablefunc.sgml,v 1.6 2010/08/10 20:42:01 petere Exp $ --> <!-- $PostgreSQL: pgsql/doc/src/sgml/tablefunc.sgml,v 1.7 2010/08/17 04:37:21 petere Exp $ -->
<sect1 id="tablefunc"> <sect1 id="tablefunc">
<title>tablefunc</title> <title>tablefunc</title>
...@@ -46,7 +46,7 @@ ...@@ -46,7 +46,7 @@
<entry> <entry>
Produces a <quote>pivot table</> containing Produces a <quote>pivot table</> containing
row names plus <replaceable>N</> value columns, where row names plus <replaceable>N</> value columns, where
<replaceable>N</> is determined by the rowtype specified in the calling <replaceable>N</> is determined by the row type specified in the calling
query query
</entry> </entry>
</row> </row>
...@@ -219,9 +219,9 @@ SELECT * FROM crosstab('...') AS ct(row_name text, category_1 text, category_2 t ...@@ -219,9 +219,9 @@ SELECT * FROM crosstab('...') AS ct(row_name text, category_1 text, category_2 t
<para> <para>
The <literal>FROM</> clause must define the output as one The <literal>FROM</> clause must define the output as one
<structfield>row_name</> column (of the same datatype as the first result <structfield>row_name</> column (of the same data type as the first result
column of the SQL query) followed by N <structfield>value</> columns column of the SQL query) followed by N <structfield>value</> columns
(all of the same datatype as the third result column of the SQL query). (all of the same data type as the third result column of the SQL query).
You can set up as many output value columns as you wish. The names of the You can set up as many output value columns as you wish. The names of the
output columns are up to you. output columns are up to you.
</para> </para>
...@@ -299,7 +299,7 @@ crosstab<replaceable>N</>(text sql) ...@@ -299,7 +299,7 @@ crosstab<replaceable>N</>(text sql)
so that you need not write out column names and types in the calling so that you need not write out column names and types in the calling
<command>SELECT</> query. The <filename>tablefunc</> module includes <command>SELECT</> query. The <filename>tablefunc</> module includes
<function>crosstab2</>, <function>crosstab3</>, and <function>crosstab2</>, <function>crosstab3</>, and
<function>crosstab4</>, whose output rowtypes are defined as <function>crosstab4</>, whose output row types are defined as
</para> </para>
<programlisting> <programlisting>
......
<!-- $PostgreSQL: pgsql/doc/src/sgml/trigger.sgml,v 1.63 2010/04/03 07:22:56 petere Exp $ --> <!-- $PostgreSQL: pgsql/doc/src/sgml/trigger.sgml,v 1.64 2010/08/17 04:37:21 petere Exp $ -->
<chapter id="triggers"> <chapter id="triggers">
<title>Triggers</title> <title>Triggers</title>
...@@ -141,7 +141,7 @@ ...@@ -141,7 +141,7 @@
</para> </para>
<para> <para>
A trigger definition can also specify a boolean <literal>WHEN</> A trigger definition can also specify a Boolean <literal>WHEN</>
condition, which will be tested to see whether the trigger should condition, which will be tested to see whether the trigger should
be fired. In row-level triggers the <literal>WHEN</> condition can be fired. In row-level triggers the <literal>WHEN</> condition can
examine the old and/or new values of columns of the row. (Statement-level examine the old and/or new values of columns of the row. (Statement-level
......
...@@ -9,7 +9,7 @@ ...@@ -9,7 +9,7 @@
<filename>unaccent</> removes accents (diacritic signs) from a lexeme. <filename>unaccent</> removes accents (diacritic signs) from a lexeme.
It's a filtering dictionary, that means its output is It's a filtering dictionary, that means its output is
always passed to the next dictionary (if any), contrary to the standard always passed to the next dictionary (if any), contrary to the standard
behavior. Currently, it supports most important accents from european behavior. Currently, it supports most important accents from European
languages. languages.
</para> </para>
......
<!-- $PostgreSQL: pgsql/doc/src/sgml/vacuumlo.sgml,v 1.5 2010/07/29 19:34:40 petere Exp $ --> <!-- $PostgreSQL: pgsql/doc/src/sgml/vacuumlo.sgml,v 1.6 2010/08/17 04:37:21 petere Exp $ -->
<sect1 id="vacuumlo"> <sect1 id="vacuumlo">
<title>vacuumlo</title> <title>vacuumlo</title>
...@@ -52,7 +52,7 @@ vacuumlo [options] database [database2 ... databaseN] ...@@ -52,7 +52,7 @@ vacuumlo [options] database [database2 ... databaseN]
<varlistentry> <varlistentry>
<term><option>-U</option> <replaceable>username</></term> <term><option>-U</option> <replaceable>username</></term>
<listitem> <listitem>
<para>Username to connect as.</para> <para>User name to connect as.</para>
</listitem> </listitem>
</varlistentry> </varlistentry>
......
<!-- $PostgreSQL: pgsql/doc/src/sgml/wal.sgml,v 1.71 2010/07/27 19:01:16 petere Exp $ --> <!-- $PostgreSQL: pgsql/doc/src/sgml/wal.sgml,v 1.72 2010/08/17 04:37:21 petere Exp $ -->
<chapter id="wal"> <chapter id="wal">
<title>Reliability and the Write-Ahead Log</title> <title>Reliability and the Write-Ahead Log</title>
...@@ -116,7 +116,7 @@ ...@@ -116,7 +116,7 @@
write caches. At the drive level, disable write-back caching if the write caches. At the drive level, disable write-back caching if the
drive cannot guarantee the data will be written before shutdown. drive cannot guarantee the data will be written before shutdown.
You can test for reliable I/O subsystem behavior using <ulink You can test for reliable I/O subsystem behavior using <ulink
url="http://brad.livejournal.com/2116715.html">diskchecker.pl</ulink>. url="http://brad.livejournal.com/2116715.html"><filename>diskchecker.pl</filename></ulink>.
</para> </para>
<para> <para>
......
<!-- $PostgreSQL: pgsql/doc/src/sgml/xindex.sgml,v 1.66 2010/02/24 15:54:31 momjian Exp $ --> <!-- $PostgreSQL: pgsql/doc/src/sgml/xindex.sgml,v 1.67 2010/08/17 04:37:21 petere Exp $ -->
<sect1 id="xindex"> <sect1 id="xindex">
<title>Interfacing Extensions To Indexes</title> <title>Interfacing Extensions To Indexes</title>
...@@ -416,39 +416,47 @@ ...@@ -416,39 +416,47 @@
<table tocentry="1" id="xindex-gin-support-table"> <table tocentry="1" id="xindex-gin-support-table">
<title>GIN Support Functions</title> <title>GIN Support Functions</title>
<tgroup cols="2"> <tgroup cols="3">
<thead> <thead>
<row> <row>
<entry>Function</entry> <entry>Function</entry>
<entry>Description</entry>
<entry>Support Number</entry> <entry>Support Number</entry>
</row> </row>
</thead> </thead>
<tbody> <tbody>
<row> <row>
<entry><function>compare</></entry>
<entry> <entry>
compare - compare two keys and return an integer less than zero, zero, compare two keys and return an integer less than zero, zero,
or greater than zero, indicating whether the first key is less than, or greater than zero, indicating whether the first key is less than,
equal to, or greater than the second equal to, or greater than the second
</entry> </entry>
<entry>1</entry> <entry>1</entry>
</row> </row>
<row> <row>
<entry>extractValue - extract keys from a value to be indexed</entry> <entry><function>extractValue</></entry>
<entry>extract keys from a value to be indexed</entry>
<entry>2</entry> <entry>2</entry>
</row> </row>
<row> <row>
<entry>extractQuery - extract keys from a query condition</entry> <entry><function>extractQuery</></entry>
<entry>extract keys from a query condition</entry>
<entry>3</entry> <entry>3</entry>
</row> </row>
<row> <row>
<entry>consistent - determine whether value matches query condition</entry> <entry><function>consistent</></entry>
<entry>determine whether value matches query condition</entry>
<entry>4</entry> <entry>4</entry>
</row> </row>
<row> <row>
<entry>comparePartial - (optional method) compare partial key from <entry><function>comparePartial</></entry>
<entry>
(optional method) compare partial key from
query and key from index, and return an integer less than zero, zero, query and key from index, and return an integer less than zero, zero,
or greater than zero, indicating whether GIN should ignore this index or greater than zero, indicating whether GIN should ignore this index
entry, treat the entry as a match, or stop the index scan</entry> entry, treat the entry as a match, or stop the index scan
</entry>
<entry>5</entry> <entry>5</entry>
</row> </row>
</tbody> </tbody>
......
<!-- $PostgreSQL: pgsql/doc/src/sgml/xml2.sgml,v 1.10 2010/08/10 20:42:01 petere Exp $ --> <!-- $PostgreSQL: pgsql/doc/src/sgml/xml2.sgml,v 1.11 2010/08/17 04:37:21 petere Exp $ -->
<sect1 id="xml2"> <sect1 id="xml2">
<title>xml2</title> <title>xml2</title>
...@@ -90,7 +90,7 @@ xpath_nodeset(document, query, toptag, itemtag) returns text ...@@ -90,7 +90,7 @@ xpath_nodeset(document, query, toptag, itemtag) returns text
&lt;itemtag&gt;Value 2....&lt;/itemtag&gt; &lt;itemtag&gt;Value 2....&lt;/itemtag&gt;
&lt;/toptag&gt; &lt;/toptag&gt;
</synopsis> </synopsis>
If either toptag or itemtag is an empty string, the relevant tag is omitted. If either <literal>toptag</> or <literal>itemtag</> is an empty string, the relevant tag is omitted.
</para> </para>
</entry> </entry>
</row> </row>
...@@ -102,7 +102,7 @@ xpath_nodeset(document, query) returns text ...@@ -102,7 +102,7 @@ xpath_nodeset(document, query) returns text
</entry> </entry>
<entry> <entry>
<para> <para>
Like xpath_nodeset(document,query,toptag,itemtag) but result omits both tags. Like <function>xpath_nodeset(document, query, toptag, itemtag)</> but result omits both tags.
</para> </para>
</entry> </entry>
</row> </row>
...@@ -114,7 +114,7 @@ xpath_nodeset(document, query, itemtag) returns text ...@@ -114,7 +114,7 @@ xpath_nodeset(document, query, itemtag) returns text
</entry> </entry>
<entry> <entry>
<para> <para>
Like xpath_nodeset(document,query,toptag,itemtag) but result omits toptag. Like <function>xpath_nodeset(document, query, toptag, itemtag)</> but result omits toptag.
</para> </para>
</entry> </entry>
</row> </row>
...@@ -295,7 +295,7 @@ WHERE t.author_id = p.person_id; ...@@ -295,7 +295,7 @@ WHERE t.author_id = p.person_id;
may not be the same as the number of input documents. The first row may not be the same as the number of input documents. The first row
returned contains the first result from each query, the second row the returned contains the first result from each query, the second row the
second result from each query. If one of the queries has fewer values second result from each query. If one of the queries has fewer values
than the others, NULLs will be returned instead. than the others, null values will be returned instead.
</para> </para>
<para> <para>
...@@ -337,8 +337,8 @@ WHERE id = 1 ORDER BY doc_num, line_num ...@@ -337,8 +337,8 @@ WHERE id = 1 ORDER BY doc_num, line_num
</para> </para>
<para> <para>
To get doc_num on every line, the solution is to use two invocations To get <literal>doc_num</> on every line, the solution is to use two invocations
of xpath_table and join the results: of <function>xpath_table</> and join the results:
<programlisting> <programlisting>
SELECT t.*,i.doc_num FROM SELECT t.*,i.doc_num FROM
...@@ -377,7 +377,7 @@ xslt_process(text document, text stylesheet, text paramlist) returns text ...@@ -377,7 +377,7 @@ xslt_process(text document, text stylesheet, text paramlist) returns text
<para> <para>
This function applies the XSL stylesheet to the document and returns This function applies the XSL stylesheet to the document and returns
the transformed result. The paramlist is a list of parameter the transformed result. The <literal>paramlist</> is a list of parameter
assignments to be used in the transformation, specified in the form assignments to be used in the transformation, specified in the form
<literal>a=1,b=2</>. Note that the <literal>a=1,b=2</>. Note that the
parameter parsing is very simple-minded: parameter values cannot parameter parsing is very simple-minded: parameter values cannot
......
<!-- $PostgreSQL: pgsql/doc/src/sgml/xoper.sgml,v 1.43 2007/11/28 15:42:31 petere Exp $ --> <!-- $PostgreSQL: pgsql/doc/src/sgml/xoper.sgml,v 1.44 2010/08/17 04:37:21 petere Exp $ -->
<sect1 id="xoper"> <sect1 id="xoper">
<title>User-Defined Operators</title> <title>User-Defined Operators</title>
...@@ -435,7 +435,7 @@ table1.column1 OP table2.column2 ...@@ -435,7 +435,7 @@ table1.column1 OP table2.column2
<para> <para>
To be marked <literal>MERGES</literal>, the join operator must appear To be marked <literal>MERGES</literal>, the join operator must appear
as an equality member of a btree index operator family. as an equality member of a <literal>btree</> index operator family.
This is not enforced when you create This is not enforced when you create
the operator, since of course the referencing operator family couldn't the operator, since of course the referencing operator family couldn't
exist yet. But the operator will not actually be used for merge joins exist yet. But the operator will not actually be used for merge joins
...@@ -450,7 +450,7 @@ table1.column1 OP table2.column2 ...@@ -450,7 +450,7 @@ table1.column1 OP table2.column2
if they are different) that appears in the same operator family. if they are different) that appears in the same operator family.
If this is not the case, planner errors might occur when the operator If this is not the case, planner errors might occur when the operator
is used. Also, it is a good idea (but not strictly required) for is used. Also, it is a good idea (but not strictly required) for
a btree operator family that supports multiple data types to provide a <literal>btree</> operator family that supports multiple data types to provide
equality operators for every combination of the data types; this equality operators for every combination of the data types; this
allows better optimization. allows better optimization.
</para> </para>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment