Commit 5ec30fae authored by Peter Eisentraut's avatar Peter Eisentraut

Spell checker run

parent cc4f22c1
<!-- $PostgreSQL: pgsql/doc/src/sgml/array.sgml,v 1.40 2004/11/27 21:27:05 petere Exp $ --> <!-- $PostgreSQL: pgsql/doc/src/sgml/array.sgml,v 1.41 2004/12/13 18:05:07 petere Exp $ -->
<sect1 id="arrays"> <sect1 id="arrays">
<title>Arrays</title> <title>Arrays</title>
...@@ -547,8 +547,8 @@ SELECT * FROM sal_emp WHERE 10000 = ALL (pay_by_quarter); ...@@ -547,8 +547,8 @@ SELECT * FROM sal_emp WHERE 10000 = ALL (pay_by_quarter);
equal to one, an additional decoration that indicates the actual equal to one, an additional decoration that indicates the actual
array dimensions will precede the array structure decoration. array dimensions will precede the array structure decoration.
The decoration consists of square braces (<literal>[</> and <literal>]</>) The decoration consists of square braces (<literal>[</> and <literal>]</>)
around each array dimension's lower and upper bound indicies, plus around each array dimension's lower and upper bound indices, plus
a colon (<literal>:</>) delimiter character inbetween. Delimiting the a colon (<literal>:</>) delimiter character in between. Delimiting the
array dimension decoration from the array structure decoration is a array dimension decoration from the array structure decoration is a
single assignment operator (<literal>=</>). For example: single assignment operator (<literal>=</>). For example:
<programlisting> <programlisting>
...@@ -569,7 +569,7 @@ SELECT ARRAY[1,2] || ARRAY[[3,4]] AS array; ...@@ -569,7 +569,7 @@ SELECT ARRAY[1,2] || ARRAY[[3,4]] AS array;
</para> </para>
<para> <para>
In a similar fashion, an array with non-default indicies may be specified In a similar fashion, an array with non-default indices may be specified
using the same literal syntax. For example: using the same literal syntax. For example:
<programlisting> <programlisting>
SELECT f1[1][-2][3] AS e1, f1[1][-1][5] AS e2 SELECT f1[1][-2][3] AS e1, f1[1][-1][5] AS e2
......
<!-- <!--
$PostgreSQL: pgsql/doc/src/sgml/backup.sgml,v 2.52 2004/11/17 18:29:02 tgl Exp $ $PostgreSQL: pgsql/doc/src/sgml/backup.sgml,v 2.53 2004/12/13 18:05:07 petere Exp $
--> -->
<chapter id="backup"> <chapter id="backup">
<title>Backup and Restore</title> <title>Backup and Restore</title>
...@@ -317,7 +317,7 @@ tar -cf backup.tar /usr/local/pgsql/data ...@@ -317,7 +317,7 @@ tar -cf backup.tar /usr/local/pgsql/data
get a usable backup. Half-way measures such as disallowing all get a usable backup. Half-way measures such as disallowing all
connections will <emphasis>not</emphasis> work connections will <emphasis>not</emphasis> work
(mainly because <command>tar</command> and similar tools do not take an (mainly because <command>tar</command> and similar tools do not take an
atomic snapshot of the state of the filesystem at a point in atomic snapshot of the state of the file system at a point in
time). Information about stopping the server can be found in time). Information about stopping the server can be found in
<xref linkend="postmaster-shutdown">. Needless to say that you <xref linkend="postmaster-shutdown">. Needless to say that you
also need to shut down the server before restoring the data. also need to shut down the server before restoring the data.
...@@ -365,7 +365,7 @@ tar -cf backup.tar /usr/local/pgsql/data ...@@ -365,7 +365,7 @@ tar -cf backup.tar /usr/local/pgsql/data
If your database is spread across multiple volumes (for example, If your database is spread across multiple volumes (for example,
data files and WAL log on different disks) there may not be any way data files and WAL log on different disks) there may not be any way
to obtain exactly-simultaneous frozen snapshots of all the volumes. to obtain exactly-simultaneous frozen snapshots of all the volumes.
Read your filesystem documentation very carefully before trusting Read your file system documentation very carefully before trusting
to the consistent-snapshot technique in such situations. to the consistent-snapshot technique in such situations.
</para> </para>
...@@ -402,7 +402,7 @@ tar -cf backup.tar /usr/local/pgsql/data ...@@ -402,7 +402,7 @@ tar -cf backup.tar /usr/local/pgsql/data
database can be restored to consistency by <quote>replaying</> the database can be restored to consistency by <quote>replaying</> the
log entries made since the last checkpoint. However, the existence log entries made since the last checkpoint. However, the existence
of the log makes it possible to use a third strategy for backing up of the log makes it possible to use a third strategy for backing up
databases: we can combine a filesystem-level backup with backup of databases: we can combine a file-system-level backup with backup of
the WAL files. If recovery is needed, we restore the backup and the WAL files. If recovery is needed, we restore the backup and
then replay from the backed-up WAL files to bring the backup up to then replay from the backed-up WAL files to bring the backup up to
current time. This approach is more complex to administer than current time. This approach is more complex to administer than
...@@ -414,7 +414,7 @@ tar -cf backup.tar /usr/local/pgsql/data ...@@ -414,7 +414,7 @@ tar -cf backup.tar /usr/local/pgsql/data
We do not need a perfectly consistent backup as the starting point. We do not need a perfectly consistent backup as the starting point.
Any internal inconsistency in the backup will be corrected by log Any internal inconsistency in the backup will be corrected by log
replay (this is not significantly different from what happens during replay (this is not significantly different from what happens during
crash recovery). So we don't need filesystem snapshot capability, crash recovery). So we don't need file system snapshot capability,
just <application>tar</> or a similar archiving tool. just <application>tar</> or a similar archiving tool.
</para> </para>
</listitem> </listitem>
...@@ -449,7 +449,7 @@ tar -cf backup.tar /usr/local/pgsql/data ...@@ -449,7 +449,7 @@ tar -cf backup.tar /usr/local/pgsql/data
</para> </para>
<para> <para>
As with the plain filesystem-backup technique, this method can only As with the plain file-system-backup technique, this method can only
support restoration of an entire database cluster, not a subset. support restoration of an entire database cluster, not a subset.
Also, it requires a lot of archival storage: the base backup may be bulky, Also, it requires a lot of archival storage: the base backup may be bulky,
and a busy system will generate many megabytes of WAL traffic that and a busy system will generate many megabytes of WAL traffic that
...@@ -618,7 +618,7 @@ archive_command = 'test ! -f .../%f &amp;&amp; cp %p .../%f' ...@@ -618,7 +618,7 @@ archive_command = 'test ! -f .../%f &amp;&amp; cp %p .../%f'
<filename>postgresql.conf</>, <filename>pg_hba.conf</> and <filename>postgresql.conf</>, <filename>pg_hba.conf</> and
<filename>pg_ident.conf</>) after the initial base backup. <filename>pg_ident.conf</>) after the initial base backup.
You may wish to keep the configuration files in a location that will You may wish to keep the configuration files in a location that will
be backed up by your regular filesystem backup procedures. be backed up by your regular file system backup procedures.
</para> </para>
</sect2> </sect2>
...@@ -655,7 +655,7 @@ SELECT pg_start_backup('label'); ...@@ -655,7 +655,7 @@ SELECT pg_start_backup('label');
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Perform the backup, using any convenient filesystem-backup tool Perform the backup, using any convenient file-system-backup tool
such as <application>tar</> or <application>cpio</>. It is neither such as <application>tar</> or <application>cpio</>. It is neither
necessary nor desirable to stop normal operation of the database necessary nor desirable to stop normal operation of the database
while you do this. while you do this.
...@@ -867,7 +867,7 @@ restore_command = 'cp /mnt/server/archivedir/%f %p' ...@@ -867,7 +867,7 @@ restore_command = 'cp /mnt/server/archivedir/%f %p'
It is important that the command return nonzero exit status on failure. It is important that the command return nonzero exit status on failure.
The command <emphasis>will</> be asked for log files that are not present The command <emphasis>will</> be asked for log files that are not present
in the archive; it must return nonzero when so asked. This is not an in the archive; it must return nonzero when so asked. This is not an
error condition. Be aware also that the basename of the <literal>%p</> error condition. Be aware also that the base name of the <literal>%p</>
path will be different from <literal>%f</>; do not expect them to be path will be different from <literal>%f</>; do not expect them to be
interchangeable. interchangeable.
</para> </para>
...@@ -948,7 +948,7 @@ restore_command = 'copy /mnt/server/archivedir/%f "%p"' # Windows ...@@ -948,7 +948,7 @@ restore_command = 'copy /mnt/server/archivedir/%f "%p"' # Windows
</term> </term>
<listitem> <listitem>
<para> <para>
This parameter specifies the timestamp up to which recovery This parameter specifies the time stamp up to which recovery
will proceed. will proceed.
At most one of <varname>recovery_target_time</> and At most one of <varname>recovery_target_time</> and
<xref linkend="recovery-target-xid"> can be specified. <xref linkend="recovery-target-xid"> can be specified.
...@@ -1098,7 +1098,7 @@ restore_command = 'copy /mnt/server/archivedir/%f "%p"' # Windows ...@@ -1098,7 +1098,7 @@ restore_command = 'copy /mnt/server/archivedir/%f "%p"' # Windows
<itemizedlist> <itemizedlist>
<listitem> <listitem>
<para> <para>
Operations on non-btree indexes (hash, R-tree, and GiST indexes) are Operations on non-B-tree indexes (hash, R-tree, and GiST indexes) are
not presently WAL-logged, so replay will not update these index types. not presently WAL-logged, so replay will not update these index types.
The recommended workaround is to manually <command>REINDEX</> each The recommended workaround is to manually <command>REINDEX</> each
such index after completing a recovery operation. such index after completing a recovery operation.
...@@ -1196,7 +1196,7 @@ psql template1 < backup ...@@ -1196,7 +1196,7 @@ psql template1 < backup
<para> <para>
You will always need a SQL dump (<application>pg_dump</> dump) for You will always need a SQL dump (<application>pg_dump</> dump) for
migrating to a new release. Filesystem-level backups (including migrating to a new release. File-system-level backups (including
on-line backups) will not work, for the same reason that you can't on-line backups) will not work, for the same reason that you can't
just do the update in-place: the file formats won't necessarily be just do the update in-place: the file formats won't necessarily be
compatible across major releases. compatible across major releases.
......
<!-- <!--
Documentation of the system catalogs, directed toward PostgreSQL developers Documentation of the system catalogs, directed toward PostgreSQL developers
$PostgreSQL: pgsql/doc/src/sgml/catalogs.sgml,v 2.93 2004/12/01 19:00:27 tgl Exp $ $PostgreSQL: pgsql/doc/src/sgml/catalogs.sgml,v 2.94 2004/12/13 18:05:07 petere Exp $
--> -->
<chapter id="catalogs"> <chapter id="catalogs">
...@@ -980,7 +980,7 @@ ...@@ -980,7 +980,7 @@
represents converting from one type to another and applying a length represents converting from one type to another and applying a length
coercion in a single step. When no such entry is available, coercion coercion in a single step. When no such entry is available, coercion
to a type that uses a type modifier involves two steps, one to to a type that uses a type modifier involves two steps, one to
convert between datatypes and a second to apply the modifier. convert between data types and a second to apply the modifier.
</para> </para>
</sect1> </sect1>
...@@ -1037,7 +1037,7 @@ ...@@ -1037,7 +1037,7 @@
<entry><type>oid</type></entry> <entry><type>oid</type></entry>
<entry><literal><link linkend="catalog-pg-type"><structname>pg_type</structname></link>.oid</literal></entry> <entry><literal><link linkend="catalog-pg-type"><structname>pg_type</structname></link>.oid</literal></entry>
<entry> <entry>
The OID of the data type that corresponds to this table's rowtype, The OID of the data type that corresponds to this table's row type,
if any (zero for indexes, which have no <structname>pg_type</> entry) if any (zero for indexes, which have no <structname>pg_type</> entry)
</entry> </entry>
</row> </row>
...@@ -2010,7 +2010,7 @@ ...@@ -2010,7 +2010,7 @@
<row> <row>
<entry><structfield>indclass</structfield></entry> <entry><structfield>indclass</structfield></entry>
<entry><type>oidvector</type></entry> <entry><type>oidvector</type></entry>
<entry><link linkend="catalog-pg-opclass"><structname>pg_opclass</structname></link>.oid</entry> <entry><literal><link linkend="catalog-pg-opclass"><structname>pg_opclass</structname></link>.oid</literal></entry>
<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
......
<!-- $PostgreSQL: pgsql/doc/src/sgml/ddl.sgml,v 1.33 2004/11/27 21:27:06 petere Exp $ --> <!-- $PostgreSQL: pgsql/doc/src/sgml/ddl.sgml,v 1.34 2004/12/13 18:05:08 petere Exp $ -->
<chapter id="ddl"> <chapter id="ddl">
<title>Data Definition</title> <title>Data Definition</title>
...@@ -1148,7 +1148,7 @@ WHERE c.altitude &gt; 500 and c.tableoid = p.oid; ...@@ -1148,7 +1148,7 @@ WHERE c.altitude &gt; 500 and c.tableoid = p.oid;
<literal>UNIQUE</> or a <literal>PRIMARY KEY</>, this would not stop the <literal>UNIQUE</> or a <literal>PRIMARY KEY</>, this would not stop the
<structname>capitals</> table from having rows with names duplicating <structname>capitals</> table from having rows with names duplicating
rows in <structname>cities</>. And those duplicate rows would by rows in <structname>cities</>. And those duplicate rows would by
default show up in SELECTs from <structname>cities</>. In fact, by default show up in queries from <structname>cities</>. In fact, by
default <structname>capitals</> would have no unique constraint at all, default <structname>capitals</> would have no unique constraint at all,
and so could contain multiple rows with the same name. and so could contain multiple rows with the same name.
You could add a unique constraint to <structname>capitals</>, but this You could add a unique constraint to <structname>capitals</>, but this
......
<!-- <!--
$PostgreSQL: pgsql/doc/src/sgml/external-projects.sgml,v 1.4 2004/12/03 06:30:40 momjian Exp $ $PostgreSQL: pgsql/doc/src/sgml/external-projects.sgml,v 1.5 2004/12/13 18:05:08 petere Exp $
--> -->
<chapter id="external-projects"> <chapter id="external-projects">
...@@ -43,16 +43,6 @@ $PostgreSQL: pgsql/doc/src/sgml/external-projects.sgml,v 1.4 2004/12/03 06:30:40 ...@@ -43,16 +43,6 @@ $PostgreSQL: pgsql/doc/src/sgml/external-projects.sgml,v 1.4 2004/12/03 06:30:40
popular interfaces are: popular interfaces are:
<variablelist> <variablelist>
<varlistentry>
<term>ODBC</term>
<listitem>
<para>
This is the most common interface for <application>Windows</>
applications.
</para>
</listitem>
</varlistentry>
<varlistentry> <varlistentry>
<term>psqlODBC</term> <term>psqlODBC</term>
<listitem> <listitem>
...@@ -155,7 +145,7 @@ $PostgreSQL: pgsql/doc/src/sgml/external-projects.sgml,v 1.4 2004/12/03 06:30:40 ...@@ -155,7 +145,7 @@ $PostgreSQL: pgsql/doc/src/sgml/external-projects.sgml,v 1.4 2004/12/03 06:30:40
separate projects. <application>pgFoundry</> at <ulink separate projects. <application>pgFoundry</> at <ulink
url="http://pgfoundry.org">http://pgfoundry.org</ulink> contains url="http://pgfoundry.org">http://pgfoundry.org</ulink> contains
even more projects. Other projects are not even hosted on these even more projects. Other projects are not even hosted on these
servers and you will have to do an internet search to find them. servers and you will have to do an Internet search to find them.
</para> </para>
</sect1> </sect1>
...@@ -171,21 +161,21 @@ $PostgreSQL: pgsql/doc/src/sgml/external-projects.sgml,v 1.4 2004/12/03 06:30:40 ...@@ -171,21 +161,21 @@ $PostgreSQL: pgsql/doc/src/sgml/external-projects.sgml,v 1.4 2004/12/03 06:30:40
<productname>PostgreSQL</> was designed from the start to be <productname>PostgreSQL</> was designed from the start to be
extensible. For this reason, extensions loaded into the database can extensible. For this reason, extensions loaded into the database can
function just like features that are packaged with the database. The function just like features that are packaged with the database. The
<filename>/contrib</> directory shipped with the source code <filename>contrib/</> directory shipped with the source code
contains a large number of extensions. The <filename>README</> file contains a large number of extensions. The <filename>README</> file
in that directory contains a summary. They include conversion tools, in that directory contains a summary. They include conversion tools,
full-text indexing, <acronym>XML</> tools, and additional data types full-text indexing, <acronym>XML</> tools, and additional data types
and indexing methods. Other extensions are developed independently, and indexing methods. Other extensions are developed independently,
like <application>PostGIS</>. Even <application>PostgreSQL</> like <application>PostGIS</>. Even <application>PostgreSQL</>
replication solutions are developed externally. For example, replication solutions are developed externally. For example,
<application>Slony</> is a popular master/slave replication solution <application>Slony-I</> is a popular master/slave replication solution
that is developed independently from the main projects. that is developed independently from the main projects.
</para> </para>
<para> <para>
There are several administration tools available for There are several administration tools available for
<productname>PostgreSQL</>. The most popular is <productname>PostgreSQL</>. The most popular is
<application>pgadmin</>, and there are several commercially <application>pgAdmin</>, and there are several commercially
available ones. available ones.
</para> </para>
......
<!-- <!--
$PostgreSQL: pgsql/doc/src/sgml/func.sgml,v 1.229 2004/12/03 18:34:31 momjian Exp $ $PostgreSQL: pgsql/doc/src/sgml/func.sgml,v 1.230 2004/12/13 18:05:08 petere Exp $
PostgreSQL documentation PostgreSQL documentation
--> -->
...@@ -8553,7 +8553,7 @@ SELECT pg_type_is_visible('myschema.widget'::regtype); ...@@ -8553,7 +8553,7 @@ SELECT pg_type_is_visible('myschema.widget'::regtype);
<row> <row>
<entry><literal><function>pg_get_serial_sequence</function>(<parameter>table_name</parameter>, <parameter>column_name</parameter>)</literal></entry> <entry><literal><function>pg_get_serial_sequence</function>(<parameter>table_name</parameter>, <parameter>column_name</parameter>)</literal></entry>
<entry><type>text</type></entry> <entry><type>text</type></entry>
<entry>get name of the sequence that a serial or bigserial column <entry>get name of the sequence that a <type>serial</type> or <type>bigserial</type> column
uses</entry> uses</entry>
</row> </row>
<row> <row>
...@@ -8801,7 +8801,7 @@ SELECT set_config('log_statement_stats', 'off', false); ...@@ -8801,7 +8801,7 @@ SELECT set_config('log_statement_stats', 'off', false);
This function returns 1 if successful, 0 if not successful. This function returns 1 if successful, 0 if not successful.
The process ID (<literal>pid</literal>) of an active backend can be found The process ID (<literal>pid</literal>) of an active backend can be found
from the <structfield>procpid</structfield> column in the from the <structfield>procpid</structfield> column in the
<structname>pg_stat_activity</structname> view, or by listing the postgres <structname>pg_stat_activity</structname> view, or by listing the <command>postgres</command>
processes on the server with <application>ps</>. processes on the server with <application>ps</>.
</para> </para>
......
<!-- $PostgreSQL: pgsql/doc/src/sgml/installation.sgml,v 1.211 2004/12/11 20:54:14 petere Exp $ --> <!-- $PostgreSQL: pgsql/doc/src/sgml/installation.sgml,v 1.212 2004/12/13 18:05:08 petere Exp $ -->
<chapter id="installation"> <chapter id="installation">
<title><![%standalone-include[<productname>PostgreSQL</>]]> <title><![%standalone-include[<productname>PostgreSQL</>]]>
...@@ -173,8 +173,8 @@ su - postgres ...@@ -173,8 +173,8 @@ su - postgres
<para> <para>
To build the <application>PL/Python</> server programming To build the <application>PL/Python</> server programming
language, you need a <productname>Python</productname> language, you need a <productname>Python</productname>
installation with the header files and the distutils module. installation with the header files and the <application>distutils</application> module.
The distutils module is included by default with The <application>distutils</application> module is included by default with
<productname>Python</productname> 1.6 and later; users of <productname>Python</productname> 1.6 and later; users of
earlier versions of <productname>Python</productname> will need earlier versions of <productname>Python</productname> will need
to install it. to install it.
......
<!-- <!--
$PostgreSQL: pgsql/doc/src/sgml/libpq.sgml,v 1.170 2004/12/02 15:32:52 momjian Exp $ $PostgreSQL: pgsql/doc/src/sgml/libpq.sgml,v 1.171 2004/12/13 18:05:08 petere Exp $
--> -->
<chapter id="libpq"> <chapter id="libpq">
...@@ -1203,7 +1203,7 @@ about such errors. ...@@ -1203,7 +1203,7 @@ about such errors.
</para> </para>
<para> <para>
At present, there is no way to determine the actual datatype inferred for At present, there is no way to determine the actual data type inferred for
any parameters whose types are not specified in <parameter>paramTypes[]</>. any parameters whose types are not specified in <parameter>paramTypes[]</>.
This is a <application>libpq</> omission that will probably be rectified This is a <application>libpq</> omission that will probably be rectified
in a future release. in a future release.
......
<!-- <!--
$PostgreSQL: pgsql/doc/src/sgml/maintenance.sgml,v 1.38 2004/11/15 06:32:14 neilc Exp $ $PostgreSQL: pgsql/doc/src/sgml/maintenance.sgml,v 1.39 2004/12/13 18:05:08 petere Exp $
--> -->
<chapter id="maintenance"> <chapter id="maintenance">
...@@ -183,7 +183,7 @@ $PostgreSQL: pgsql/doc/src/sgml/maintenance.sgml,v 1.38 2004/11/15 06:32:14 neil ...@@ -183,7 +183,7 @@ $PostgreSQL: pgsql/doc/src/sgml/maintenance.sgml,v 1.38 2004/11/15 06:32:14 neil
basis, consider doing it with <command>TRUNCATE</command> rather basis, consider doing it with <command>TRUNCATE</command> rather
than using <command>DELETE</command> followed by than using <command>DELETE</command> followed by
<command>VACUUM</command>. <command>TRUNCATE</command> removes the <command>VACUUM</command>. <command>TRUNCATE</command> removes the
entire content of the table immediately, without recquiring a entire content of the table immediately, without requiring a
subsequent <command>VACUUM</command> or <command>VACUUM subsequent <command>VACUUM</command> or <command>VACUUM
FULL</command> to reclaim the now-unused disk space. FULL</command> to reclaim the now-unused disk space.
</para> </para>
...@@ -502,7 +502,7 @@ pg_ctl start | rotatelogs /var/log/pgsql_log 86400 ...@@ -502,7 +502,7 @@ pg_ctl start | rotatelogs /var/log/pgsql_log 86400
just when you need them the most. Also, on <productname>linux</>, just when you need them the most. Also, on <productname>linux</>,
<application>syslog</> will sync each message to disk, yielding poor <application>syslog</> will sync each message to disk, yielding poor
performance. (You can use a <literal>-</> at the start of the file name performance. (You can use a <literal>-</> at the start of the file name
in the <application>syslog</> config file to disable this behavior.) in the <application>syslog</> configuration file to disable this behavior.)
</para> </para>
<para> <para>
......
<!-- <!--
$PostgreSQL: pgsql/doc/src/sgml/manage-ag.sgml,v 2.37 2004/12/02 19:28:48 tgl Exp $ $PostgreSQL: pgsql/doc/src/sgml/manage-ag.sgml,v 2.38 2004/12/13 18:05:08 petere Exp $
--> -->
<chapter id="managing-databases"> <chapter id="managing-databases">
...@@ -379,10 +379,10 @@ CREATE TABLESPACE fastspace LOCATION '/mnt/sda1/postgresql/data'; ...@@ -379,10 +379,10 @@ CREATE TABLESPACE fastspace LOCATION '/mnt/sda1/postgresql/data';
<note> <note>
<para> <para>
There is usually not much point in making more than one There is usually not much point in making more than one
tablespace per logical filesystem, since you cannot control the location tablespace per logical file system, since you cannot control the location
of individual files within a logical filesystem. However, of individual files within a logical file system. However,
<productname>PostgreSQL</> does not enforce any such limitation, and <productname>PostgreSQL</> does not enforce any such limitation, and
indeed it is not directly aware of the filesystem boundaries on your indeed it is not directly aware of the file system boundaries on your
system. It just stores files in the directories you tell it to use. system. It just stores files in the directories you tell it to use.
</para> </para>
</note> </note>
......
<!-- <!--
$PostgreSQL: pgsql/doc/src/sgml/plperl.sgml,v 2.33 2004/12/11 20:03:37 petere Exp $ $PostgreSQL: pgsql/doc/src/sgml/plperl.sgml,v 2.34 2004/12/13 18:05:08 petere Exp $
--> -->
<chapter id="plperl"> <chapter id="plperl">
...@@ -295,7 +295,7 @@ $$ LANGUAGE plperl; ...@@ -295,7 +295,7 @@ $$ LANGUAGE plperl;
<para> <para>
Here is an example of a PL/Perl function returning a row set of a Here is an example of a PL/Perl function returning a row set of a
composite type. Since a row set is always a reference to an array composite type. Since a row set is always a reference to an array
and a composite type is always a reference to a hash, a rowset of a and a composite type is always a reference to a hash, a row set of a
composite type is a reference to an array of hash references. composite type is a reference to an array of hash references.
<programlisting> <programlisting>
CREATE TYPE testsetperl AS (f1 integer, f2 text, f3 text); CREATE TYPE testsetperl AS (f1 integer, f2 text, f3 text);
......
<!-- <!--
$PostgreSQL: pgsql/doc/src/sgml/plpgsql.sgml,v 1.50 2004/12/03 17:12:09 momjian Exp $ $PostgreSQL: pgsql/doc/src/sgml/plpgsql.sgml,v 1.51 2004/12/13 18:05:08 petere Exp $
--> -->
<chapter id="plpgsql"> <chapter id="plpgsql">
...@@ -2576,7 +2576,7 @@ CREATE TRIGGER emp_stamp BEFORE INSERT OR UPDATE ON emp ...@@ -2576,7 +2576,7 @@ CREATE TRIGGER emp_stamp BEFORE INSERT OR UPDATE ON emp
<para> <para>
This example trigger ensures that any insert, update or delete of a row This example trigger ensures that any insert, update or delete of a row
in the emp table is recorded (i.e. audited) in the emp_audit table. in the <literal>emp</literal> table is recorded (i.e., audited) in the <literal>emp_audit</literal> table.
The current time and user name are stamped into the row, together with The current time and user name are stamped into the row, together with
the type of operation performed on it. the type of operation performed on it.
</para> </para>
......
<!-- $PostgreSQL: pgsql/doc/src/sgml/protocol.sgml,v 1.55 2004/11/15 06:32:14 neilc Exp $ --> <!-- $PostgreSQL: pgsql/doc/src/sgml/protocol.sgml,v 1.56 2004/12/13 18:05:08 petere Exp $ -->
<chapter id="protocol"> <chapter id="protocol">
<title>Frontend/Backend Protocol</title> <title>Frontend/Backend Protocol</title>
...@@ -902,7 +902,7 @@ ...@@ -902,7 +902,7 @@
The function call was completed and returned the result given The function call was completed and returned the result given
in the message. in the message.
(Note that the Function Call protocol can only handle a single (Note that the Function Call protocol can only handle a single
scalar result, not a rowtype or set of results.) scalar result, not a row type or set of results.)
</Para> </Para>
</ListItem> </ListItem>
</VarListEntry> </VarListEntry>
......
<!-- <!--
$PostgreSQL: pgsql/doc/src/sgml/ref/alter_user.sgml,v 1.33 2004/05/06 16:59:16 momjian Exp $ $PostgreSQL: pgsql/doc/src/sgml/ref/alter_user.sgml,v 1.34 2004/12/13 18:05:10 petere Exp $
PostgreSQL documentation PostgreSQL documentation
--> -->
...@@ -57,7 +57,7 @@ ALTER USER <replaceable class="PARAMETER">name</replaceable> RESET <replaceable> ...@@ -57,7 +57,7 @@ ALTER USER <replaceable class="PARAMETER">name</replaceable> RESET <replaceable>
The second variant changes the name of the user. Only a database The second variant changes the name of the user. Only a database
superuser can rename user accounts. The session user cannot be superuser can rename user accounts. The session user cannot be
renamed. (Connect as a different user if you need to do that.) renamed. (Connect as a different user if you need to do that.)
Because <literal>MD5</>-encrypted passwords use the username as Because <literal>MD5</>-encrypted passwords use the user name as
cryptographic salt, renaming a user clears their <literal>MD5</> cryptographic salt, renaming a user clears their <literal>MD5</>
password. password.
</para> </para>
......
<!-- <!--
$PostgreSQL: pgsql/doc/src/sgml/ref/copy.sgml,v 1.61 2004/12/02 15:32:53 momjian Exp $ $PostgreSQL: pgsql/doc/src/sgml/ref/copy.sgml,v 1.62 2004/12/13 18:05:10 petere Exp $
PostgreSQL documentation PostgreSQL documentation
--> -->
...@@ -231,7 +231,7 @@ COPY <replaceable class="parameter">tablename</replaceable> [ ( <replaceable cla ...@@ -231,7 +231,7 @@ COPY <replaceable class="parameter">tablename</replaceable> [ ( <replaceable cla
<listitem> <listitem>
<para> <para>
In <literal>CSV</> <command>COPY FROM</> mode, process each In <literal>CSV</> <command>COPY FROM</> mode, process each
specified column as though it were quoted and hance not a specified column as though it were quoted and hence not a
<literal>NULL</> value. For the default <literal>null string</> in <literal>NULL</> value. For the default <literal>null string</> in
<literal>CSV</> mode (<literal>''</>), this causes a missing <literal>CSV</> mode (<literal>''</>), this causes a missing
values to be input as a zero-length strings. values to be input as a zero-length strings.
......
<!-- $PostgreSQL: pgsql/doc/src/sgml/ref/create_cast.sgml,v 1.19 2004/11/27 21:27:07 petere Exp $ --> <!-- $PostgreSQL: pgsql/doc/src/sgml/ref/create_cast.sgml,v 1.20 2004/12/13 18:05:10 petere Exp $ -->
<refentry id="SQL-CREATECAST"> <refentry id="SQL-CREATECAST">
<refmeta> <refmeta>
...@@ -198,7 +198,7 @@ SELECT 'The time is ' || CAST(now() AS text); ...@@ -198,7 +198,7 @@ SELECT 'The time is ' || CAST(now() AS text);
(Bizarrely, the SQL spec demands different behaviors for explicit and (Bizarrely, the SQL spec demands different behaviors for explicit and
implicit casts in some cases. This argument is supplied for functions implicit casts in some cases. This argument is supplied for functions
that must implement such casts. It is not recommended that you design that must implement such casts. It is not recommended that you design
your own datatypes so that this matters.) your own data types so that this matters.)
</para> </para>
<para> <para>
...@@ -219,7 +219,7 @@ SELECT 'The time is ' || CAST(now() AS text); ...@@ -219,7 +219,7 @@ SELECT 'The time is ' || CAST(now() AS text);
represents converting from one type to another and applying a length represents converting from one type to another and applying a length
coercion in a single step. When no such entry is available, coercion coercion in a single step. When no such entry is available, coercion
to a type that uses a type modifier involves two steps, one to to a type that uses a type modifier involves two steps, one to
convert between datatypes and a second to apply the modifier. convert between data types and a second to apply the modifier.
</para> </para>
</refsect1> </refsect1>
...@@ -251,7 +251,7 @@ SELECT 'The time is ' || CAST(now() AS text); ...@@ -251,7 +251,7 @@ SELECT 'The time is ' || CAST(now() AS text);
<para> <para>
While not required, it is recommended that you continue to follow this old While not required, it is recommended that you continue to follow this old
convention of naming cast implementation functions after the target data convention of naming cast implementation functions after the target data
type. Many users are used to being able to cast datatypes using a type. Many users are used to being able to cast data types using a
function-style notation, that is function-style notation, that is
<replaceable>typename</>(<replaceable>x</>). This notation is in fact <replaceable>typename</>(<replaceable>x</>). This notation is in fact
nothing more nor less than a call of the cast implementation function; it nothing more nor less than a call of the cast implementation function; it
......
<!-- <!--
$PostgreSQL: pgsql/doc/src/sgml/ref/create_table.sgml,v 1.87 2004/11/27 21:27:07 petere Exp $ $PostgreSQL: pgsql/doc/src/sgml/ref/create_table.sgml,v 1.88 2004/12/13 18:05:10 petere Exp $
PostgreSQL documentation PostgreSQL documentation
--> -->
...@@ -974,11 +974,12 @@ CREATE TABLE cinemas ( ...@@ -974,11 +974,12 @@ CREATE TABLE cinemas (
</refsect2> </refsect2>
<refsect2> <refsect2>
<title>TABLESPACE and USING INDEX TABLESPACE</title> <title>Tablespaces</title>
<para> <para>
The <productname>PostgreSQL</productname> concept of tablespaces is not The <productname>PostgreSQL</productname> concept of tablespaces is not
standard. part of the standard. Hence, the clauses <literal>TABLESPACE</literal>
and <literal>USING INDEX TABLESPACE</literal> are extensions.
</para> </para>
</refsect2> </refsect2>
</refsect1> </refsect1>
......
<!-- <!--
$PostgreSQL: pgsql/doc/src/sgml/ref/create_table_as.sgml,v 1.25 2004/11/27 21:27:07 petere Exp $ $PostgreSQL: pgsql/doc/src/sgml/ref/create_table_as.sgml,v 1.26 2004/12/13 18:05:10 petere Exp $
PostgreSQL documentation PostgreSQL documentation
--> -->
...@@ -136,7 +136,7 @@ CREATE [ [ GLOBAL | LOCAL ] { TEMPORARY | TEMP } ] TABLE <replaceable>table_name ...@@ -136,7 +136,7 @@ CREATE [ [ GLOBAL | LOCAL ] { TEMPORARY | TEMP } ] TABLE <replaceable>table_name
linkend="sql-selectinto" endterm="sql-selectinto-title">, but it is linkend="sql-selectinto" endterm="sql-selectinto-title">, but it is
preferred since it is less likely to be confused with other uses of preferred since it is less likely to be confused with other uses of
the <command>SELECT INTO</> syntax. Furthermore, <command>CREATE the <command>SELECT INTO</> syntax. Furthermore, <command>CREATE
TABLE AS</command> offers a superset of the functionality offerred TABLE AS</command> offers a superset of the functionality offered
by <command>SELECT INTO</command>. by <command>SELECT INTO</command>.
</para> </para>
...@@ -150,13 +150,13 @@ CREATE [ [ GLOBAL | LOCAL ] { TEMPORARY | TEMP } ] TABLE <replaceable>table_name ...@@ -150,13 +150,13 @@ CREATE [ [ GLOBAL | LOCAL ] { TEMPORARY | TEMP } ] TABLE <replaceable>table_name
frequently executed, the OID counter would be rapidly frequently executed, the OID counter would be rapidly
incremented. As of <productname>PostgresSQL</productname> 8.0, incremented. As of <productname>PostgresSQL</productname> 8.0,
the <command>CREATE TABLE AS</command> command allows the user to the <command>CREATE TABLE AS</command> command allows the user to
explicitely specify whether OIDs should be included. If the explicitly specify whether OIDs should be included. If the
presence of OIDs is not explicitely specified, presence of OIDs is not explicitly specified,
the <xref linkend="guc-default-with-oids"> configuration variable is the <xref linkend="guc-default-with-oids"> configuration variable is
used. While this variable currently defaults to true, the default used. While this variable currently defaults to true, the default
value may be changed in the future. Therefore, applications that value may be changed in the future. Therefore, applications that
require OIDs in the table created by <command>CREATE TABLE require OIDs in the table created by <command>CREATE TABLE
AS</command> should explicitely specify <literal>WITH AS</command> should explicitly specify <literal>WITH
OIDS</literal> to ensure compatibility with future versions OIDS</literal> to ensure compatibility with future versions
of <productname>PostgreSQL</productname>. of <productname>PostgreSQL</productname>.
</para> </para>
......
<!-- <!--
$PostgreSQL: pgsql/doc/src/sgml/ref/psql-ref.sgml,v 1.123 2004/10/06 18:39:15 momjian Exp $ $PostgreSQL: pgsql/doc/src/sgml/ref/psql-ref.sgml,v 1.124 2004/12/13 18:05:10 petere Exp $
PostgreSQL documentation PostgreSQL documentation
--> -->
...@@ -493,7 +493,7 @@ PostgreSQL documentation ...@@ -493,7 +493,7 @@ PostgreSQL documentation
these options are required, defaults do apply. If you omit the host these options are required, defaults do apply. If you omit the host
name, <application>psql</> will connect via a Unix domain socket name, <application>psql</> will connect via a Unix domain socket
to a server on the local host, or via TCP/IP to <literal>localhost</> on machines to a server on the local host, or via TCP/IP to <literal>localhost</> on machines
that don't have unix domain sockets. The default port number is compile-time determined. that don't have Unix domain sockets. The default port number is compile-time determined.
Since the database server uses the same default, you will not have Since the database server uses the same default, you will not have
to specify the port in most cases. The default user name is your to specify the port in most cases. The default user name is your
Unix user name, as is the default database name. Note that you can't Unix user name, as is the default database name. Note that you can't
...@@ -1603,7 +1603,7 @@ lo_import 152801 ...@@ -1603,7 +1603,7 @@ lo_import 152801
class="parameter">filename</replaceable> is omitted, the history class="parameter">filename</replaceable> is omitted, the history
is written to the standard output. This option is only available is written to the standard output. This option is only available
if <application>psql</application> is configured to use the if <application>psql</application> is configured to use the
<acronym>GNU</acronym> readline (or history) library. <acronym>GNU</acronym> <application>Readline</application> library.
</para> </para>
<note> <note>
...@@ -2368,7 +2368,7 @@ testdb=> <userinput>\set content '\'' `sed -e "s/'/\\\\\\'/g" < my_file.txt` '\' ...@@ -2368,7 +2368,7 @@ testdb=> <userinput>\set content '\'' `sed -e "s/'/\\\\\\'/g" < my_file.txt` '\'
Prompts may contain terminal control characters which, for Prompts may contain terminal control characters which, for
example, change the color, background, or style of the prompt example, change the color, background, or style of the prompt
text, or change the title of the terminal window. In order for text, or change the title of the terminal window. In order for
the line editing features of readline to work properly, these the line editing features of <application>Readline</application> to work properly, these
non-printing control characters must be designated as invisible non-printing control characters must be designated as invisible
by surrounding them with <literal>%[</literal> and by surrounding them with <literal>%[</literal> and
<literal>%]</literal>. Multiple pairs of these may occur within <literal>%]</literal>. Multiple pairs of these may occur within
......
<!-- <!--
$PostgreSQL: pgsql/doc/src/sgml/release.sgml,v 1.315 2004/12/01 19:00:27 tgl Exp $ $PostgreSQL: pgsql/doc/src/sgml/release.sgml,v 1.316 2004/12/13 18:05:08 petere Exp $
--> -->
<appendix id="release"> <appendix id="release">
...@@ -519,7 +519,7 @@ $PostgreSQL: pgsql/doc/src/sgml/release.sgml,v 1.315 2004/12/01 19:00:27 tgl Exp ...@@ -519,7 +519,7 @@ $PostgreSQL: pgsql/doc/src/sgml/release.sgml,v 1.315 2004/12/01 19:00:27 tgl Exp
<listitem> <listitem>
<para> <para>
Improve btree index performance for duplicate keys (Dmitry Tkach, Tom) Improve B-tree index performance for duplicate keys (Dmitry Tkach, Tom)
</para> </para>
<para> <para>
This improves the way indexes are scanned when many duplicate This improves the way indexes are scanned when many duplicate
...@@ -1244,7 +1244,7 @@ $PostgreSQL: pgsql/doc/src/sgml/release.sgml,v 1.315 2004/12/01 19:00:27 tgl Exp ...@@ -1244,7 +1244,7 @@ $PostgreSQL: pgsql/doc/src/sgml/release.sgml,v 1.315 2004/12/01 19:00:27 tgl Exp
and <command>CHECKPOINT</command> (Tom) and <command>CHECKPOINT</command> (Tom)
</para> </para>
<para> <para>
In 7.3 and 7.4, a long-running btree index build could block concurrent In 7.3 and 7.4, a long-running B-tree index build could block concurrent
<command>CHECKPOINT</>s from completing, thereby causing WAL bloat because the <command>CHECKPOINT</>s from completing, thereby causing WAL bloat because the
WAL log could not be recycled. WAL log could not be recycled.
</para> </para>
...@@ -1426,8 +1426,8 @@ $PostgreSQL: pgsql/doc/src/sgml/release.sgml,v 1.315 2004/12/01 19:00:27 tgl Exp ...@@ -1426,8 +1426,8 @@ $PostgreSQL: pgsql/doc/src/sgml/release.sgml,v 1.315 2004/12/01 19:00:27 tgl Exp
<listitem> <listitem>
<para> <para>
Make <function>netmask()</> and <function>hostmask()</> functions Make <function>netmask</> and <function>hostmask</> functions
return maximum-length masklen (Tom) return maximum-length mask length (Tom)
</para> </para>
</listitem> </listitem>
...@@ -1810,7 +1810,7 @@ $PostgreSQL: pgsql/doc/src/sgml/release.sgml,v 1.315 2004/12/01 19:00:27 tgl Exp ...@@ -1810,7 +1810,7 @@ $PostgreSQL: pgsql/doc/src/sgml/release.sgml,v 1.315 2004/12/01 19:00:27 tgl Exp
<listitem> <listitem>
<para> <para>
Add global <application>psql</> config file, <filename>psqlrc.sample</filename> Add global <application>psql</> configuration file, <filename>psqlrc.sample</filename>
(Bruce) (Bruce)
</para> </para>
<para> <para>
...@@ -1983,7 +1983,7 @@ $PostgreSQL: pgsql/doc/src/sgml/release.sgml,v 1.315 2004/12/01 19:00:27 tgl Exp ...@@ -1983,7 +1983,7 @@ $PostgreSQL: pgsql/doc/src/sgml/release.sgml,v 1.315 2004/12/01 19:00:27 tgl Exp
<listitem> <listitem>
<para> <para>
Many ecpg improvements, including <command>SET DESCRIPTOR</> (Michael) Many ECPG improvements, including <command>SET DESCRIPTOR</> (Michael)
</para> </para>
</listitem> </listitem>
...@@ -2076,7 +2076,7 @@ $PostgreSQL: pgsql/doc/src/sgml/release.sgml,v 1.315 2004/12/01 19:00:27 tgl Exp ...@@ -2076,7 +2076,7 @@ $PostgreSQL: pgsql/doc/src/sgml/release.sgml,v 1.315 2004/12/01 19:00:27 tgl Exp
<listitem> <listitem>
<para> <para>
Decouple platform tests from cpu spinlock code (Bruce, Tom) Decouple platform tests from CPU spinlock code (Bruce, Tom)
</para> </para>
</listitem> </listitem>
...@@ -2224,7 +2224,7 @@ $PostgreSQL: pgsql/doc/src/sgml/release.sgml,v 1.315 2004/12/01 19:00:27 tgl Exp ...@@ -2224,7 +2224,7 @@ $PostgreSQL: pgsql/doc/src/sgml/release.sgml,v 1.315 2004/12/01 19:00:27 tgl Exp
<listitem> <listitem>
<para> <para>
Make libpq and ecpg build as proper shared libraries on OS X (Tom) Make libpq and ECPG build as proper shared libraries on OS X (Tom)
</para> </para>
</listitem> </listitem>
...@@ -2238,74 +2238,74 @@ $PostgreSQL: pgsql/doc/src/sgml/release.sgml,v 1.315 2004/12/01 19:00:27 tgl Exp ...@@ -2238,74 +2238,74 @@ $PostgreSQL: pgsql/doc/src/sgml/release.sgml,v 1.315 2004/12/01 19:00:27 tgl Exp
<listitem> <listitem>
<para> <para>
Overhaul of /contrib/dblink (Joe) Overhaul of <filename>contrib/dblink</> (Joe)
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
/contrib/dbmirror improvements (Steven Singer) <filename>contrib/dbmirror</> improvements (Steven Singer)
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
New /contrib/xml2 (John Gray, Torchbox) New <filename>contrib/xml2</> (John Gray, Torchbox)
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Update /contrib/mysql Updated <filename>contrib/mysql</filename>
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
New version of /contrib/btree_gist (Teodor) New version of <filename>contrib/btree_gist</> (Teodor)
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
New /contrib/trgm, trigram matching for New <filename>contrib/trgm</>, trigram matching for
<productname>PostgreSQL</productname> (Teodor) <productname>PostgreSQL</productname> (Teodor)
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Many /contrib/tsearch2 improvements (Teodor) Many <filename>contrib/tsearch2</> improvements (Teodor)
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Add double metaphone to /contrib/fuzzystrmatch (Andrew) Add double metaphone to <filename>contrib/fuzzystrmatch</> (Andrew)
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Allow /contrib/pg_autovacuum to run as a Windows service (Dave Page) Allow <filename>contrib/pg_autovacuum</> to run as a Windows service (Dave Page)
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Add functions to /contrib/dbsize (Andreas Pflug) Add functions to <filename>contrib/dbsize</> (Andreas Pflug)
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Remove contrib/pg_logger Removed <filename>contrib/pg_logger</>
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Remove contrib/rserv: obsoleted by various separate projects Removed <filename>contrib/rserv</>: obsoleted by various separate projects
</para> </para>
</listitem> </listitem>
...@@ -2355,7 +2355,7 @@ left-side rows given just the right data distribution. ...@@ -2355,7 +2355,7 @@ left-side rows given just the right data distribution.
<para> <para>
This is to guard against any possible security issues. This is to guard against any possible security issues.
</para></listitem> </para></listitem>
<listitem><para>Avoid using temp files in /tmp in make_oidjoins_check</para> <listitem><para>Avoid using temp files in <filename>/tmp</> in <command>make_oidjoins_check</command></para>
<para> <para>
This has been reported as a security issue, though it's hardly worthy of This has been reported as a security issue, though it's hardly worthy of
concern since there is no reason for non-developers to use this script anyway. concern since there is no reason for non-developers to use this script anyway.
...@@ -2366,7 +2366,7 @@ result</para> ...@@ -2366,7 +2366,7 @@ result</para>
In rare cases, a client might think that its last command had succeeded when In rare cases, a client might think that its last command had succeeded when
it really had been aborted by forced database shutdown. it really had been aborted by forced database shutdown.
</para></listitem> </para></listitem>
<listitem><para>Repair bug in pg_stat_get_backend_idset()</para> <listitem><para>Repair bug in <function>pg_stat_get_backend_idset</function></para>
<para> <para>
This could lead to misbehavior in some of the system-statistics views. This could lead to misbehavior in some of the system-statistics views.
</para></listitem> </para></listitem>
...@@ -2410,9 +2410,9 @@ ECPG prepare statement</para></listitem> ...@@ -2410,9 +2410,9 @@ ECPG prepare statement</para></listitem>
<title>Changes</title> <title>Changes</title>
<itemizedlist> <itemizedlist>
<listitem><para>Repair possible crash during concurrent btree index insertions</para> <listitem><para>Repair possible crash during concurrent B-tree index insertions</para>
<para> <para>
This patch fixes a rare case in which concurrent insertions into a btree index This patch fixes a rare case in which concurrent insertions into a B-tree index
could result in a server panic. No permanent damage would result, but it's could result in a server panic. No permanent damage would result, but it's
still worth a re-release. The bug does not exist in pre-7.4 releases. still worth a re-release. The bug does not exist in pre-7.4 releases.
</para></listitem> </para></listitem>
...@@ -2456,7 +2456,7 @@ since <productname>PostgreSQL</productname> 7.1. ...@@ -2456,7 +2456,7 @@ since <productname>PostgreSQL</productname> 7.1.
</para></listitem> </para></listitem>
<listitem><para>Check HAVING restriction before evaluating result list of an <listitem><para>Check HAVING restriction before evaluating result list of an
aggregate plan</para></listitem> aggregate plan</para></listitem>
<listitem><para>Avoid crash when session's current userID is deleted</para></listitem> <listitem><para>Avoid crash when session's current user ID is deleted</para></listitem>
<listitem><para>Fix hashed crosstab for zero-rows case (Joe)</para></listitem> <listitem><para>Fix hashed crosstab for zero-rows case (Joe)</para></listitem>
<listitem><para>Force cache update after renaming a column in a foreign key</para></listitem> <listitem><para>Force cache update after renaming a column in a foreign key</para></listitem>
<listitem><para>Pretty-print UNION queries correctly</para></listitem> <listitem><para>Pretty-print UNION queries correctly</para></listitem>
......
<!-- $PostgreSQL: pgsql/doc/src/sgml/rowtypes.sgml,v 2.2 2004/06/09 19:08:14 tgl Exp $ --> <!-- $PostgreSQL: pgsql/doc/src/sgml/rowtypes.sgml,v 2.3 2004/12/13 18:05:09 petere Exp $ -->
<sect1 id="rowtypes"> <sect1 id="rowtypes">
<title>Composite Types</title> <title>Composite Types</title>
...@@ -13,7 +13,7 @@ ...@@ -13,7 +13,7 @@
<para> <para>
A <firstterm>composite type</> describes the structure of a row or record; A <firstterm>composite type</> describes the structure of a row or record;
it is in essence just a list of field names and their datatypes. it is in essence just a list of field names and their data types.
<productname>PostgreSQL</productname> allows values of composite types to be <productname>PostgreSQL</productname> allows values of composite types to be
used in many of the same ways that simple types can be used. For example, a used in many of the same ways that simple types can be used. For example, a
column of a table can be declared to be of a composite type. column of a table can be declared to be of a composite type.
...@@ -238,7 +238,7 @@ INSERT INTO mytab (complex_col.r, complex_col.i) VALUES(1.1, 2.2); ...@@ -238,7 +238,7 @@ INSERT INTO mytab (complex_col.r, complex_col.i) VALUES(1.1, 2.2);
</programlisting> </programlisting>
Had we not supplied values for all the subfields of the column, the Had we not supplied values for all the subfields of the column, the
remaining subfields would have been filled with NULLs. remaining subfields would have been filled with null values.
</para> </para>
</sect2> </sect2>
...@@ -253,7 +253,7 @@ INSERT INTO mytab (complex_col.r, complex_col.i) VALUES(1.1, 2.2); ...@@ -253,7 +253,7 @@ INSERT INTO mytab (complex_col.r, complex_col.i) VALUES(1.1, 2.2);
around the whole value, plus commas (<literal>,</>) between adjacent around the whole value, plus commas (<literal>,</>) between adjacent
items. Whitespace outside the parentheses is ignored, but within the items. Whitespace outside the parentheses is ignored, but within the
parentheses it is considered part of the field value, and may or may not be parentheses it is considered part of the field value, and may or may not be
significant depending on the input conversion rules for the field datatype. significant depending on the input conversion rules for the field data type.
For example, in For example, in
<programlisting> <programlisting>
'( 42)' '( 42)'
......
<!-- <!--
$PostgreSQL: pgsql/doc/src/sgml/runtime.sgml,v 1.295 2004/12/05 20:05:47 tgl Exp $ $PostgreSQL: pgsql/doc/src/sgml/runtime.sgml,v 1.296 2004/12/13 18:05:09 petere Exp $
--> -->
<Chapter Id="runtime"> <Chapter Id="runtime">
...@@ -1946,11 +1946,11 @@ archive_command = 'copy "%p" /mnt/server/archivedir/"%f"' # Windows ...@@ -1946,11 +1946,11 @@ archive_command = 'copy "%p" /mnt/server/archivedir/"%f"' # Windows
</indexterm> </indexterm>
<listitem> <listitem>
<para> <para>
Controls the tradeoff between planning time and query plan Controls the trade off between planning time and query plan
efficiency in GEQO. This variable must be an integer in the efficiency in GEQO. This variable must be an integer in the
range from 1 to 10. The default value is 5. Larger values range from 1 to 10. The default value is 5. Larger values
increase the time spent doing query planning, but also increase the time spent doing query planning, but also
increase the likelyhood that an efficient query plan will be increase the likelihood that an efficient query plan will be
chosen. chosen.
</para> </para>
...@@ -2643,7 +2643,7 @@ archive_command = 'copy "%p" /mnt/server/archivedir/"%f"' # Windows ...@@ -2643,7 +2643,7 @@ archive_command = 'copy "%p" /mnt/server/archivedir/"%f"' # Windows
only recognised by session processes, and do not apply to only recognised by session processes, and do not apply to
background processes such as the postmaster. <application>Syslog</> background processes such as the postmaster. <application>Syslog</>
produces its own produces its own
timestamp and process ID information, so you probably do not want to time stamp and process ID information, so you probably do not want to
use those escapes if you are using <application>syslog</>. use those escapes if you are using <application>syslog</>.
This option can only be set at server start or in the This option can only be set at server start or in the
<filename>postgresql.conf</filename> configuration file. <filename>postgresql.conf</filename> configuration file.
...@@ -2660,71 +2660,69 @@ archive_command = 'copy "%p" /mnt/server/archivedir/"%f"' # Windows ...@@ -2660,71 +2660,69 @@ archive_command = 'copy "%p" /mnt/server/archivedir/"%f"' # Windows
<tbody> <tbody>
<row> <row>
<entry><literal>%u</literal></entry> <entry><literal>%u</literal></entry>
<entry>User Name</entry> <entry>User name</entry>
<entry>Yes</entry> <entry>yes</entry>
</row> </row>
<row> <row>
<entry><literal>%d</literal></entry> <entry><literal>%d</literal></entry>
<entry>Database Name</entry> <entry>Database name</entry>
<entry>Yes</entry> <entry>yes</entry>
</row> </row>
<row> <row>
<entry><literal>%r</literal></entry> <entry><literal>%r</literal></entry>
<entry>Remote Hostname or IP address, and Remote Port</entry> <entry>Remote host name or IP address, and remote port</entry>
<entry>Yes</entry> <entry>yes</entry>
</row> </row>
<row> <row>
<entry><literal>%p</literal></entry> <entry><literal>%p</literal></entry>
<entry>Process ID</entry> <entry>Process ID</entry>
<entry>No</entry> <entry>no</entry>
</row> </row>
<row> <row>
<entry><literal>%t</literal></entry> <entry><literal>%t</literal></entry>
<entry>Timestamp</entry> <entry>Time stamp</entry>
<entry>No</entry> <entry>no</entry>
</row> </row>
<row> <row>
<entry><literal>%i</literal></entry> <entry><literal>%i</literal></entry>
<entry>Command Tag. This is the command which generated the log <entry>Command tag: This is the command that generated the log line.</entry>
line.</entry> <entry>yes</entry>
<entry>Yes</entry>
</row> </row>
<row> <row>
<entry><literal>%c</literal></entry> <entry><literal>%c</literal></entry>
<entry>Session ID. A unique identifier for each session. <entry>Session ID: A unique identifier for each session.
It is 2 4-byte hexadecimal numbers (without leading zeros) It is 2 4-byte hexadecimal numbers (without leading zeros)
separated by a dot. The numbers separated by a dot. The numbers
are the Session Start Time and the Process ID, so this can also 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> be used as a space saving way of printing these items.</entry>
<entry>Yes</entry> <entry>yes</entry>
</row> </row>
<row> <row>
<entry><literal>%l</literal></entry> <entry><literal>%l</literal></entry>
<entry>Number of the log line for each process, <entry>Number of the log line for each process, starting at 1</entry>
starting at 1</entry> <entry>no</entry>
<entry>No</entry>
</row> </row>
<row> <row>
<entry><literal>%s</literal></entry> <entry><literal>%s</literal></entry>
<entry>Session Start Timestamp</entry> <entry>Session start time stamp</entry>
<entry>Yes</entry> <entry>yes</entry>
</row> </row>
<row> <row>
<entry><literal>%x</literal></entry> <entry><literal>%x</literal></entry>
<entry>Transaction ID</entry> <entry>Transaction ID</entry>
<entry>Yes</entry> <entry>yes</entry>
</row> </row>
<row> <row>
<entry><literal>%q</literal></entry> <entry><literal>%q</literal></entry>
<entry>Does not produce any output, but tells non-session <entry>Does not produce any output, but tells non-session
processes to stop at this point in the string. Ignored by processes to stop at this point in the string. Ignored by
session processes.</entry> session processes.</entry>
<entry>No</entry> <entry>no</entry>
</row> </row>
<row> <row>
<entry><literal>%%</literal></entry> <entry><literal>%%</literal></entry>
<entry>Literal <literal>%</></entry> <entry>Literal <literal>%</></entry>
<entry>No</entry> <entry>no</entry>
</row> </row>
</tbody> </tbody>
</tgroup> </tgroup>
...@@ -4477,7 +4475,7 @@ sysctl -w kern.sysv.shmall ...@@ -4477,7 +4475,7 @@ sysctl -w kern.sysv.shmall
<para> It may, however, be necessary to modify the global <para> It may, however, be necessary to modify the global
<command>ulimit</command> information in <command>ulimit</command> information in
<filename>/etc/security/limits</filename>, as the default hard <filename>/etc/security/limits</filename>, as the default hard
limits for filesizes (<varname>fsize</varname>) and numbers of limits for file sizes (<varname>fsize</varname>) and numbers of
files (<varname>nofiles</varname>) may be too low. files (<varname>nofiles</varname>) may be too low.
</para> </para>
</listitem> </listitem>
...@@ -4668,7 +4666,7 @@ Out of Memory: Killed process 12345 (postmaster). ...@@ -4668,7 +4666,7 @@ Out of Memory: Killed process 12345 (postmaster).
<para> <para>
On Linux 2.6 and later, a better solution is to modify the kernel's On Linux 2.6 and later, a better solution is to modify the kernel's
behavior so that it will not <quote>overcommit</> memory. This is behavior so that it will not <quote>overcommit</> memory. This is
done by selecting strict overcommit mode via sysctl: done by selecting strict overcommit mode via <command>sysctl</command>:
<programlisting> <programlisting>
sysctl -w vm.overcommit_memory=2 sysctl -w vm.overcommit_memory=2
</programlisting> </programlisting>
...@@ -4680,7 +4678,7 @@ sysctl -w vm.overcommit_memory=2 ...@@ -4680,7 +4678,7 @@ sysctl -w vm.overcommit_memory=2
<para> <para>
Some vendors' Linux 2.4 kernels are reported to have early versions Some vendors' Linux 2.4 kernels are reported to have early versions
of the 2.6 overcommit sysctl. However, setting of the 2.6 overcommit <command>sysctl</command> parameter. However, setting
<literal>vm.overcommit_memory</> to 2 <literal>vm.overcommit_memory</> to 2
on a kernel that does not have the relevant code will make on a kernel that does not have the relevant code will make
things worse not better. It is recommended that you inspect things worse not better. It is recommended that you inspect
......
<!-- <!--
$PostgreSQL: pgsql/doc/src/sgml/sources.sgml,v 2.15 2004/11/15 06:32:14 neilc Exp $ $PostgreSQL: pgsql/doc/src/sgml/sources.sgml,v 2.16 2004/12/13 18:05:09 petere Exp $
--> -->
<chapter id="source"> <chapter id="source">
...@@ -109,9 +109,9 @@ less -x4 ...@@ -109,9 +109,9 @@ less -x4
<para> <para>
A typical call to <function>ereport</> might look like this: A typical call to <function>ereport</> might look like this:
<programlisting> <programlisting>
ereport(ERROR, ereport(ERROR,
(errcode(ERRCODE_DIVISION_BY_ZERO), (errcode(ERRCODE_DIVISION_BY_ZERO),
errmsg("division by zero"))); errmsg("division by zero")));
</programlisting> </programlisting>
This specifies error severity level <literal>ERROR</> (a run-of-the-mill This specifies error severity level <literal>ERROR</> (a run-of-the-mill
error). The <function>errcode</> call specifies the SQLSTATE error code error). The <function>errcode</> call specifies the SQLSTATE error code
...@@ -124,13 +124,13 @@ less -x4 ...@@ -124,13 +124,13 @@ less -x4
<para> <para>
Here is a more complex example: Here is a more complex example:
<programlisting> <programlisting>
ereport(ERROR, ereport(ERROR,
(errcode(ERRCODE_AMBIGUOUS_FUNCTION), (errcode(ERRCODE_AMBIGUOUS_FUNCTION),
errmsg("function %s is not unique", errmsg("function %s is not unique",
func_signature_string(funcname, nargs, func_signature_string(funcname, nargs,
actual_arg_types)), actual_arg_types)),
errhint("Unable to choose a best candidate function. " errhint("Unable to choose a best candidate function. "
"You may need to add explicit typecasts."))); "You may need to add explicit typecasts.")));
</programlisting> </programlisting>
This illustrates the use of format codes to embed run-time values into This illustrates the use of format codes to embed run-time values into
a message text. Also, an optional <quote>hint</> message is provided. a message text. Also, an optional <quote>hint</> message is provided.
...@@ -141,7 +141,7 @@ less -x4 ...@@ -141,7 +141,7 @@ less -x4
<itemizedlist> <itemizedlist>
<listitem> <listitem>
<para> <para>
<function>errcode</>(sqlerrcode) specifies the SQLSTATE error identifier <function>errcode(sqlerrcode)</function> specifies the SQLSTATE error identifier
code for the condition. If this routine is not called, the error code for the condition. If this routine is not called, the error
identifier defaults to identifier defaults to
<literal>ERRCODE_INTERNAL_ERROR</> when the error severity level is <literal>ERRCODE_INTERNAL_ERROR</> when the error severity level is
...@@ -149,12 +149,12 @@ less -x4 ...@@ -149,12 +149,12 @@ less -x4
error level is <literal>WARNING</>, otherwise (for <literal>NOTICE</> error level is <literal>WARNING</>, otherwise (for <literal>NOTICE</>
and below) <literal>ERRCODE_SUCCESSFUL_COMPLETION</>. and below) <literal>ERRCODE_SUCCESSFUL_COMPLETION</>.
While these defaults are often convenient, always think whether they While these defaults are often convenient, always think whether they
are appropriate before omitting the <function>errcode</>() call. are appropriate before omitting the <function>errcode()</> call.
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
<function>errmsg</>(const char *msg, ...) specifies the primary error <function>errmsg(const char *msg, ...)</function> specifies the primary error
message text, and possibly run-time values to insert into it. Insertions message text, and possibly run-time values to insert into it. Insertions
are specified by <function>sprintf</>-style format codes. In addition to are specified by <function>sprintf</>-style format codes. In addition to
the standard format codes accepted by <function>sprintf</>, the format the standard format codes accepted by <function>sprintf</>, the format
...@@ -177,7 +177,7 @@ less -x4 ...@@ -177,7 +177,7 @@ less -x4
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
<function>errmsg_internal</>(const char *msg, ...) is the same as <function>errmsg_internal(const char *msg, ...)</function> is the same as
<function>errmsg</>, except that the message string will not be <function>errmsg</>, except that the message string will not be
included in the internationalization message dictionary. included in the internationalization message dictionary.
This should be used for <quote>can't happen</> cases that are probably This should be used for <quote>can't happen</> cases that are probably
...@@ -186,7 +186,7 @@ less -x4 ...@@ -186,7 +186,7 @@ less -x4
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
<function>errdetail</>(const char *msg, ...) supplies an optional <function>errdetail(const char *msg, ...)</function> supplies an optional
<quote>detail</> message; this is to be used when there is additional <quote>detail</> message; this is to be used when there is additional
information that seems inappropriate to put in the primary message. information that seems inappropriate to put in the primary message.
The message string is processed in just the same way as for The message string is processed in just the same way as for
...@@ -195,7 +195,7 @@ less -x4 ...@@ -195,7 +195,7 @@ less -x4
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
<function>errhint</>(const char *msg, ...) supplies an optional <function>errhint(const char *msg, ...)</function> supplies an optional
<quote>hint</> message; this is to be used when offering suggestions <quote>hint</> message; this is to be used when offering suggestions
about how to fix the problem, as opposed to factual details about about how to fix the problem, as opposed to factual details about
what went wrong. what went wrong.
...@@ -205,7 +205,7 @@ less -x4 ...@@ -205,7 +205,7 @@ less -x4
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
<function>errcontext</>(const char *msg, ...) is not normally called <function>errcontext(const char *msg, ...)</function> is not normally called
directly from an <function>ereport</> message site; rather it is used directly from an <function>ereport</> message site; rather it is used
in <literal>error_context_stack</> callback functions to provide in <literal>error_context_stack</> callback functions to provide
information about the context in which an error occurred, such as the information about the context in which an error occurred, such as the
...@@ -218,7 +218,7 @@ less -x4 ...@@ -218,7 +218,7 @@ less -x4
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
<function>errposition</>(int cursorpos) specifies the textual location <function>errposition(int cursorpos)</function> specifies the textual location
of an error within a query string. Currently it is only useful for of an error within a query string. Currently it is only useful for
errors detected in the lexical and syntactic analysis phases of errors detected in the lexical and syntactic analysis phases of
query processing. query processing.
...@@ -226,7 +226,7 @@ less -x4 ...@@ -226,7 +226,7 @@ less -x4
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
<function>errcode_for_file_access</>() is a convenience function that <function>errcode_for_file_access()</> is a convenience function that
selects an appropriate SQLSTATE error identifier for a failure in a selects an appropriate SQLSTATE error identifier for a failure in a
file-access-related system call. It uses the saved file-access-related system call. It uses the saved
<literal>errno</> to determine which error code to generate. <literal>errno</> to determine which error code to generate.
...@@ -236,7 +236,7 @@ less -x4 ...@@ -236,7 +236,7 @@ less -x4
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
<function>errcode_for_socket_access</>() is a convenience function that <function>errcode_for_socket_access()</> is a convenience function that
selects an appropriate SQLSTATE error identifier for a failure in a selects an appropriate SQLSTATE error identifier for a failure in a
socket-related system call. socket-related system call.
</para> </para>
...@@ -248,11 +248,11 @@ less -x4 ...@@ -248,11 +248,11 @@ less -x4
There is an older function <function>elog</> that is still heavily used. There is an older function <function>elog</> that is still heavily used.
An <function>elog</> call An <function>elog</> call
<programlisting> <programlisting>
elog(level, "format string", ...); elog(level, "format string", ...);
</programlisting> </programlisting>
is exactly equivalent to is exactly equivalent to
<programlisting> <programlisting>
ereport(level, (errmsg_internal("format string", ...))); ereport(level, (errmsg_internal("format string", ...)));
</programlisting> </programlisting>
Notice that the SQLSTATE errcode is always defaulted, and the message Notice that the SQLSTATE errcode is always defaulted, and the message
string is not included in the internationalization message dictionary. string is not included in the internationalization message dictionary.
...@@ -297,14 +297,14 @@ less -x4 ...@@ -297,14 +297,14 @@ less -x4
<para> <para>
For example, instead of For example, instead of
<programlisting> <programlisting>
IpcMemoryCreate: shmget(key=%d, size=%u, 0%o) failed: %m IpcMemoryCreate: shmget(key=%d, size=%u, 0%o) failed: %m
(plus a long addendum that is basically a hint) (plus a long addendum that is basically a hint)
</programlisting> </programlisting>
write write
<programlisting> <programlisting>
Primary: could not create shared memory segment: %m Primary: could not create shared memory segment: %m
Detail: Failed syscall was shmget(key=%d, size=%u, 0%o). Detail: Failed syscall was shmget(key=%d, size=%u, 0%o).
Hint: the addendum Hint: the addendum
</programlisting> </programlisting>
</para> </para>
...@@ -461,11 +461,11 @@ write ...@@ -461,11 +461,11 @@ write
<para> <para>
There is a nontrivial semantic difference between sentences of the form There is a nontrivial semantic difference between sentences of the form
<programlisting> <programlisting>
could not open file "%s": %m could not open file "%s": %m
</programlisting> </programlisting>
and and
<programlisting> <programlisting>
cannot open file "%s" cannot open file "%s"
</programlisting> </programlisting>
The first one means that the attempt to open the file failed. The The first one means that the attempt to open the file failed. The
message should give a reason, such as <quote>disk full</quote> or message should give a reason, such as <quote>disk full</quote> or
...@@ -525,7 +525,7 @@ and ...@@ -525,7 +525,7 @@ and
When a message includes text that is generated elsewhere, embed it in When a message includes text that is generated elsewhere, embed it in
this style: this style:
<programlisting> <programlisting>
could not open file %s: %m could not open file %s: %m
</programlisting> </programlisting>
</para> </para>
...@@ -546,8 +546,8 @@ and ...@@ -546,8 +546,8 @@ and
Messages should always state the reason why an error occurred. Messages should always state the reason why an error occurred.
For example: For example:
<programlisting> <programlisting>
BAD: could not open file %s BAD: could not open file %s
BETTER: could not open file %s (I/O failure) BETTER: could not open file %s (I/O failure)
</programlisting> </programlisting>
If no reason is known you better fix the code. If no reason is known you better fix the code.
</para> </para>
...@@ -563,8 +563,8 @@ and ...@@ -563,8 +563,8 @@ and
not helpful information. If the error text doesn't make as much sense not helpful information. If the error text doesn't make as much sense
without the function name, reword it. without the function name, reword it.
<programlisting> <programlisting>
BAD: pg_atoi: error in "z": can't parse "z" BAD: pg_atoi: error in "z": can't parse "z"
BETTER: invalid input syntax for integer: "z" BETTER: invalid input syntax for integer: "z"
</programlisting> </programlisting>
</para> </para>
...@@ -572,8 +572,8 @@ and ...@@ -572,8 +572,8 @@ and
Avoid mentioning called function names, either; instead say what the code Avoid mentioning called function names, either; instead say what the code
was trying to do: was trying to do:
<programlisting> <programlisting>
BAD: open() failed: %m BAD: open() failed: %m
BETTER: could not open file %s: %m BETTER: could not open file %s: %m
</programlisting> </programlisting>
If it really seems necessary, mention the system call in the detail If it really seems necessary, mention the system call in the detail
message. (In some cases, providing the actual values passed to the message. (In some cases, providing the actual values passed to the
...@@ -622,8 +622,8 @@ and ...@@ -622,8 +622,8 @@ and
it's erroneous? <quote>Unrecognized</quote> is often a better choice. it's erroneous? <quote>Unrecognized</quote> is often a better choice.
Also, be sure to include the value being complained of. Also, be sure to include the value being complained of.
<programlisting> <programlisting>
BAD: unknown node type BAD: unknown node type
BETTER: unrecognized node type: 42 BETTER: unrecognized node type: 42
</programlisting> </programlisting>
</para> </para>
</formalpara> </formalpara>
......
<!-- <!--
$PostgreSQL: pgsql/doc/src/sgml/spi.sgml,v 1.35 2004/09/13 20:05:25 tgl Exp $ $PostgreSQL: pgsql/doc/src/sgml/spi.sgml,v 1.36 2004/12/13 18:05:09 petere Exp $
--> -->
<chapter id="spi"> <chapter id="spi">
...@@ -825,7 +825,7 @@ int SPI_getargcount(void * <parameter>plan</parameter>) ...@@ -825,7 +825,7 @@ int SPI_getargcount(void * <parameter>plan</parameter>)
<refnamediv> <refnamediv>
<refname>SPI_getargtypeid</refname> <refname>SPI_getargtypeid</refname>
<refpurpose>returns the expected typeid for the specified argument of <refpurpose>returns the expected <parameter>typeid</parameter> for the specified argument of
a plan prepared by <function>SPI_prepare</function></refpurpose> a plan prepared by <function>SPI_prepare</function></refpurpose>
</refnamediv> </refnamediv>
...@@ -841,7 +841,7 @@ Oid SPI_getargtypeid(void * <parameter>plan</parameter>, int <parameter>argIndex ...@@ -841,7 +841,7 @@ Oid SPI_getargtypeid(void * <parameter>plan</parameter>, int <parameter>argIndex
<title>Description</title> <title>Description</title>
<para> <para>
<function>SPI_getargtypeid</function> returns the Oid representing the type <function>SPI_getargtypeid</function> returns the OID representing the type
id for the <parameter>argIndex</parameter>'th argument of a plan prepared by id for the <parameter>argIndex</parameter>'th argument of a plan prepared by
<function>SPI_prepare</function>. First argument is at index zero. <function>SPI_prepare</function>. First argument is at index zero.
</para> </para>
...@@ -2482,8 +2482,8 @@ HeapTupleHeader SPI_returntuple(HeapTuple <parameter>row</parameter>, TupleDesc ...@@ -2482,8 +2482,8 @@ HeapTupleHeader SPI_returntuple(HeapTuple <parameter>row</parameter>, TupleDesc
<para> <para>
<function>SPI_returntuple</function> makes a copy of a row in <function>SPI_returntuple</function> makes a copy of a row in
the upper executor context, returning it in the form of a rowtype Datum. the upper executor context, returning it in the form of a row type <type>Datum</type>.
The returned pointer need only be converted to Datum via PointerGetDatum The returned pointer need only be converted to <type>Datum</type> via <function>PointerGetDatum</function>
before returning. before returning.
</para> </para>
......
<!-- <!--
$PostgreSQL: pgsql/doc/src/sgml/syntax.sgml,v 1.97 2004/11/15 06:32:14 neilc Exp $ $PostgreSQL: pgsql/doc/src/sgml/syntax.sgml,v 1.98 2004/12/13 18:05:09 petere Exp $
--> -->
<chapter id="sql-syntax"> <chapter id="sql-syntax">
...@@ -1547,7 +1547,7 @@ SELECT ROW(1,2.5,'this is a test'); ...@@ -1547,7 +1547,7 @@ SELECT ROW(1,2.5,'this is a test');
<para> <para>
By default, the value created by a <literal>ROW</> expression is of By default, the value created by a <literal>ROW</> expression is of
an anonymous record type. If necessary, it can be cast to a named an anonymous record type. If necessary, it can be cast to a named
composite type &mdash; either the rowtype of a table, or a composite type composite type &mdash; either the row type of a table, or a composite type
created with <command>CREATE TYPE AS</>. An explicit cast may be needed created with <command>CREATE TYPE AS</>. An explicit cast may be needed
to avoid ambiguity. For example: to avoid ambiguity. For example:
<programlisting> <programlisting>
......
<!-- <!--
$PostgreSQL: pgsql/doc/src/sgml/trigger.sgml,v 1.37 2004/10/30 20:52:46 tgl Exp $ $PostgreSQL: pgsql/doc/src/sgml/trigger.sgml,v 1.38 2004/12/13 18:05:09 petere Exp $
--> -->
<chapter id="triggers"> <chapter id="triggers">
...@@ -434,7 +434,7 @@ typedef struct Trigger ...@@ -434,7 +434,7 @@ typedef struct Trigger
<term><structfield>tg_trigtuplebuf</></term> <term><structfield>tg_trigtuplebuf</></term>
<listitem> <listitem>
<para> <para>
The buffer containing tg_trigtuple, or InvalidBuffer if there The buffer containing <structfield>tg_trigtuple</structfield>, or <symbol>InvalidBuffer</symbol> if there
is no such tuple or it is not stored in a disk buffer. is no such tuple or it is not stored in a disk buffer.
</para> </para>
</listitem> </listitem>
...@@ -444,7 +444,7 @@ typedef struct Trigger ...@@ -444,7 +444,7 @@ typedef struct Trigger
<term><structfield>tg_newtuplebuf</></term> <term><structfield>tg_newtuplebuf</></term>
<listitem> <listitem>
<para> <para>
The buffer containing tg_newtuple, or InvalidBuffer if there The buffer containing <structfield>tg_newtuple</structfield>, or <symbol>InvalidBuffer</symbol> if there
is no such tuple or it is not stored in a disk buffer. is no such tuple or it is not stored in a disk buffer.
</para> </para>
</listitem> </listitem>
...@@ -456,7 +456,7 @@ typedef struct Trigger ...@@ -456,7 +456,7 @@ typedef struct Trigger
<para> <para>
A trigger function must return either a A trigger function must return either a
<structname>HeapTuple</> pointer or a <symbol>NULL</> pointer <structname>HeapTuple</> pointer or a <symbol>NULL</> pointer
(<emphasis>not</> a SQL NULL, that is, do not set isNull true). (<emphasis>not</> an SQL null value, that is, do not set <parameter>isNull</parameter> true).
Be careful to return either Be careful to return either
<structfield>tg_trigtuple</> or <structfield>tg_newtuple</>, <structfield>tg_trigtuple</> or <structfield>tg_newtuple</>,
as appropriate, if you don't want to modify the row being operated on. as appropriate, if you don't want to modify the row being operated on.
......
<!-- <!--
$PostgreSQL: pgsql/doc/src/sgml/xfunc.sgml,v 1.89 2004/11/15 06:32:14 neilc Exp $ $PostgreSQL: pgsql/doc/src/sgml/xfunc.sgml,v 1.90 2004/12/13 18:05:09 petere Exp $
--> -->
<sect1 id="xfunc"> <sect1 id="xfunc">
...@@ -1930,7 +1930,7 @@ CREATE FUNCTION c_overpaid(emp, integer) RETURNS boolean ...@@ -1930,7 +1930,7 @@ CREATE FUNCTION c_overpaid(emp, integer) RETURNS boolean
There are two ways you can build a composite data value (henceforth There are two ways you can build a composite data value (henceforth
a <quote>tuple</>): you can build it from an array of Datum values, a <quote>tuple</>): you can build it from an array of Datum values,
or from an array of C strings that can be passed to the input or from an array of C strings that can be passed to the input
conversion functions of the tuple's column datatypes. In either conversion functions of the tuple's column data types. In either
case, you first need to obtain or construct a <structname>TupleDesc</> case, you first need to obtain or construct a <structname>TupleDesc</>
descriptor for the tuple structure. When working with Datums, you descriptor for the tuple structure. When working with Datums, you
pass the <structname>TupleDesc</> to <function>BlessTupleDesc</>, pass the <structname>TupleDesc</> to <function>BlessTupleDesc</>,
...@@ -2494,10 +2494,10 @@ CREATE FUNCTION test(int, int) RETURNS int ...@@ -2494,10 +2494,10 @@ CREATE FUNCTION test(int, int) RETURNS int
for all calls within a single surrounding query. This category for all calls within a single surrounding query. This category
allows the optimizer to optimize away multiple calls of the function allows the optimizer to optimize away multiple calls of the function
within a single query. In particular, it is safe to use an expression within a single query. In particular, it is safe to use an expression
containing such a function in an indexscan condition. (Since an containing such a function in an index scan condition. (Since an
indexscan will evaluate the comparison value only once, not once at index scan will evaluate the comparison value only once, not once at
each row, it is not valid to use a <literal>VOLATILE</> function in each row, it is not valid to use a <literal>VOLATILE</> function in
an indexscan condition.) an index scan condition.)
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
......
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