Commit cda1bd6c authored by Neil Conway's avatar Neil Conway

Various minor improvements to the SGML documentation: fix some incorrect

SGML markup, add a "deprecated features" section to the 8.0 release
notes, untabify release.sgml and runtime.sgml, and make some other
minor improvements.
parent 4dbb880d
<!-- $PostgreSQL: pgsql/doc/src/sgml/errcodes.sgml,v 1.7 2004/07/31 23:04:54 tgl Exp $ -->
<!-- $PostgreSQL: pgsql/doc/src/sgml/errcodes.sgml,v 1.8 2004/08/24 00:06:50 neilc Exp $ -->
<appendix id="errcodes-appendix">
<title><productname>PostgreSQL</productname> Error Codes</title>
......@@ -1133,7 +1133,7 @@
<row>
<entry>Class 58</entry>
<entry>System Error (errors external to PostgreSQL itself)</entry>
<entry>System Error (errors external to <productname>PostgreSQL</> itself)</entry>
</row>
<row>
......
<!--
$PostgreSQL: pgsql/doc/src/sgml/problems.sgml,v 2.18 2004/03/09 16:57:46 neilc Exp $
$PostgreSQL: pgsql/doc/src/sgml/problems.sgml,v 2.19 2004/08/24 00:06:50 neilc Exp $
-->
<sect1 id="bug-reporting">
......@@ -11,8 +11,7 @@ $PostgreSQL: pgsql/doc/src/sgml/problems.sgml,v 2.18 2004/03/09 16:57:46 neilc E
<productname>PostgreSQL</productname> more reliable because even the utmost
care cannot guarantee that every part of
<productname>PostgreSQL</productname>
will work on every
platform under every circumstance.
will work on every platform under every circumstance.
</para>
<para>
......@@ -241,9 +240,9 @@ $PostgreSQL: pgsql/doc/src/sgml/problems.sgml,v 2.18 2004/03/09 16:57:46 neilc E
in each new release, so it is quite possible that a bug you have
encountered in an older release of <productname>PostgreSQL</>
has already been fixed. We can only provide limited support for
sites using older releases of PostgreSQL; if you require more
than we can provide, consider acquiring a commercial support
contract.
sites using older releases of <productname>PostgreSQL</>; if you
require more than we can provide, consider acquiring a
commercial support contract.
</para>
<para>
</para>
......
<!--
$PostgreSQL: pgsql/doc/src/sgml/ref/alter_index.sgml,v 1.3 2004/08/21 16:16:04 tgl Exp $
$PostgreSQL: pgsql/doc/src/sgml/ref/alter_index.sgml,v 1.4 2004/08/24 00:06:51 neilc Exp $
PostgreSQL documentation
-->
......@@ -167,7 +167,8 @@ ALTER INDEX distributors SET TABLESPACE fasttablespace;
<title>Compatibility</title>
<para>
<literal>ALTER INDEX</> is a PostgreSQL extension.
<command>ALTER INDEX</> is a <productname>PostgreSQL</productname>
extension.
</para>
</refsect1>
</refentry>
......
<!--
$PostgreSQL: pgsql/doc/src/sgml/ref/alter_sequence.sgml,v 1.7 2003/11/29 19:51:38 pgsql Exp $
$PostgreSQL: pgsql/doc/src/sgml/ref/alter_sequence.sgml,v 1.8 2004/08/24 00:06:51 neilc Exp $
PostgreSQL documentation
-->
......@@ -14,7 +14,7 @@ PostgreSQL documentation
ALTER SEQUENCE
</refname>
<refpurpose>
alter the definition of a sequence generator
change the definition of a sequence generator
</refpurpose>
</refnamediv>
......
<!--
$PostgreSQL: pgsql/doc/src/sgml/ref/create_table_as.sgml,v 1.22 2004/08/04 21:33:42 tgl Exp $
$PostgreSQL: pgsql/doc/src/sgml/ref/create_table_as.sgml,v 1.23 2004/08/24 00:06:51 neilc Exp $
PostgreSQL documentation
-->
......@@ -11,7 +11,7 @@ PostgreSQL documentation
<refnamediv>
<refname>CREATE TABLE AS</refname>
<refpurpose>create a new table from the results of a query</refpurpose>
<refpurpose>define a new table from the results of a query</refpurpose>
</refnamediv>
<indexterm zone="sql-createtableas">
......
<!--
$PostgreSQL: pgsql/doc/src/sgml/ref/create_tablespace.sgml,v 1.3 2004/08/02 04:25:37 tgl Exp $
$PostgreSQL: pgsql/doc/src/sgml/ref/create_tablespace.sgml,v 1.4 2004/08/24 00:06:51 neilc Exp $
PostgreSQL documentation
-->
......@@ -34,8 +34,8 @@ CREATE TABLESPACE <replaceable class="parameter">tablespacename</replaceable> [
</para>
<para>
A tablespace allows superusers to define an alternative location on the
file system where the data files representing database objects
A tablespace allows superusers to define an alternative location on
the file system where the data files containing database objects
(such as tables and indexes) may reside.
</para>
......
<!--
$PostgreSQL: pgsql/doc/src/sgml/ref/psql-ref.sgml,v 1.120 2004/08/14 23:49:07 tgl Exp $
$PostgreSQL: pgsql/doc/src/sgml/ref/psql-ref.sgml,v 1.121 2004/08/24 00:06:51 neilc Exp $
PostgreSQL documentation
-->
......@@ -771,7 +771,7 @@ testdb=>
<listitem>
<para>
Shows the copyright and distribution terms of
<application>PostgreSQL</application>.
<productname>PostgreSQL</productname>.
</para>
</listitem>
</varlistentry>
......
<!--
$PostgreSQL: pgsql/doc/src/sgml/ref/release_savepoint.sgml,v 1.1 2004/08/12 19:12:21 tgl Exp $
$PostgreSQL: pgsql/doc/src/sgml/ref/release_savepoint.sgml,v 1.2 2004/08/24 00:06:51 neilc Exp $
PostgreSQL documentation
-->
......@@ -77,7 +77,7 @@ RELEASE [ SAVEPOINT ] <replaceable>savepoint_name</replaceable>
<para>
It is not possible to release a savepoint when the transaction is in
aborted state.
an aborted state.
</para>
<para>
......@@ -108,9 +108,11 @@ COMMIT;
<title>Compatibility</title>
<para>
The SQL2003 standard specifies that the keyword SAVEPOINT is mandatory.
<productname>PostgreSQL</productname> allows the SAVEPOINT keyword to be
omitted. Otherwise, this command is fully conforming.
The SQL2003 standard specifies that the keyword
<literal>SAVEPOINT</literal> is mandatory.
<productname>PostgreSQL</productname> allows the
<literal>SAVEPOINT</literal> keyword to be omitted. Otherwise, this
command is fully conforming.
</para>
</refsect1>
......
<!--
$PostgreSQL: pgsql/doc/src/sgml/ref/rollback_to.sgml,v 1.2 2004/08/12 19:12:21 tgl Exp $
$PostgreSQL: pgsql/doc/src/sgml/ref/rollback_to.sgml,v 1.3 2004/08/24 00:06:51 neilc Exp $
PostgreSQL documentation
-->
......@@ -128,13 +128,15 @@ COMMIT;
<title>Compatibility</title>
<para>
The SQL2003 standard specifies that the keyword SAVEPOINT is mandatory.
<productname>PostgreSQL</productname> and <productname>Oracle</productname>
allow the SAVEPOINT keyword to be omitted. SQL2003 allows only
WORK, not TRANSACTION, as a noise word after ROLLBACK. Also, SQL2003
has an optional clause AND [ NO ] CHAIN which is not currently supported
by <productname>PostgreSQL</productname>. Otherwise, this command is
fully conforming.
The SQL2003 standard specifies that the keyword
<literal>SAVEPOINT</> is mandatory. <productname>PostgreSQL</> and
<productname>Oracle</> allow the <literal>SAVEPOINT</literal>
keyword to be omitted. SQL2003 allows only <literal>WORK</>, not
<literal>TRANSACTION</>, as a noise word after
<literal>ROLLBACK</>. Also, SQL2003 has an optional clause
<literal>AND [ NO ] CHAIN</> which is not currently supported by
<productname>PostgreSQL</>. Otherwise, this command is fully
conforming.
</para>
</refsect1>
......
<!--
$PostgreSQL: pgsql/doc/src/sgml/ref/select_into.sgml,v 1.29 2004/08/04 21:33:42 tgl Exp $
$PostgreSQL: pgsql/doc/src/sgml/ref/select_into.sgml,v 1.30 2004/08/24 00:06:51 neilc Exp $
PostgreSQL documentation
-->
......@@ -11,7 +11,7 @@ PostgreSQL documentation
<refnamediv>
<refname>SELECT INTO</refname>
<refpurpose>create a new table from the results of a query</refpurpose>
<refpurpose>define a new table from the results of a query</refpurpose>
</refnamediv>
<indexterm zone="sql-selectinto">
......
<!--
$PostgreSQL: pgsql/doc/src/sgml/release.sgml,v 1.287 2004/08/21 03:25:34 momjian Exp $
$PostgreSQL: pgsql/doc/src/sgml/release.sgml,v 1.288 2004/08/24 00:06:50 neilc Exp $
-->
<appendix id="release">
......@@ -27,77 +27,80 @@ $PostgreSQL: pgsql/doc/src/sgml/release.sgml,v 1.287 2004/08/21 03:25:34 momjian
<listitem>
<para>
This is the first PostgreSQL release to natively run on Microsoft
Windows as a server. It can run as a Windows service. This release
supports NT-based Windows releases like Win2000, XP, Win2003.
Older releases like Windows 95, 98, and ME are not supported because
these operating systems do not have the infrastructure to
support PostgreSQL. A separate installer project has been created
to ease installation on Windows:
This is the first <productname>PostgreSQL</productname>
release to natively run on Microsoft Windows as a server. It
can run as a Windows service. This release supports NT-based
Windows releases like Win2000, XP, Win2003. Older releases
like Windows 95, 98, and ME are not supported because these
operating systems do not have the infrastructure to support
<productname>PostgreSQL</productname>. A separate installer
project has been created to ease installation on Windows:
<ulink url="http://pgfoundry.org/projects/pginstaller">
http://pgfoundry.org/projects/pginstaller</ulink>.
http://pgfoundry.org/projects/pginstaller</ulink>.
</para>
<para>
Previous releases required the Unix emulation toolkit Cygwin for
Win32 server support. PostgreSQL has always supported clients on Win32.
Win32 server support. <productname>PostgreSQL</productname>
has always supported clients on Win32.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
Savepoints Improve Transaction Control
Savepoints
</term>
<listitem>
<para>
Savepoints allow specific parts of a transaction to be aborted
without affecting the remainder of the transaction. Prior
releases had no such capability; there was no way to recover from
a statement failure within a transaction except by aborting the whole
transaction. This feature is valuable
for application writers who require error recovery within a
complex transaction.
releases had no such capability; there was no way to recover
from a statement failure within a transaction except by
aborting the whole transaction. This feature is valuable for
application writers who require error recovery within a
complex transaction.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
Point-In-Time Recovery Increases Reliability
Point-In-Time Recovery
</term>
<listitem>
<para>
Though PostgreSQL is very reliable, in previous releases there
was no way to recover from disk drive failure except to restore
from a previous backup or use a standby replication server.
Point-in-time recovery allows continuous backup of the server.
You can recover either to the point of failure or to some
transaction in the past.
Though <productname>PostgreSQL</productname> is very reliable,
in previous releases there was no way to recover from disk
drive failure except to restore from a previous backup or use
a standby replication server. Point-in-time recovery allows
continuous backup of the server. You can recover either to
the point of failure or to some transaction in the past.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
Tablespaces Simplify Disk Layout
Tablespaces
</term>
<listitem>
<para>
Tablespaces allow administrators
to select the file systems used for storage of databases,
schemas, tables, or indexes. This improves performance and
control over disk space usage. Prior releases used
<literal>initlocation</> and manual symlink management for such tasks.
Tablespaces allow administrators to select the file systems
used for storage of databases, schemas, tables, or
indexes. This improves performance and control over disk space
usage. Prior releases used <application>initlocation</> and
manual symlink management for such tasks.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
Improved Buffer Management, CHECKPOINT, VACUUM
Improved Buffer Management, <command>CHECKPOINT</command>,
<command>VACUUM</command>
</term>
<listitem>
......@@ -117,7 +120,8 @@ $PostgreSQL: pgsql/doc/src/sgml/release.sgml,v 1.287 2004/08/21 03:25:34 momjian
<listitem>
<para>
A column's data type can now be changed with ALTER TABLE.
A column's data type can now be changed with <command>ALTER
TABLE</command>.
</para>
</listitem>
</varlistentry>
......@@ -130,22 +134,22 @@ $PostgreSQL: pgsql/doc/src/sgml/release.sgml,v 1.287 2004/08/21 03:25:34 momjian
<listitem>
<para>
A new version of the <application>plperl</> server-side language now
supports a persistent shared storage area, triggers, returning records
and arrays of records, and SPI calls to access the database.
supports a persistent shared storage area, triggers, returning records
and arrays of records, and SPI calls to access the database.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
COPY Handles Comma-Separated-Value Files
CSV support in <command>COPY</command>
</term>
<listitem>
<para>
COPY can now read and write comma-separated-value (CSV) files. It
has the flexibility to interpret non-standard quoting and
separation characters too.
<command>COPY</command> can now read and write
comma-separated-value (CSV) files. It has the flexibility to
interpret non-standard quoting and separation characters too.
</para>
</listitem>
</varlistentry>
......@@ -181,9 +185,10 @@ $PostgreSQL: pgsql/doc/src/sgml/release.sgml,v 1.287 2004/08/21 03:25:34 momjian
<listitem>
<para>
Server configuration parameters <varname>SortMem</> and
<varname>VacuumMem</> have been renamed to <varname>work_mem</> and
<varname>maintenance_work_mem</> to better reflect their use. The
original names are still supported in SET and SHOW.
<varname>VacuumMem</> have been renamed to <varname>work_mem</>
and <varname>maintenance_work_mem</> to better reflect their
use. The original names are still supported in
<command>SET</command> and <command>SHOW</command>.
</para>
</listitem>
......@@ -246,8 +251,9 @@ $PostgreSQL: pgsql/doc/src/sgml/release.sgml,v 1.287 2004/08/21 03:25:34 momjian
<listitem>
<para>
The server now warns of empty strings passed to oid/float4/float8
data types. In the next major release, doing this will generate an
The server now warns of empty strings passed to
<type>oid</type>/<type>float4</type>/<type>float8</type> data
types. In the next major release, doing this will generate an
error.
</para>
</listitem>
......@@ -292,8 +298,8 @@ $PostgreSQL: pgsql/doc/src/sgml/release.sgml,v 1.287 2004/08/21 03:25:34 momjian
<listitem>
<para>
EXECUTE now returns a completion tag that matches the executed
statement.
<command>EXECUTE</command> now returns a completion tag that
matches the executed statement.
</para>
</listitem>
......@@ -307,8 +313,8 @@ $PostgreSQL: pgsql/doc/src/sgml/release.sgml,v 1.287 2004/08/21 03:25:34 momjian
<listitem>
<para>
Now that tablespaces have been implemented, initlocation has been
removed.
Now that tablespaces have been implemented,
<application>initlocation</> has been removed.
</para>
</listitem>
......@@ -321,17 +327,45 @@ $PostgreSQL: pgsql/doc/src/sgml/release.sgml,v 1.287 2004/08/21 03:25:34 momjian
ignored as well as leading whitespace (which has always been ignored).
</para>
</listitem>
<listitem>
<para>
The 8.1 release will remove the function <literal>to_char(interval)
</literal>.
</para>
</listitem>
</itemizedlist>
</para>
</sect2>
<sect2>
<title>Deprecated Features</title>
<para>
Some aspects of <productname>PostgreSQL</productname>'s behavior
have been determined to be suboptimal. For the sake of backward
compatibility these have not been removed in 8.0, but they are
considered deprecated and will be removed in the next major
release.
</para>
<itemizedlist>
<listitem>
<para>
The 8.1 release will remove the function
<literal>to_char(interval)</literal>.
</para>
</listitem>
<listitem>
<para>
By default, tables in <productname>PostgreSQL</productname> 8.0
and earlier are created with OIDs. In the next release, this
will <emphasis>not</emphasis> be the case: to create a table
that contains OIDs, the <literal>WITH OIDS</literal> clause must
be specified or the <varname>default_with_oids</varname>
configuration parameter must be enabled. Users are encouraged to
explicitely specify <literal>WITH OIDS</literal> if their tables
require OIDs for compatibility with future releases of
<productname>PostgreSQL</productname>.
</para>
</listitem>
</itemizedlist>
</sect2>
<sect2>
<title>Changes</title>
......@@ -396,10 +430,11 @@ $PostgreSQL: pgsql/doc/src/sgml/release.sgml,v 1.287 2004/08/21 03:25:34 momjian
Add ability to prolong vacuum to reduce performance impact (Jan)
</para>
<para>
On busy systems, VACUUM performs many I/O requests which can hurt
performance for other users. This release allows you to slow down
VACUUM to reduce its impact on other users, though this increases the
total duration of VACUUM.
On busy systems, <command>VACUUM</command> performs many I/O
requests which can hurt performance for other users. This
release allows you to slow down <command>VACUUM</command> to
reduce its impact on other users, though this increases the
total duration of <command>VACUUM</command>.
</para>
</listitem>
......@@ -469,7 +504,8 @@ $PostgreSQL: pgsql/doc/src/sgml/release.sgml,v 1.287 2004/08/21 03:25:34 momjian
<listitem>
<para>
Add type-specific ANALYZE statistics capability (Mark Cave-Ayland)
Add type-specific <command>ANALYZE</command> statistics
capability (Mark Cave-Ayland)
</para>
<para>
This feature allows more flexibility in generating statistics
......@@ -479,7 +515,8 @@ $PostgreSQL: pgsql/doc/src/sgml/release.sgml,v 1.287 2004/08/21 03:25:34 momjian
<listitem>
<para>
Allow collection of ANALYZE statistics for expression indexes (Tom)
Allow collection of <command>ANALYZE</command> statistics for
expression indexes (Tom)
</para>
<para>
Expression indexes (also called functional indexes) allow users to
......@@ -493,7 +530,8 @@ $PostgreSQL: pgsql/doc/src/sgml/release.sgml,v 1.287 2004/08/21 03:25:34 momjian
<listitem>
<para>
New two-stage sampling method for ANALYZE (Manfred Koizar)
New two-stage sampling method for <command>ANALYZE</command>
(Manfred Koizar)
</para>
<para>
This gives better statistics for asymmetric data distributions.
......@@ -502,11 +540,11 @@ $PostgreSQL: pgsql/doc/src/sgml/release.sgml,v 1.287 2004/08/21 03:25:34 momjian
<listitem>
<para>
Speed up TRUNCATE (Tom)
Speed up <command>TRUNCATE</command> (Tom)
</para>
<para>
This buys back some of the performance loss observed in 7.4, while still
keeping TRUNCATE transaction-safe.
keeping <command>TRUNCATE</command> transaction-safe.
</para>
</listitem>
......@@ -671,23 +709,27 @@ $PostgreSQL: pgsql/doc/src/sgml/release.sgml,v 1.287 2004/08/21 03:25:34 momjian
<listitem>
<para>
Allow DECLARE CURSOR to take parameters (Oliver Jowett)
Allow <command>DECLARE CURSOR</command> to take parameters
(Oliver Jowett)
</para>
<para>
It is now useful to issue DECLARE CURSOR in a Parse message with
parameters. The parameter values sent at Bind time will be substituted
into the execution of the cursor's query.
It is now useful to issue <command>DECLARE CURSOR</command> in a
Parse message with parameters. The parameter values sent at
Bind time will be substituted into the execution of the cursor's
query.
</para>
</listitem>
<listitem>
<para>
Fix hash joins and aggregates of INET and CIDR data types (Tom)
Fix hash joins and aggregates of <type>inet</type> and
<type>cidr</type> data types (Tom)
</para>
<para>
Release 7.4 handled hashing of mixed INET and CIDR values incorrectly.
(This bug did not exist in prior releases because they wouldn't try
to hash either datatype.)
Release 7.4 handled hashing of mixed <type>inet</type> and
<type>cidr</type> values incorrectly. (This bug did not exist
in prior releases because they wouldn't try to hash either
datatype.)
</para>
</listitem>
......@@ -719,8 +761,9 @@ $PostgreSQL: pgsql/doc/src/sgml/release.sgml,v 1.287 2004/08/21 03:25:34 momjian
<listitem>
<para>
Allow BEGIN WORK to specify transaction isolation levels like START
TRANSACTION (Bruce)
Allow <command>BEGIN WORK</command> to specify transaction
isolation levels like <command>START TRANSACTION</command> does
(Bruce)
</para>
</listitem>
......@@ -824,12 +867,13 @@ $PostgreSQL: pgsql/doc/src/sgml/release.sgml,v 1.287 2004/08/21 03:25:34 momjian
<listitem>
<para>
Change EXECUTE to return a completion tag matching the executed statement
(Kris Jurka)
Change <command>EXECUTE</command> to return a completion tag
matching the executed statement (Kris Jurka)
</para>
<para>
Previous releases return an EXECUTE tag for any EXECUTE call. In
this release, the tag returned will reflect the command executed.
Previous releases return an <command>EXECUTE</command> tag for
any <command>EXECUTE</command> call. In this release, the tag
returned will reflect the command executed.
</para>
</listitem>
......@@ -864,14 +908,15 @@ $PostgreSQL: pgsql/doc/src/sgml/release.sgml,v 1.287 2004/08/21 03:25:34 momjian
control whether tables are created with OIDs by default (Neil)
</para>
<para>
This allows administrators to default all CREATE TABLE commands to
create tables without OID columns.
This allows administrators to default all <command>CREATE
TABLE</command> commands to create tables without OID columns.
</para>
</listitem>
<listitem>
<para>
Add WITH / WITHOUT OIDS clause to CREATE TABLE AS (Neil)
Add WITH / WITHOUT OIDS clause to <command>CREATE TABLE
AS</command> (Neil)
</para>
</listitem>
......@@ -911,7 +956,8 @@ $PostgreSQL: pgsql/doc/src/sgml/release.sgml,v 1.287 2004/08/21 03:25:34 momjian
<listitem>
<para>
Allow multiple ALTER actions in a single ALTER TABLE command (Rod)
Allow multiple ALTER actions in a single <command>ALTER
TABLE</command> command (Rod)
</para>
<para>
This is particularly useful for ALTER commands that rewrite the
......@@ -923,7 +969,8 @@ $PostgreSQL: pgsql/doc/src/sgml/release.sgml,v 1.287 2004/08/21 03:25:34 momjian
<listitem>
<para>
Allow ALTER TABLE to add SERIAL columns (Tom)
Allow <command>ALTER TABLE</command> to add <type>serial</type>
columns (Tom)
</para>
<para>
This is related to the new capability of adding defaults for new
......@@ -996,13 +1043,15 @@ $PostgreSQL: pgsql/doc/src/sgml/release.sgml,v 1.287 2004/08/21 03:25:34 momjian
<listitem>
<para>
Allow CREATE SCHEMA to create triggers, indexes, and sequences (Neil)
Allow <command>CREATE SCHEMA</command> to create triggers,
indexes, and sequences (Neil)
</para>
</listitem>
<listitem>
<para>
Add ALSO keyword to CREATE RULE (Fabien Coelho)
Add ALSO keyword to <command>CREATE RULE</command> (Fabien
Coelho)
</para>
<para>
This allows ALSO to be added to rule creation to contrast it with
......@@ -1012,23 +1061,25 @@ $PostgreSQL: pgsql/doc/src/sgml/release.sgml,v 1.287 2004/08/21 03:25:34 momjian
<listitem>
<para>
Add NOWAIT option to LOCK command (Tatsuo)
Add NOWAIT option to <command>LOCK</command> (Tatsuo)
</para>
<para>
This allows the LOCK command to fail if it would have to wait for
the requested lock.
This allows the <command>LOCK</command> command to fail if it
would have to wait for the requested lock.
</para>
</listitem>
<listitem>
<para>
Allow COPY to read and write comma-separated-value (CSV) files (Andrew, Bruce)
Allow <command>COPY</command> to read and write
comma-separated-value (CSV) files (Andrew, Bruce)
</para>
</listitem>
<listitem>
<para>
Generate error if the COPY delimiter and NULL string conflict (Bruce)
Generate error if the <command>COPY</command> delimiter and NULL
string conflict (Bruce)
</para>
</listitem>
......@@ -1040,7 +1091,8 @@ $PostgreSQL: pgsql/doc/src/sgml/release.sgml,v 1.287 2004/08/21 03:25:34 momjian
<listitem>
<para>
Avoid locking conflict between CREATE INDEX and CHECKPOINT (Tom)
Avoid locking conflict between <command>CREATE INDEX</command>
and <command>CHECKPOINT</command> (Tom)
</para>
<para>
In 7.3 and 7.4, a long-running btree index build could block concurrent
......@@ -1051,14 +1103,16 @@ $PostgreSQL: pgsql/doc/src/sgml/release.sgml,v 1.287 2004/08/21 03:25:34 momjian
<listitem>
<para>
Database-wide ANALYZE does not hold locks across tables (Tom)
Database-wide <command>ANALYZE</command> does not hold locks
across tables (Tom)
</para>
<para>
This reduces the potential for deadlocks against other backends that
want exclusive locks on tables. To get the benefit of this change,
do not execute database-wide ANALYZE inside a transaction block
(BEGIN block); it must be able to commit and start a new transaction
for each table.
This reduces the potential for deadlocks against other backends
that want exclusive locks on tables. To get the benefit of this
change, do not execute database-wide <command>ANALYZE</command>
inside a transaction block (<command>BEGIN</command> block); it
must be able to commit and start a new transaction for each
table.
</para>
</listitem>
......@@ -1067,11 +1121,12 @@ $PostgreSQL: pgsql/doc/src/sgml/release.sgml,v 1.287 2004/08/21 03:25:34 momjian
Erase MD5 user passwords when a user is renamed (Bruce)
</para>
<para>
PostgreSQL uses the user name as salt when encrypting passwords
via MD5. When a user name is changed, their salt no longer matches
the stored MD5 password, so the stored password becomes useless.
In this release a notice is generated and the password
is cleared. A new password must then be assigned.
<productname>PostgreSQL</productname> uses the user name as salt
when encrypting passwords via MD5. When a user name is changed,
their salt no longer matches the stored MD5 password, so the
stored password becomes useless. In this release a notice is
generated and the password is cleared. A new password must then
be assigned.
</para>
</listitem>
......@@ -1127,7 +1182,8 @@ $PostgreSQL: pgsql/doc/src/sgml/release.sgml,v 1.287 2004/08/21 03:25:34 momjian
Reject non-rectangular array literals as erroneous (Joe)
</para>
<para>
Formerly, array_in would silently build a surprising result.
Formerly, <literal>array_in</literal> would silently build a
surprising result.
</para>
</listitem>
......@@ -1174,11 +1230,11 @@ $PostgreSQL: pgsql/doc/src/sgml/release.sgml,v 1.287 2004/08/21 03:25:34 momjian
<listitem>
<para>
Change factorial function to return NUMERIC (Gavin)
Change factorial function to return <type>numeric</type> (Gavin)
</para>
<para>
Returning NUMERIC allows the factorial function to work for a wider
range of input values.
Returning <type>numeric</type> allows the factorial function to
work for a wider range of input values.
</para>
</listitem>
......@@ -1217,7 +1273,8 @@ $PostgreSQL: pgsql/doc/src/sgml/release.sgml,v 1.287 2004/08/21 03:25:34 momjian
<listitem>
<para>
Better support for IEEE Infinity and NaN values in float4, float8 (Neil)
Better support for IEEE Infinity and NaN values in
<type>float4</type>, <type>float8</type> (Neil)
</para>
<para>
These should now work on all platforms that support IEEE-compliant
......@@ -1448,7 +1505,8 @@ $PostgreSQL: pgsql/doc/src/sgml/release.sgml,v 1.287 2004/08/21 03:25:34 momjian
<listitem>
<para>
Make psql \copy match COPY command syntax fully (Tom)
Make psql \copy match <command>COPY</command> command syntax
fully (Tom)
</para>
</listitem>
......@@ -1460,7 +1518,8 @@ $PostgreSQL: pgsql/doc/src/sgml/release.sgml,v 1.287 2004/08/21 03:25:34 momjian
<listitem>
<para>
Add CLUSTER information to psql \d display (Bruce)
Add <command>CLUSTER</command> information to psql \d display
(Bruce)
</para>
</listitem>
......@@ -1478,7 +1537,8 @@ $PostgreSQL: pgsql/doc/src/sgml/release.sgml,v 1.287 2004/08/21 03:25:34 momjian
<listitem>
<para>
Add global psql config file, psqlrc.sample (Bruce)
Add global psql config file, <filename>psqlrc.sample</filename>
(Bruce)
</para>
<para>
This allows a central file where global psql startup commands can
......@@ -1594,8 +1654,8 @@ $PostgreSQL: pgsql/doc/src/sgml/release.sgml,v 1.287 2004/08/21 03:25:34 momjian
<listitem>
<para>
Allow PQoidValue(), PQcmdTuples(), and PQoidStatus() to work
on EXECUTE commands (Neil)
Allow PQoidValue(), PQcmdTuples(), and PQoidStatus() to work on
<command>EXECUTE</command> commands (Neil)
</para>
</listitem>
......@@ -1665,10 +1725,11 @@ $PostgreSQL: pgsql/doc/src/sgml/release.sgml,v 1.287 2004/08/21 03:25:34 momjian
New "PostgreSQL" CVS tag (Marc)
</para>
<para>
This was done to make it easier for organizations to manage their own
copies of the PostgreSQL CVS repository. File version stamps from the
master repository will not get munged by checking into or out of
a copied repository.
This was done to make it easier for organizations to manage
their own copies of the <productname>PostgreSQL</productname>
CVS repository. File version stamps from the master repository
will not get munged by checking into or out of a copied
repository.
</para>
</listitem>
......@@ -1880,7 +1941,8 @@ $PostgreSQL: pgsql/doc/src/sgml/release.sgml,v 1.287 2004/08/21 03:25:34 momjian
<listitem>
<para>
New /contrib/trgm, trigram matching for PostgreSQL (Teodor)
New /contrib/trgm, trigram matching for
<productname>PostgreSQL</productname> (Teodor)
</para>
</listitem>
......@@ -2037,7 +2099,7 @@ names from outer query levels.
<para>
This fixes a difficult-to-exploit security hole.
</para></listitem>
<listitem><para>Avoid locking conflict between ANALYZE and LISTEN/NOTIFY</para></listitem>
<listitem><para>Avoid locking conflict between <command>ANALYZE</command> and <command>LISTEN</command>/<command>NOTIFY</command></para></listitem>
<listitem><para>Numerous translation updates (various contributors)</para></listitem>
</itemizedlist>
......
<!--
$PostgreSQL: pgsql/doc/src/sgml/runtime.sgml,v 1.278 2004/08/16 02:12:29 tgl Exp $
$PostgreSQL: pgsql/doc/src/sgml/runtime.sgml,v 1.279 2004/08/24 00:06:50 neilc Exp $
-->
<Chapter Id="runtime">
......@@ -1206,17 +1206,16 @@ SET ENABLE_SEQSCAN TO OFF;
<listitem>
<para>
Specifies the delay between activity rounds for the
background writer. In each round the writer issues writes for some
number of dirty buffers (controllable by the following parameters).
The selected buffers will always be the
least recently used ones among the currently dirty buffers.
It then sleeps for <varname>bgwriter_delay</varname> milliseconds,
and repeats.
Note that on many systems, the effective resolution
of sleep delays is 10 milliseconds; setting
<varname>bgwriter_delay</varname> to a value that is
not a multiple of 10 may have the same results as setting it
to the next higher multiple of 10.
background writer. In each round the writer issues writes
for some number of dirty buffers (controllable by the
following parameters). The selected buffers will always be
the least recently used ones among the currently dirty
buffers. It then sleeps for <varname>bgwriter_delay</>
milliseconds, and repeats. The default value is 200. Note
that on many systems, the effective resolution of sleep
delays is 10 milliseconds; setting <varname>bgwriter_delay</>
to a value that is not a multiple of 10 may have the same
results as setting it to the next higher multiple of 10.
This option can only be set at server start or in the
<filename>postgresql.conf</filename> file.
</para>
......@@ -1227,10 +1226,10 @@ SET ENABLE_SEQSCAN TO OFF;
<term><varname>bgwriter_percent</varname> (<type>integer</type>)</term>
<listitem>
<para>
In each round, no more than this percentage of the currently dirty
buffers will be written (rounding up any fraction to the next whole
number of buffers).
This option can only be set at server start or in the
In each round, no more than this percentage of the currently
dirty buffers will be written (rounding up any fraction to
the next whole number of buffers). The default value is
1. This option can only be set at server start or in the
<filename>postgresql.conf</filename> file.
</para>
</listitem>
......@@ -1240,8 +1239,9 @@ SET ENABLE_SEQSCAN TO OFF;
<term><varname>bgwriter_maxpages</varname> (<type>integer</type>)</term>
<listitem>
<para>
In each round, no more than this many dirty buffers will be written.
This option can only be set at server start or in the
In each round, no more than this many dirty buffers will be
written. The default value is 100. This option can only be
set at server start or in the
<filename>postgresql.conf</filename> file.
</para>
</listitem>
......@@ -1250,9 +1250,10 @@ SET ENABLE_SEQSCAN TO OFF;
<para>
Smaller values of <varname>bgwriter_percent</varname> and
<varname>bgwriter_maxpages</varname> reduce the extra I/O load caused by
the background writer, but leave more work to be done at checkpoint
time. To reduce load spikes at checkpoints, increase the values.
<varname>bgwriter_maxpages</varname> reduce the extra I/O load
caused by the background writer, but leave more work to be done
at checkpoint time. To reduce load spikes at checkpoints,
increase the values.
</para>
</sect3>
......@@ -1448,7 +1449,7 @@ SET ENABLE_SEQSCAN TO OFF;
</para>
<para>
It is important for the command to return a zero exit status only if
it succeeds. Examples:
it succeeds. Examples:
<programlisting>
archive_command = 'cp "%p" /mnt/server/archivedir/"%f"'
archive_command = 'copy "%p" /mnt/server/archivedir/"%f"' # Win32
......@@ -1880,14 +1881,14 @@ archive_command = 'copy "%p" /mnt/server/archivedir/"%f"' # Win32
<term><varname>log_destination</varname> (<type>string</type>)</term>
<listitem>
<para>
<productname>PostgreSQL</productname> supports several methods
for logging server messages, including
<systemitem>stderr</systemitem> and
<systemitem>syslog</systemitem>. On Windows,
<systemitem>eventlog</systemitem> is also supported. Set this
option to a list of desired log destinations separated by
commas. The default is to log to <systemitem>stderr</systemitem>
only.
<productname>PostgreSQL</productname> supports several methods
for logging server messages, including
<systemitem>stderr</systemitem> and
<systemitem>syslog</systemitem>. On Windows,
<systemitem>eventlog</systemitem> is also supported. Set this
option to a list of desired log destinations separated by
commas. The default is to log to <systemitem>stderr</systemitem>
only.
This option can only be set at server start or in the
<filename>postgresql.conf</filename> configuration file.
</para>
......@@ -1898,14 +1899,14 @@ archive_command = 'copy "%p" /mnt/server/archivedir/"%f"' # Win32
<term><varname>redirect_stderr</varname> (<type>boolean</type>)</term>
<listitem>
<para>
This option allows messages sent to <application>stderr</> to be
captured and redirected into log files.
This option, in combination with logging to <application>stderr</>,
is often more useful than
logging to <application>syslog</>, since some types of messages
may not appear in <application>syslog</> output (a common example
is dynamic-linker failure messages).
This option can only be set at server start.
This option allows messages sent to <application>stderr</> to be
captured and redirected into log files.
This option, in combination with logging to <application>stderr</>,
is often more useful than
logging to <application>syslog</>, since some types of messages
may not appear in <application>syslog</> output (a common example
is dynamic-linker failure messages).
This option can only be set at server start.
</para>
</listitem>
</varlistentry>
......@@ -1914,10 +1915,10 @@ archive_command = 'copy "%p" /mnt/server/archivedir/"%f"' # Win32
<term><varname>log_directory</varname> (<type>string</type>)</term>
<listitem>
<para>
When <varname>redirect_stderr</> is enabled, this option
When <varname>redirect_stderr</> is enabled, this option
determines the directory in which log files will be created.
It may be specified as an absolute path, or relative to the
cluster data directory.
It may be specified as an absolute path, or relative to the
cluster data directory.
This option can only be set at server start or in the
<filename>postgresql.conf</filename> configuration file.
</para>
......@@ -1928,10 +1929,10 @@ archive_command = 'copy "%p" /mnt/server/archivedir/"%f"' # Win32
<term><varname>log_filename_prefix</varname> (<type>string</type>)</term>
<listitem>
<para>
When <varname>redirect_stderr</> is enabled, this option
When <varname>redirect_stderr</> is enabled, this option
sets the prefix of the file names of the created log files.
The postmaster PID and the current time are appended to this
prefix to form an exact log file name.
The postmaster PID and the current time are appended to this
prefix to form an exact log file name.
This option can only be set at server start or in the
<filename>postgresql.conf</filename> configuration file.
</para>
......@@ -1942,11 +1943,11 @@ archive_command = 'copy "%p" /mnt/server/archivedir/"%f"' # Win32
<term><varname>log_rotation_age</varname> (<type>integer</type>)</term>
<listitem>
<para>
When <varname>redirect_stderr</> is enabled, this option
determines the maximum lifetime of an individual log file.
After this many minutes have elapsed, a new log file will
be created. Set to zero to disable time-based creation of
new log files.
When <varname>redirect_stderr</> is enabled, this option
determines the maximum lifetime of an individual log file.
After this many minutes have elapsed, a new log file will
be created. Set to zero to disable time-based creation of
new log files.
This option can only be set at server start or in the
<filename>postgresql.conf</filename> configuration file.
</para>
......@@ -1957,11 +1958,11 @@ archive_command = 'copy "%p" /mnt/server/archivedir/"%f"' # Win32
<term><varname>log_rotation_size</varname> (<type>integer</type>)</term>
<listitem>
<para>
When <varname>redirect_stderr</> is enabled, this option
determines the maximum size of an individual log file.
After this many kilobytes have been emitted into a log file,
a new log file will be created. Set to zero to disable size-based
creation of new log files.
When <varname>redirect_stderr</> is enabled, this option
determines the maximum size of an individual log file.
After this many kilobytes have been emitted into a log file,
a new log file will be created. Set to zero to disable size-based
creation of new log files.
This option can only be set at server start or in the
<filename>postgresql.conf</filename> configuration file.
</para>
......@@ -1981,7 +1982,7 @@ archive_command = 'copy "%p" /mnt/server/archivedir/"%f"' # Win32
the default is <literal>LOCAL0</>. See also the
documentation of your system's
<application>syslog</application> daemon.
This option can only be set at server start.
This option can only be set at server start.
</para>
</listitem>
</varlistentry>
......@@ -1995,7 +1996,7 @@ archive_command = 'copy "%p" /mnt/server/archivedir/"%f"' # Win32
<productname>PostgreSQL</productname> messages in
<application>syslog</application> logs. The default is
<literal>postgres</literal>.
This option can only be set at server start.
This option can only be set at server start.
</para>
</listitem>
</varlistentry>
......@@ -2107,9 +2108,9 @@ archive_command = 'copy "%p" /mnt/server/archivedir/"%f"' # Win32
terminals are disassociated (same effect as
<command>postmaster</>'s <option>-S</option> option).
The server's standard output and standard error are redirected
to <literal>/dev/null</>, so any messages sent to them will be lost.
Unless <application>syslog</> logging is selected or
<varname>redirect_stderr</> is enabled, using this option
to <literal>/dev/null</>, so any messages sent to them will be lost.
Unless <application>syslog</> logging is selected or
<varname>redirect_stderr</> is enabled, using this option
is discouraged because it makes it impossible to see error messages.
</para>
</listitem>
......@@ -2271,95 +2272,95 @@ archive_command = 'copy "%p" /mnt/server/archivedir/"%f"' # Win32
<term><varname>log_line_prefix</varname> (<type>string</type>)</term>
<listitem>
<para>
This is a <function>printf</>-style string that is output at the
beginning of each log line. The default is an empty string.
Each recognized escape is replaced as outlined
below - anything else that looks like an escape is ignored. Other
characters are copied straight to the log line. Some escapes are
only recognised by session processes, and do not apply to
background processes such as the postmaster. <application>Syslog</>
This is a <function>printf</>-style string that is output at the
beginning of each log line. The default is an empty string.
Each recognized escape is replaced as outlined
below - anything else that looks like an escape is ignored. Other
characters are copied straight to the log line. Some escapes are
only recognised by session processes, and do not apply to
background processes such as the postmaster. <application>Syslog</>
produces its own
timestamp and process ID information, so you probably do not want to
use those escapes if you are using <application>syslog</>.
This option can only be set at server start or in the
timestamp and process ID information, so you probably do not want to
use those escapes if you are using <application>syslog</>.
This option can only be set at server start or in the
<filename>postgresql.conf</filename> configuration file.
<informaltable>
<tgroup cols="3">
<thead>
<row>
<entry>Escape</entry>
<entry>Effect</entry>
<entry>Session only</entry>
</row>
</thead>
<tbody>
<row>
<entry><literal>%u</literal></entry>
<entry>User Name</entry>
<entry>Yes</entry>
</row>
<row>
<entry><literal>%d</literal></entry>
<entry>Database Name</entry>
<entry>Yes</entry>
</row>
<row>
<entry><literal>%r</literal></entry>
<entry>Remote Hostname or IP address, and Remote Port</entry>
<entry>Yes</entry>
</row>
<row>
<entry><literal>%p</literal></entry>
<entry>Process ID</entry>
<entry>No</entry>
</row>
<row>
<entry><literal>%t</literal></entry>
<entry>Timestamp</entry>
<entry>No</entry>
</row>
<row>
<entry><literal>%i</literal></entry>
<entry>Command Tag. This is the command which generated the log
line.</entry>
<entry>Yes</entry>
</row>
<row>
<entry><literal>%c</literal></entry>
<entry>Session ID. A unique identifier for each session.
It is 2 4-byte hexadecimal numbers (without leading zeros)
<informaltable>
<tgroup cols="3">
<thead>
<row>
<entry>Escape</entry>
<entry>Effect</entry>
<entry>Session only</entry>
</row>
</thead>
<tbody>
<row>
<entry><literal>%u</literal></entry>
<entry>User Name</entry>
<entry>Yes</entry>
</row>
<row>
<entry><literal>%d</literal></entry>
<entry>Database Name</entry>
<entry>Yes</entry>
</row>
<row>
<entry><literal>%r</literal></entry>
<entry>Remote Hostname or IP address, and Remote Port</entry>
<entry>Yes</entry>
</row>
<row>
<entry><literal>%p</literal></entry>
<entry>Process ID</entry>
<entry>No</entry>
</row>
<row>
<entry><literal>%t</literal></entry>
<entry>Timestamp</entry>
<entry>No</entry>
</row>
<row>
<entry><literal>%i</literal></entry>
<entry>Command Tag. This is the command which generated the log
line.</entry>
<entry>Yes</entry>
</row>
<row>
<entry><literal>%c</literal></entry>
<entry>Session ID. A unique identifier for each session.
It is 2 4-byte hexadecimal numbers (without leading zeros)
separated by a dot. The numbers
are the Session Start Time and the Process ID, so this can also
be used as a space saving way of printing these items.</entry>
<entry>Yes</entry>
</row>
<row>
<entry><literal>%l</literal></entry>
<entry>Number of the log line for each process,
starting at 1</entry>
<entry>No</entry>
</row>
<row>
<entry><literal>%s</literal></entry>
<entry>Session Start Timestamp</entry>
<entry>Yes</entry>
</row>
<row>
<entry><literal>%x</literal></entry>
<entry>Does not produce any output, but tells non-session
processes to stop at this point in the string. Ignored by
session processes.</entry>
<entry>No</entry>
</row>
<row>
<entry><literal>%%</literal></entry>
<entry>Literal <literal>%</></entry>
<entry>No</entry>
</row>
</tbody>
</tgroup>
</informaltable>
are the Session Start Time and the Process ID, so this can also
be used as a space saving way of printing these items.</entry>
<entry>Yes</entry>
</row>
<row>
<entry><literal>%l</literal></entry>
<entry>Number of the log line for each process,
starting at 1</entry>
<entry>No</entry>
</row>
<row>
<entry><literal>%s</literal></entry>
<entry>Session Start Timestamp</entry>
<entry>Yes</entry>
</row>
<row>
<entry><literal>%x</literal></entry>
<entry>Does not produce any output, but tells non-session
processes to stop at this point in the string. Ignored by
session processes.</entry>
<entry>No</entry>
</row>
<row>
<entry><literal>%%</literal></entry>
<entry>Literal <literal>%</></entry>
<entry>No</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</para>
</listitem>
</varlistentry>
......@@ -2861,7 +2862,7 @@ archive_command = 'copy "%p" /mnt/server/archivedir/"%f"' # Win32
<para>
The value for <varname>dynamic_library_path</varname> has to be a
list of absolute directory paths separated by colons (or semi-colons
on Windows). If a list element starts
on Windows). If a list element starts
with the special string <literal>$libdir</literal>, the
compiled-in <productname>PostgreSQL</productname> package
library directory is substituted for <literal>$libdir</literal>. This
......@@ -3138,8 +3139,8 @@ dynamic_library_path = 'C:\tools\postgresql;H:\my_project\lib;$libdir'
<listitem>
<para>
Shows the locale in which sorting of textual data is done.
See <xref linkend="locale"> for more information.
The value is determined when the database cluster is initialized.
See <xref linkend="locale"> for more information.
The value is determined when the database cluster is initialized.
</para>
</listitem>
</varlistentry>
......@@ -3149,10 +3150,10 @@ dynamic_library_path = 'C:\tools\postgresql;H:\my_project\lib;$libdir'
<listitem>
<para>
Shows the locale that determines character classifications.
See <xref linkend="locale"> for more information.
The value is determined when the database cluster is initialized.
Ordinarily this will be the same as <varname>lc_collate</varname>,
but for special applications it might be set differently.
See <xref linkend="locale"> for more information.
The value is determined when the database cluster is initialized.
Ordinarily this will be the same as <varname>lc_collate</varname>,
but for special applications it might be set differently.
</para>
</listitem>
</varlistentry>
......@@ -3240,7 +3241,7 @@ dynamic_library_path = 'C:\tools\postgresql;H:\my_project\lib;$libdir'
variable is a variable not normally known
to <productname>PostgreSQL</productname> proper but used by some
add-on module. Such variables must have names consisting of a class
name, a dot, and a variable name. <varname>custom_variable_classes</>
name, a dot, and a variable name. <varname>custom_variable_classes</>
specifies all the class names in use in a particular installation.
This option can only be set at server start or in the
<filename>postgresql.conf</filename> configuration file.
......
<!--
$PostgreSQL: pgsql/doc/src/sgml/xfunc.sgml,v 1.85 2004/07/30 12:26:39 petere Exp $
$PostgreSQL: pgsql/doc/src/sgml/xfunc.sgml,v 1.86 2004/08/24 00:06:50 neilc Exp $
-->
<sect1 id="xfunc">
......@@ -1618,17 +1618,18 @@ concat_text(PG_FUNCTION_ARGS)
</indexterm>
<para>
If you are thinking about distributing your PostgreSQL extension
modules, setting up a portable build system for them can be fairly
difficult. Therefore the PostgreSQL installation provides a build
If you are thinking about distributing your
<productname>PostgreSQL</> extension modules, setting up a
portable build system for them can be fairly difficult. Therefore
the <productname>PostgreSQL</> installation provides a build
infrastructure for extensions, called <acronym>PGXS</acronym>, so
that simple extension modules can be built simply against an
already installed server. Note that this infrastructure is not
intended to be a universal build system framework that can be used
to build all software interfacing to PostgreSQL; it simply
automates common build rules for simple server extension modules.
For more complicated packages, you need to write your own build
system.
to build all software interfacing to <productname>PostgreSQL</>;
it simply automates common build rules for simple server extension
modules. For more complicated packages, you need to write your
own build system.
</para>
<para>
......@@ -1807,14 +1808,13 @@ include $(PGXS)
<title>Composite-Type Arguments in C-Language Functions</title>
<para>
Composite types do not have a fixed layout like C
structures. Instances of a composite type may contain
null fields. In addition, composite types that are
part of an inheritance hierarchy may have different
fields than other members of the same inheritance hierarchy.
Therefore, <productname>PostgreSQL</productname> provides
a function interface for accessing fields of composite types
from C.
Composite types do not have a fixed layout like C structures.
Instances of a composite type may contain null fields. In
addition, composite types that are part of an inheritance
hierarchy may have different fields than other members of the
same inheritance hierarchy. Therefore,
<productname>PostgreSQL</productname> provides a function
interface for accessing fields of composite types from C.
</para>
<para>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment