Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
P
Postgres FD Implementation
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Abuhujair Javed
Postgres FD Implementation
Commits
5194b9d0
Commit
5194b9d0
authored
Aug 17, 2010
by
Peter Eisentraut
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Spell and markup checking
parent
ee0e525b
Changes
70
Show whitespace changes
Inline
Side-by-side
Showing
70 changed files
with
728 additions
and
731 deletions
+728
-731
doc/src/sgml/arch-dev.sgml
doc/src/sgml/arch-dev.sgml
+2
-2
doc/src/sgml/bki.sgml
doc/src/sgml/bki.sgml
+2
-2
doc/src/sgml/btree-gin.sgml
doc/src/sgml/btree-gin.sgml
+6
-6
doc/src/sgml/btree-gist.sgml
doc/src/sgml/btree-gist.sgml
+4
-4
doc/src/sgml/catalogs.sgml
doc/src/sgml/catalogs.sgml
+136
-130
doc/src/sgml/chkpass.sgml
doc/src/sgml/chkpass.sgml
+3
-3
doc/src/sgml/citext.sgml
doc/src/sgml/citext.sgml
+5
-5
doc/src/sgml/client-auth.sgml
doc/src/sgml/client-auth.sgml
+33
-33
doc/src/sgml/config.sgml
doc/src/sgml/config.sgml
+11
-12
doc/src/sgml/contrib-spi.sgml
doc/src/sgml/contrib-spi.sgml
+3
-3
doc/src/sgml/cube.sgml
doc/src/sgml/cube.sgml
+5
-5
doc/src/sgml/cvs.sgml
doc/src/sgml/cvs.sgml
+16
-16
doc/src/sgml/datatype.sgml
doc/src/sgml/datatype.sgml
+2
-2
doc/src/sgml/dblink.sgml
doc/src/sgml/dblink.sgml
+4
-4
doc/src/sgml/diskusage.sgml
doc/src/sgml/diskusage.sgml
+2
-2
doc/src/sgml/docguide.sgml
doc/src/sgml/docguide.sgml
+3
-3
doc/src/sgml/earthdistance.sgml
doc/src/sgml/earthdistance.sgml
+3
-3
doc/src/sgml/ecpg.sgml
doc/src/sgml/ecpg.sgml
+53
-53
doc/src/sgml/external-projects.sgml
doc/src/sgml/external-projects.sgml
+2
-2
doc/src/sgml/func.sgml
doc/src/sgml/func.sgml
+8
-8
doc/src/sgml/fuzzystrmatch.sgml
doc/src/sgml/fuzzystrmatch.sgml
+2
-2
doc/src/sgml/gin.sgml
doc/src/sgml/gin.sgml
+18
-23
doc/src/sgml/gist.sgml
doc/src/sgml/gist.sgml
+12
-12
doc/src/sgml/high-availability.sgml
doc/src/sgml/high-availability.sgml
+8
-8
doc/src/sgml/hstore.sgml
doc/src/sgml/hstore.sgml
+3
-3
doc/src/sgml/indexam.sgml
doc/src/sgml/indexam.sgml
+22
-22
doc/src/sgml/indices.sgml
doc/src/sgml/indices.sgml
+4
-4
doc/src/sgml/installation.sgml
doc/src/sgml/installation.sgml
+4
-4
doc/src/sgml/intarray.sgml
doc/src/sgml/intarray.sgml
+2
-2
doc/src/sgml/isn.sgml
doc/src/sgml/isn.sgml
+3
-3
doc/src/sgml/libpq.sgml
doc/src/sgml/libpq.sgml
+51
-45
doc/src/sgml/lo.sgml
doc/src/sgml/lo.sgml
+2
-2
doc/src/sgml/ltree.sgml
doc/src/sgml/ltree.sgml
+2
-2
doc/src/sgml/monitoring.sgml
doc/src/sgml/monitoring.sgml
+2
-2
doc/src/sgml/oid2name.sgml
doc/src/sgml/oid2name.sgml
+4
-4
doc/src/sgml/pageinspect.sgml
doc/src/sgml/pageinspect.sgml
+5
-5
doc/src/sgml/pgarchivecleanup.sgml
doc/src/sgml/pgarchivecleanup.sgml
+3
-3
doc/src/sgml/pgbench.sgml
doc/src/sgml/pgbench.sgml
+6
-6
doc/src/sgml/pgcrypto.sgml
doc/src/sgml/pgcrypto.sgml
+7
-7
doc/src/sgml/pgfreespacemap.sgml
doc/src/sgml/pgfreespacemap.sgml
+2
-3
doc/src/sgml/pgstandby.sgml
doc/src/sgml/pgstandby.sgml
+3
-3
doc/src/sgml/pgstattuple.sgml
doc/src/sgml/pgstattuple.sgml
+3
-3
doc/src/sgml/pgtrgm.sgml
doc/src/sgml/pgtrgm.sgml
+2
-2
doc/src/sgml/pgupgrade.sgml
doc/src/sgml/pgupgrade.sgml
+130
-146
doc/src/sgml/planstats.sgml
doc/src/sgml/planstats.sgml
+2
-2
doc/src/sgml/plperl.sgml
doc/src/sgml/plperl.sgml
+3
-3
doc/src/sgml/plpgsql.sgml
doc/src/sgml/plpgsql.sgml
+2
-2
doc/src/sgml/ref/alter_opfamily.sgml
doc/src/sgml/ref/alter_opfamily.sgml
+2
-2
doc/src/sgml/ref/alter_role.sgml
doc/src/sgml/ref/alter_role.sgml
+2
-2
doc/src/sgml/ref/create_opclass.sgml
doc/src/sgml/ref/create_opclass.sgml
+2
-2
doc/src/sgml/ref/create_table.sgml
doc/src/sgml/ref/create_table.sgml
+2
-2
doc/src/sgml/ref/create_trigger.sgml
doc/src/sgml/ref/create_trigger.sgml
+2
-2
doc/src/sgml/ref/pg_ctl-ref.sgml
doc/src/sgml/ref/pg_ctl-ref.sgml
+4
-4
doc/src/sgml/ref/pg_dumpall.sgml
doc/src/sgml/ref/pg_dumpall.sgml
+3
-3
doc/src/sgml/ref/pg_restore.sgml
doc/src/sgml/ref/pg_restore.sgml
+2
-2
doc/src/sgml/ref/psql-ref.sgml
doc/src/sgml/ref/psql-ref.sgml
+5
-5
doc/src/sgml/regress.sgml
doc/src/sgml/regress.sgml
+3
-3
doc/src/sgml/release-9.0.sgml
doc/src/sgml/release-9.0.sgml
+40
-40
doc/src/sgml/release.sgml
doc/src/sgml/release.sgml
+2
-2
doc/src/sgml/seg.sgml
doc/src/sgml/seg.sgml
+3
-3
doc/src/sgml/spi.sgml
doc/src/sgml/spi.sgml
+5
-5
doc/src/sgml/storage.sgml
doc/src/sgml/storage.sgml
+2
-2
doc/src/sgml/tablefunc.sgml
doc/src/sgml/tablefunc.sgml
+5
-5
doc/src/sgml/trigger.sgml
doc/src/sgml/trigger.sgml
+2
-2
doc/src/sgml/unaccent.sgml
doc/src/sgml/unaccent.sgml
+1
-1
doc/src/sgml/vacuumlo.sgml
doc/src/sgml/vacuumlo.sgml
+2
-2
doc/src/sgml/wal.sgml
doc/src/sgml/wal.sgml
+2
-2
doc/src/sgml/xindex.sgml
doc/src/sgml/xindex.sgml
+16
-8
doc/src/sgml/xml2.sgml
doc/src/sgml/xml2.sgml
+8
-8
doc/src/sgml/xoper.sgml
doc/src/sgml/xoper.sgml
+3
-3
No files found.
doc/src/sgml/arch-dev.sgml
View file @
5194b9d0
<!-- $PostgreSQL: pgsql/doc/src/sgml/arch-dev.sgml,v 2.3
4 2010/04/03 07:22:52
petere Exp $ -->
<!-- $PostgreSQL: pgsql/doc/src/sgml/arch-dev.sgml,v 2.3
5 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
b
oolean condition)
(discarding rows that do not meet a specified
B
oolean 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
...
...
doc/src/sgml/bki.sgml
View file @
5194b9d0
<!-- $PostgreSQL: pgsql/doc/src/sgml/bki.sgml,v 1.2
3 2010/01/05 01:06:55 tgl
Exp $ -->
<!-- $PostgreSQL: pgsql/doc/src/sgml/bki.sgml,v 1.2
4 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
...
...
doc/src/sgml/btree-gin.sgml
View file @
5194b9d0
<!-- $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-
T
ree equivalent behavior for the data types
implement B-
t
ree 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
b
tree index methods, and they lack one major feature of the
standard
B-
tree index methods, and they lack one major feature of the
standard
b
tree 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
b
tree-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 op
classes than to create
a multi
column 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>
...
...
doc/src/sgml/btree-gist.sgml
View file @
5194b9d0
<!-- $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-
T
ree equivalent behavior for the data types
implement B-
t
ree 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
b
tree index methods, and they lack one major feature of the
standard
B-
tree index methods, and they lack one major feature of the
standard
b
tree 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>
...
...
doc/src/sgml/catalogs.sgml
View file @
5194b9d0
<!-- $PostgreSQL: pgsql/doc/src/sgml/catalogs.sgml,v 2.22
5 2010/04/03 07:22:52
petere Exp $ -->
<!-- $PostgreSQL: pgsql/doc/src/sgml/catalogs.sgml,v 2.22
6 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
b
oolean flags in <structname>pg_class</> are maintained
Several of the
B
oolean 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><</literal> operator
histogram slot would show the <literal><</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>
c
olumn numbers, if trigger is column-specific; otherwise an
<entry>
C
olumn 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>
t
ype of the lockable object:
T
ype 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. N
ULL
if the object is not a general database object
zero. N
ull
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. N
ULL if the lock is held by a prepared transaction
lock. N
ull 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 directiv
es</entry>
helpful when using <literal>include</> directives in configuration fil
es</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. (N
ULL
if
A list of the most common values in the column. (N
ull
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.
(N
ULL
when <structfield>most_common_vals</structfield> is.)
(N
ull
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><</> operator or if the
does not have a <literal><</> 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><</> operator.)
type does not have a <literal><</> 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>
t
rue if table has (or recently had) any indexes</entry>
<entry>
T
rue 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>
t
rue if table has (or once had) rules</entry>
<entry>
T
rue 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>
t
rue if table has (or once had) triggers</entry>
<entry>
T
rue 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>
...
...
doc/src/sgml/chkpass.sgml
View file @
5194b9d0
<!-- $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.
...
...
doc/src/sgml/citext.sgml
View file @
5194b9d0
<!-- $PostgreSQL: pgsql/doc/src/sgml/citext.sgml,v 1.
5 2010/07/29 19:34:4
0 petere Exp $ -->
<!-- $PostgreSQL: pgsql/doc/src/sgml/citext.sgml,v 1.
6 2010/08/17 04:37:2
0 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
b
tree 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.
...
...
doc/src/sgml/client-auth.sgml
View file @
5194b9d0
<!-- $PostgreSQL: pgsql/doc/src/sgml/client-auth.sgml,v 1.14
0 2010/07/29 19:34:4
0 petere Exp $ -->
<!-- $PostgreSQL: pgsql/doc/src/sgml/client-auth.sgml,v 1.14
1 2010/08/17 04:37:2
0 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
user
name to a database user. To use user
name 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>
...
...
doc/src/sgml/config.sgml
View file @
5194b9d0
<!-- $PostgreSQL: pgsql/doc/src/sgml/config.sgml,v 1.30
3 2010/08/03 19:02:21 tgl
Exp $ -->
<!-- $PostgreSQL: pgsql/doc/src/sgml/config.sgml,v 1.30
4 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
DeadLockT
imeout occurs.
deadlock t
imeout 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
b
tree 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>
...
...
doc/src/sgml/contrib-spi.sgml
View file @
5194b9d0
<!-- $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 — fresh sessions will
is local to the current database session — fresh sessions will
...
...
doc/src/sgml/cube.sgml
View file @
5194b9d0
<!-- $PostgreSQL: pgsql/doc/src/sgml/cube.sgml,v 1.
8 2010/07/29 19:34:4
0 petere Exp $ -->
<!-- $PostgreSQL: pgsql/doc/src/sgml/cube.sgml,v 1.
9 2010/08/17 04:37:2
0 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 op
erator
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
c
artesian projection, i. e., having zeroes
lower-dimensional one to be a
C
artesian 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>
...
...
doc/src/sgml/cvs.sgml
View file @
5194b9d0
<
!-- $PostgreSQL: pgsql/doc/src/sgml/cvs.sgml,v 1.5
2 2009/12/07 19:19:56 mha
Exp $ -->
<
!-- $PostgreSQL: pgsql/doc/src/sgml/cvs.sgml,v 1.5
3 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
>
g
it
</>
is
the
most
flexible
way
to
work
with
the
source
,
and
it
Using
<
productname
>
G
it
</>
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
>
g
it
</>.
lacks
many
of
the
other
advantages
of
<
productname
>
G
it
</>.
</
para
>
</
para
>
<
para
>
<
para
>
Our
W
iki
,
<
ulink
Our
w
iki
,
<
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
>
g
it
</>
you
will
make
a
copy
of
the
entire
code
repository
With
<
productname
>
G
it
</>
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
>
g
it
</>,
which
you
can
get
You
will
need
an
installed
version
of
<
productname
>
G
it
</>,
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
>
g
it
</>
installed
by
default
,
or
available
in
their
version
of
<
application
>
G
it
</>
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
g
it
repository
,
make
a
clone
of
the
official
mirror
:
To
being
using
the
G
it
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
i
nternet
connection
.
a
while
to
complete
,
especially
if
you
have
a
slow
I
nternet
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
g
it
protocol
.
Just
replace
the
URL
a
firewall
is
blocking
access
to
the
G
it
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
g
it
protocol
,
so
it
will
be
The
HTTP
protocol
is
less
efficient
than
the
G
it
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
>
g
it
</>
can
do
a
lot
more
things
than
just
fetch
the
source
.
For
<
productname
>
G
it
</>
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>
g
it</>
url="http://www.red-bean.com/cvsutils/"></ulink>, or use <productname>
G
it</>
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">
pgbuildf
arm instructions</ulink>.
PostgreSQL Build F
arm instructions</ulink>.
</para>
</para>
</sect1>
</sect1>
</appendix>
</appendix>
doc/src/sgml/datatype.sgml
View file @
5194b9d0
<!-- $PostgreSQL: pgsql/doc/src/sgml/datatype.sgml,v 1.25
6 2010/08/10 20:41:27
petere Exp $ -->
<!-- $PostgreSQL: pgsql/doc/src/sgml/datatype.sgml,v 1.25
7 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
b
oolean operators
searched for, and combines them honoring the
B
oolean operators
<literal>&</literal> (AND), <literal>|</literal> (OR), and
<literal>&</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:
...
...
doc/src/sgml/dblink.sgml
View file @
5194b9d0
<!-- $PostgreSQL: pgsql/doc/src/sgml/dblink.sgml,v 1.1
4 2010/07/29 19:34:4
0 petere Exp $ -->
<!-- $PostgreSQL: pgsql/doc/src/sgml/dblink.sgml,v 1.1
5 2010/08/17 04:37:2
0 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);
...
...
doc/src/sgml/diskusage.sgml
View file @
5194b9d0
<!-- $PostgreSQL: pgsql/doc/src/sgml/diskusage.sgml,v 1.2
0 2010/02/07 20:48:09 tgl
Exp $ -->
<!-- $PostgreSQL: pgsql/doc/src/sgml/diskusage.sgml,v 1.2
1 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>
...
...
doc/src/sgml/docguide.sgml
View file @
5194b9d0
<!-- $PostgreSQL: pgsql/doc/src/sgml/docguide.sgml,v 1.8
5 2010/06/12 09:55:12
petere Exp $ -->
<!-- $PostgreSQL: pgsql/doc/src/sgml/docguide.sgml,v 1.8
6 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 begin
n
ing 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>
...
...
doc/src/sgml/earthdistance.sgml
View file @
5194b9d0
<!-- $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 approp
r
iate.
</para>
</para>
<para>
<para>
...
...
doc/src/sgml/ecpg.sgml
View file @
5194b9d0
<!-- $PostgreSQL: pgsql/doc/src/sgml/ecpg.sgml,v 1.10
3 2010/08/11 19:03:16 rhaas
Exp $ -->
<!-- $PostgreSQL: pgsql/doc/src/sgml/ecpg.sgml,v 1.10
4 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>
fm
t</entry>
<entry>
Forma
t</entry>
<entry>
r
esult</entry>
<entry>
R
esult</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>
fm
t</entry>
<entry>
Forma
t</entry>
<entry>
str
</entry>
<entry>
String
</entry>
<entry>
r
esult</entry>
<entry>
R
esult</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 data
type,
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 run
time library that uses to the cursor name. This means that there's no run
time
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:
...
...
doc/src/sgml/external-projects.sgml
View file @
5194b9d0
<!-- $PostgreSQL: pgsql/doc/src/sgml/external-projects.sgml,v 1.2
0 2010/06/07 02:01:08 itagaki
Exp $ -->
<!-- $PostgreSQL: pgsql/doc/src/sgml/external-projects.sgml,v 1.2
1 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>
...
...
doc/src/sgml/func.sgml
View file @
5194b9d0
<!-- $PostgreSQL: pgsql/doc/src/sgml/func.sgml,v 1.52
8 2010/08/15 21:26:36 tgl
Exp $ -->
<!-- $PostgreSQL: pgsql/doc/src/sgml/func.sgml,v 1.52
9 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-
T
ree comparison function for the element data type.
using the default B-
t
ree 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 sub
query
returns one row with a
b
oolean value.
returns one row with a
B
oolean 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>
>
</>
or
<literal>
>
</>
or
<literal>
>
=
</>
,
<literal>
>
=
</>
,
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-
T
ree operator
can be a row comparison operator if it is a member of a B-
t
ree operator
class, or is the negator of the
<literal>
=
</>
member of a B-
T
ree operator
class, or is the negator of the
<literal>
=
</>
member of a B-
t
ree 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>
...
...
doc/src/sgml/fuzzystrmatch.sgml
View file @
5194b9d0
<!-- $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>
...
...
doc/src/sgml/gin.sgml
View file @
5194b9d0
<!-- $PostgreSQL: pgsql/doc/src/sgml/gin.sgml,v 2.2
0 2010/04/03 07:22:54
petere Exp $ -->
<!-- $PostgreSQL: pgsql/doc/src/sgml/gin.sgml,v 2.2
1 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</>
b
ooleans and store its address at
an array of <literal>*nkeys</>
B
ooleans 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-
T
ree equivalent functionality for several data types</para>
<para>B-
t
ree 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>
doc/src/sgml/gist.sgml
View file @
5194b9d0
<!-- $PostgreSQL: pgsql/doc/src/sgml/gist.sgml,v 1.3
1 2009/06/12 19:48:53 tgl
Exp $ -->
<!-- $PostgreSQL: pgsql/doc/src/sgml/gist.sgml,v 1.3
2 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
b
oolean result; instead it has to store the flag
just return a
B
oolean 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-
T
ree equivalent functionality for several data types</para>
<para>B-
t
ree 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>
...
...
doc/src/sgml/high-availability.sgml
View file @
5194b9d0
<!-- $PostgreSQL: pgsql/doc/src/sgml/high-availability.sgml,v 1.7
8 2010/07/14 22:04:21 tgl
Exp $ -->
<!-- $PostgreSQL: pgsql/doc/src/sgml/high-availability.sgml,v 1.7
9 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
oid
s cannot be assigned, though some <acronym>UUID</> generators may still
New
OID
s 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>
...
...
doc/src/sgml/hstore.sgml
View file @
5194b9d0
<!-- $PostgreSQL: pgsql/doc/src/sgml/hstore.sgml,v 1.1
3 2010/07/29 19:34:4
0 petere Exp $ -->
<!-- $PostgreSQL: pgsql/doc/src/sgml/hstore.sgml,v 1.1
4 2010/08/17 04:37:2
0 petere Exp $ -->
<sect1 id="hstore">
<sect1 id="hstore">
<title>hstore</title>
<title>hstore</title>
...
@@ -214,7 +214,7 @@ key => NULL
...
@@ -214,7 +214,7 @@ key => NULL
and <literal><@</> were called <literal>@</> and <literal>~</>,
and <literal><@</> 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>
...
...
doc/src/sgml/indexam.sgml
View file @
5194b9d0
<!-- $PostgreSQL: pgsql/doc/src/sgml/indexam.sgml,v 2.3
4 2010/07/29 19:34:4
0 petere Exp $ -->
<!-- $PostgreSQL: pgsql/doc/src/sgml/indexam.sgml,v 2.3
5 2010/08/17 04:37:2
0 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
b
oolean result value is significant only when
The function's
B
oolean 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>
...
...
doc/src/sgml/indices.sgml
View file @
5194b9d0
<!-- $PostgreSQL: pgsql/doc/src/sgml/indices.sgml,v 1.8
1 2010/04/03 07:22:54
petere Exp $ -->
<!-- $PostgreSQL: pgsql/doc/src/sgml/indices.sgml,v 1.8
2 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 (
selec
ts) to occur
<productname>PostgreSQL</productname> allows reads (
<command>SELECT</command> statemen
ts) 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 —
creation, but there are several caveats to be aware of —
...
...
doc/src/sgml/installation.sgml
View file @
5194b9d0
<
!-- $PostgreSQL: pgsql/doc/src/sgml/installation.sgml,v 1.35
0 2010/07/29 18:29:52 tgl
Exp $ -->
<
!-- $PostgreSQL: pgsql/doc/src/sgml/installation.sgml,v 1.35
1 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
...
...
doc/src/sgml/intarray.sgml
View file @
5194b9d0
<!-- $PostgreSQL: pgsql/doc/src/sgml/intarray.sgml,v 1.1
1 2010/07/29 19:34:4
0 petere Exp $ -->
<!-- $PostgreSQL: pgsql/doc/src/sgml/intarray.sgml,v 1.1
2 2010/08/17 04:37:2
0 petere Exp $ -->
<sect1 id="intarray">
<sect1 id="intarray">
<title>intarray</title>
<title>intarray</title>
...
@@ -207,7 +207,7 @@
...
@@ -207,7 +207,7 @@
<literal><@</> were respectively called <literal>@</> and <literal>~</>.
<literal><@</> 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>
...
...
doc/src/sgml/isn.sgml
View file @
5194b9d0
<!-- $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 data
types. 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>
...
...
doc/src/sgml/libpq.sgml
View file @
5194b9d0
<!-- $PostgreSQL: pgsql/doc/src/sgml/libpq.sgml,v 1.32
0 2010/08/10 02:56:46 rhaas
Exp $ -->
<!-- $PostgreSQL: pgsql/doc/src/sgml/libpq.sgml,v 1.32
1 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 <
litera
l>NULL</> if the event
but not used directly. It can be <
symbo
l>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>
...
...
doc/src/sgml/lo.sgml
View file @
5194b9d0
<!-- $PostgreSQL: pgsql/doc/src/sgml/lo.sgml,v 1.
4 2010/07/29 19:34:4
0 petere Exp $ -->
<!-- $PostgreSQL: pgsql/doc/src/sgml/lo.sgml,v 1.
5 2010/08/17 04:37:2
0 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 O
B
jects) are stored within a table, and if that entry is changed, the
Large O
b
jects) 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>
...
...
doc/src/sgml/ltree.sgml
View file @
5194b9d0
<!-- $PostgreSQL: pgsql/doc/src/sgml/ltree.sgml,v 1.
5 2010/07/29 19:34:4
0 petere Exp $ -->
<!-- $PostgreSQL: pgsql/doc/src/sgml/ltree.sgml,v 1.
6 2010/08/17 04:37:2
0 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>
...
...
doc/src/sgml/monitoring.sgml
View file @
5194b9d0
<!-- $PostgreSQL: pgsql/doc/src/sgml/monitoring.sgml,v 1.8
3 2010/08/14 02:22:10 rhaas
Exp $ -->
<!-- $PostgreSQL: pgsql/doc/src/sgml/monitoring.sgml,v 1.8
4 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.
...
...
doc/src/sgml/oid2name.sgml
View file @
5194b9d0
<!-- $PostgreSQL: pgsql/doc/src/sgml/oid2name.sgml,v 1.
9 2010/07/29 19:34:4
0 petere Exp $ -->
<!-- $PostgreSQL: pgsql/doc/src/sgml/oid2name.sgml,v 1.
10 2010/08/17 04:37:2
0 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 table
name (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
...
...
doc/src/sgml/pageinspect.sgml
View file @
5194b9d0
<!-- $PostgreSQL: pgsql/doc/src/sgml/pageinspect.sgml,v 1.
7 2010/07/29 19:34:4
0 petere Exp $ -->
<!-- $PostgreSQL: pgsql/doc/src/sgml/pageinspect.sgml,v 1.
8 2010/08/17 04:37:2
0 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
b
tree
<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
b
tree 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
b
tree 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.
...
...
doc/src/sgml/pgarchivecleanup.sgml
View file @
5194b9d0
<!-- $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 file
name, 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 file
name 000000010000003700000010
:
WAL file
name <filename>000000010000003700000010</>
:
<programlisting>
<programlisting>
pg_archivecleanup -d archive 000000010000003700000010.00000020.backup
pg_archivecleanup -d archive 000000010000003700000010.00000020.backup
...
...
doc/src/sgml/pgbench.sgml
View file @
5194b9d0
<!-- $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 log
file. The log
file 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
...
...
doc/src/sgml/pgcrypto.sgml
View file @
5194b9d0
<!-- $PostgreSQL: pgsql/doc/src/sgml/pgcrypto.sgml,v 1.1
2 2010/08/15 01:57:03 rhaas
Exp $ -->
<!-- $PostgreSQL: pgsql/doc/src/sgml/pgcrypto.sgml,v 1.1
3 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 A
scii A
rmor format,
These functions wrap/unwrap binary data into PGP A
SCII-a
rmor 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>
...
...
doc/src/sgml/pgfreespacemap.sgml
View file @
5194b9d0
<!-- $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>
...
...
doc/src/sgml/pgstandby.sgml
View file @
5194b9d0
<!-- $PostgreSQL: pgsql/doc/src/sgml/pgstandby.sgml,v 2.1
2 2010/07/29 19:34:40
petere Exp $ -->
<!-- $PostgreSQL: pgsql/doc/src/sgml/pgstandby.sgml,v 2.1
3 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 ordinar
i
ly 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</>
...
...
doc/src/sgml/pgstattuple.sgml
View file @
5194b9d0
<!-- $PostgreSQL: pgsql/doc/src/sgml/pgstattuple.sgml,v 1.
7 2010/08/10 20:42:0
1 petere Exp $ -->
<!-- $PostgreSQL: pgsql/doc/src/sgml/pgstattuple.sgml,v 1.
8 2010/08/17 04:37:2
1 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
b
tree 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>
...
...
doc/src/sgml/pgtrgm.sgml
View file @
5194b9d0
<!-- $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
b
tree index too).
want a regular
B-
tree index too).
</para>
</para>
<para>
<para>
...
...
doc/src/sgml/pgupgrade.sgml
View file @
5194b9d0
<!-- $PostgreSQL: pgsql/doc/src/sgml/pgupgrade.sgml,v 1.1
3 2010/07/25 03:28:32 momjian
Exp $ -->
<!-- $PostgreSQL: pgsql/doc/src/sgml/pgupgrade.sgml,v 1.1
4 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 Postgre
s
major releases, the internal data storage
regularly added to Postgre
SQL
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 compatib
i
le, 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 install
ation
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 install
ation
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
m
igrating <emphasis>from</> PostgreSQL 8.3</title>
<title>Limitations in
M
igrating <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>
...
...
doc/src/sgml/planstats.sgml
View file @
5194b9d0
<!-- $PostgreSQL: pgsql/doc/src/sgml/planstats.sgml,v 1.1
0 2010/07/13 20:57:19 tgl
Exp $ -->
<!-- $PostgreSQL: pgsql/doc/src/sgml/planstats.sgml,v 1.1
1 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
...
...
doc/src/sgml/plperl.sgml
View file @
5194b9d0
<!-- $PostgreSQL: pgsql/doc/src/sgml/plperl.sgml,v 2.8
7 2010/07/29 19:34:40
petere Exp $ -->
<!-- $PostgreSQL: pgsql/doc/src/sgml/plperl.sgml,v 2.8
8 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>
...
...
doc/src/sgml/plpgsql.sgml
View file @
5194b9d0
<!-- $PostgreSQL: pgsql/doc/src/sgml/plpgsql.sgml,v 1.15
7 2010/08/09 02:25:05 tgl
Exp $ -->
<!-- $PostgreSQL: pgsql/doc/src/sgml/plpgsql.sgml,v 1.15
8 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
b
oolean expressions. Each <literal>WHEN</> clause's
based on truth of
B
oolean 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
...
...
doc/src/sgml/ref/alter_opfamily.sgml
View file @
5194b9d0
<!--
<!--
$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>
...
...
doc/src/sgml/ref/alter_role.sgml
View file @
5194b9d0
<!--
<!--
$PostgreSQL: pgsql/doc/src/sgml/ref/alter_role.sgml,v 1.1
7 2010/04/21 20:54:19 tgl
Exp $
$PostgreSQL: pgsql/doc/src/sgml/ref/alter_role.sgml,v 1.1
8 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
...
...
doc/src/sgml/ref/create_opclass.sgml
View file @
5194b9d0
<!--
<!--
$PostgreSQL: pgsql/doc/src/sgml/ref/create_opclass.sgml,v 1.2
5 2010/04/03 07:22:58
petere Exp $
$PostgreSQL: pgsql/doc/src/sgml/ref/create_opclass.sgml,v 1.2
6 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>
...
...
doc/src/sgml/ref/create_table.sgml
View file @
5194b9d0
<!--
<!--
$PostgreSQL: pgsql/doc/src/sgml/ref/create_table.sgml,v 1.13
0 2010/07/26 01:43:52 momjian
Exp $
$PostgreSQL: pgsql/doc/src/sgml/ref/create_table.sgml,v 1.13
1 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
b
tree 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>
...
...
doc/src/sgml/ref/create_trigger.sgml
View file @
5194b9d0
<!--
<!--
$PostgreSQL: pgsql/doc/src/sgml/ref/create_trigger.sgml,v 1.5
3 2010/04/03 07:23:00
petere Exp $
$PostgreSQL: pgsql/doc/src/sgml/ref/create_trigger.sgml,v 1.5
4 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
b
oolean <literal>WHEN</>
Also, a trigger definition can specify a
B
oolean <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
...
...
doc/src/sgml/ref/pg_ctl-ref.sgml
View file @
5194b9d0
<!--
<!--
$PostgreSQL: pgsql/doc/src/sgml/ref/pg_ctl-ref.sgml,v 1.5
1 2010/06/22 16:19:36 momjian
Exp $
$PostgreSQL: pgsql/doc/src/sgml/ref/pg_ctl-ref.sgml,v 1.5
2 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>
...
...
doc/src/sgml/ref/pg_dumpall.sgml
View file @
5194b9d0
<!--
<!--
$PostgreSQL: pgsql/doc/src/sgml/ref/pg_dumpall.sgml,v 1.8
3 2010/07/22 01:22:33 rhaas
Exp $
$PostgreSQL: pgsql/doc/src/sgml/ref/pg_dumpall.sgml,v 1.8
4 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>
...
...
doc/src/sgml/ref/pg_restore.sgml
View file @
5194b9d0
<!-- $PostgreSQL: pgsql/doc/src/sgml/ref/pg_restore.sgml,v 1.8
7 2010/05/15 18:11:07 tgl
Exp $ -->
<!-- $PostgreSQL: pgsql/doc/src/sgml/ref/pg_restore.sgml,v 1.8
8 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 — using multiple
create indexes, or create constraints — 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>
...
...
doc/src/sgml/ref/psql-ref.sgml
View file @
5194b9d0
<!--
<!--
$PostgreSQL: pgsql/doc/src/sgml/ref/psql-ref.sgml,v 1.2
49 2010/08/14 13:59:49 tgl
Exp $
$PostgreSQL: pgsql/doc/src/sgml/ref/psql-ref.sgml,v 1.2
50 2010/08/17 04:37:21 petere
Exp $
PostgreSQL documentation
PostgreSQL documentation
-->
-->
...
@@ -1043,7 +1043,7 @@ testdb=>
...
@@ -1043,7 +1043,7 @@ testdb=>
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 des
c
ription 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=> <userinput>SELECT * FROM :"foo";</userinput>
...
@@ -2836,7 +2836,7 @@ testdb=> <userinput>SELECT * FROM :"foo";</userinput>
testdb=> <userinput>\set content `cat my_file.txt`</userinput>
testdb=> <userinput>\set content `cat my_file.txt`</userinput>
testdb=> <userinput>INSERT INTO my_table VALUES (:'content');</userinput>
testdb=> <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>
...
...
doc/src/sgml/regress.sgml
View file @
5194b9d0
<!-- $PostgreSQL: pgsql/doc/src/sgml/regress.sgml,v 1.6
7 2010/05/02 12:22:40 sriggs
Exp $ -->
<!-- $PostgreSQL: pgsql/doc/src/sgml/regress.sgml,v 1.6
8 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
...
...
doc/src/sgml/release-9.0.sgml
View file @
5194b9d0
<!-- $PostgreSQL: pgsql/doc/src/sgml/release-9.0.sgml,v 2.4
8 2010/08/07 13:07:06 momjian
Exp $ -->
<!-- $PostgreSQL: pgsql/doc/src/sgml/release-9.0.sgml,v 2.4
9 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
NULL
s.
contain
null value
s.
</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
b
oolean variable <link
Add
B
oolean 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
b
oolean variable <link
Add
B
oolean 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</> op
erator
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 Postgre
s
<type>bytea</> text format. Null
binary, rather than the Postgre
SQL
<type>bytea</> text format. Null
bytes are now also output properly from PL/Python. <type>
B
oolean</>
bytes are now also output properly from PL/Python. <type>
b
oolean</>
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 async
hronous
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
b
tree 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
HS
tore a full-functional key-value store embedded in PostgreSQL.
make
hs
tore 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
...
...
doc/src/sgml/release.sgml
View file @
5194b9d0
<!-- $PostgreSQL: pgsql/doc/src/sgml/release.sgml,v 1.63
8 2010/03/21 22:12:27 momjian
Exp $ -->
<!-- $PostgreSQL: pgsql/doc/src/sgml/release.sgml,v 1.63
9 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.
...
...
doc/src/sgml/seg.sgml
View file @
5194b9d0
<!-- $PostgreSQL: pgsql/doc/src/sgml/seg.sgml,v 1.
8 2010/08/10 20:42:0
1 petere Exp $ -->
<!-- $PostgreSQL: pgsql/doc/src/sgml/seg.sgml,v 1.
9 2010/08/17 04:37:2
1 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 op
erator
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>
...
...
doc/src/sgml/spi.sgml
View file @
5194b9d0
<!-- $PostgreSQL: pgsql/doc/src/sgml/spi.sgml,v 1.6
7 2010/04/03 07:22:55
petere Exp $ -->
<!-- $PostgreSQL: pgsql/doc/src/sgml/spi.sgml,v 1.6
8 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>
...
...
doc/src/sgml/storage.sgml
View file @
5194b9d0
<!-- $PostgreSQL: pgsql/doc/src/sgml/storage.sgml,v 1.3
3 2010/08/13 20:10:50 rhaas
Exp $ -->
<!-- $PostgreSQL: pgsql/doc/src/sgml/storage.sgml,v 1.3
4 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;
...
...
doc/src/sgml/tablefunc.sgml
View file @
5194b9d0
<!-- $PostgreSQL: pgsql/doc/src/sgml/tablefunc.sgml,v 1.
6 2010/08/10 20:42:0
1 petere Exp $ -->
<!-- $PostgreSQL: pgsql/doc/src/sgml/tablefunc.sgml,v 1.
7 2010/08/17 04:37:2
1 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>
...
...
doc/src/sgml/trigger.sgml
View file @
5194b9d0
<!-- $PostgreSQL: pgsql/doc/src/sgml/trigger.sgml,v 1.6
3 2010/04/03 07:22:56
petere Exp $ -->
<!-- $PostgreSQL: pgsql/doc/src/sgml/trigger.sgml,v 1.6
4 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
b
oolean <literal>WHEN</>
A trigger definition can also specify a
B
oolean <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
...
...
doc/src/sgml/unaccent.sgml
View file @
5194b9d0
...
@@ -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
e
uropean
behavior. Currently, it supports most important accents from
E
uropean
languages.
languages.
</para>
</para>
...
...
doc/src/sgml/vacuumlo.sgml
View file @
5194b9d0
<!-- $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>
...
...
doc/src/sgml/wal.sgml
View file @
5194b9d0
<!-- $PostgreSQL: pgsql/doc/src/sgml/wal.sgml,v 1.7
1 2010/07/27 19:01:16
petere Exp $ -->
<!-- $PostgreSQL: pgsql/doc/src/sgml/wal.sgml,v 1.7
2 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>
...
...
doc/src/sgml/xindex.sgml
View file @
5194b9d0
<!-- $PostgreSQL: pgsql/doc/src/sgml/xindex.sgml,v 1.6
6 2010/02/24 15:54:31 momjian
Exp $ -->
<!-- $PostgreSQL: pgsql/doc/src/sgml/xindex.sgml,v 1.6
7 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>
...
...
doc/src/sgml/xml2.sgml
View file @
5194b9d0
<!-- $PostgreSQL: pgsql/doc/src/sgml/xml2.sgml,v 1.1
0 2010/08/10 20:42:0
1 petere Exp $ -->
<!-- $PostgreSQL: pgsql/doc/src/sgml/xml2.sgml,v 1.1
1 2010/08/17 04:37:2
1 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
<itemtag>Value 2....</itemtag>
<itemtag>Value 2....</itemtag>
</toptag>
</toptag>
</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,
NULL
s will be returned instead.
than the others,
null value
s 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
...
...
doc/src/sgml/xoper.sgml
View file @
5194b9d0
<!-- $PostgreSQL: pgsql/doc/src/sgml/xoper.sgml,v 1.4
3 2007/11/28 15:42:3
1 petere Exp $ -->
<!-- $PostgreSQL: pgsql/doc/src/sgml/xoper.sgml,v 1.4
4 2010/08/17 04:37:2
1 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>
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment