Commit a75f2d21 authored by Thomas G. Lockhart's avatar Thomas G. Lockhart

Clean up to ensure tag completion as required by the newest versions

 of Norm's Modular Style Sheets and jade/docbook.
From Vince Vielhaber <vev@michvhf.com>.
parent 6d7735e7
...@@ -4,15 +4,15 @@ ...@@ -4,15 +4,15 @@
<Para> <Para>
<ProductName>PostgreSQL</ProductName> is available without cost. This manual <ProductName>PostgreSQL</ProductName> is available without cost. This manual
describes version 6.4 of <ProductName>PostgreSQL</ProductName>. describes version 6.4 of <ProductName>PostgreSQL</ProductName>.
</Para>
<Para> <Para>
We will use <ProductName>Postgres</ProductName> We will use <ProductName>Postgres</ProductName>
to mean the version distributed as <ProductName>PostgreSQL</ProductName>. to mean the version distributed as <ProductName>PostgreSQL</ProductName>.
</Para>
<Para> <Para>
Check the Administrator's Guide for a list of currently supported machines. Check the Administrator's Guide for a list of currently supported machines.
In general, In general,
<ProductName>Postgres</ProductName> is portable to any Unix/Posix-compatible system <ProductName>Postgres</ProductName> is portable to any Unix/Posix-compatible system
with full libc library support. with full libc library support.
</Para>
</Sect1> </Sect1>
...@@ -66,6 +66,7 @@ SELECT name, altitude ...@@ -66,6 +66,7 @@ SELECT name, altitude
|Mariposa | 1953 | |Mariposa | 1953 |
+----------+----------+ +----------+----------+
</ProgramListing> </ProgramListing>
</Para>
<Para> <Para>
On the other hand, to find the names of all cities, On the other hand, to find the names of all cities,
...@@ -111,6 +112,7 @@ SELECT c.name, c.altitude ...@@ -111,6 +112,7 @@ SELECT c.name, c.altitude
sub-values that can be accessed from the query sub-values that can be accessed from the query
language. For example, you can create attributes that language. For example, you can create attributes that
are arrays of base types. are arrays of base types.
</Para>
<Sect2> <Sect2>
<Title>Arrays</Title> <Title>Arrays</Title>
...@@ -210,7 +212,7 @@ SELECT SAL_EMP.schedule[1:2][1:1] ...@@ -210,7 +212,7 @@ SELECT SAL_EMP.schedule[1:2][1:1]
+-------------------+ +-------------------+
</ProgramListing> </ProgramListing>
</Para> </Para>
</sect2>
</Sect1> </Sect1>
<Sect1> <Sect1>
...@@ -286,6 +288,7 @@ On UNIX systems, this is always midnight, January 1, 1970 GMT. ...@@ -286,6 +288,7 @@ On UNIX systems, this is always midnight, January 1, 1970 GMT.
|Mariposa | 1320 | |Mariposa | 1320 |
+---------+------------+ +---------+------------+
</ProgramListing> </ProgramListing>
</Para>
<Para> <Para>
The default beginning of a time range is the earliest The default beginning of a time range is the earliest
...@@ -293,6 +296,7 @@ On UNIX systems, this is always midnight, January 1, 1970 GMT. ...@@ -293,6 +296,7 @@ On UNIX systems, this is always midnight, January 1, 1970 GMT.
the current time; thus, the above time range can be the current time; thus, the above time range can be
abbreviated as ``[,].'' abbreviated as ``[,].''
</Para> </Para>
</sect1>
<Sect1> <Sect1>
<Title>More Advanced Features</Title> <Title>More Advanced Features</Title>
...@@ -301,5 +305,7 @@ On UNIX systems, this is always midnight, January 1, 1970 GMT. ...@@ -301,5 +305,7 @@ On UNIX systems, this is always midnight, January 1, 1970 GMT.
<ProductName>Postgres</ProductName> has many features not touched upon in this <ProductName>Postgres</ProductName> has many features not touched upon in this
tutorial introduction, which has been oriented toward newer users of <Acronym>SQL</Acronym>. tutorial introduction, which has been oriented toward newer users of <Acronym>SQL</Acronym>.
These are discussed in more detail in both the User's and Programmer's Guides. These are discussed in more detail in both the User's and Programmer's Guides.
</Para>
</sect1>
</Chapter> </Chapter>
...@@ -30,6 +30,7 @@ ...@@ -30,6 +30,7 @@
</Para> </Para>
</ListItem> </ListItem>
</ItemizedList> </ItemizedList>
</Para>
<Para> <Para>
A single <Application>postmaster</Application> manages a given collection of A single <Application>postmaster</Application> manages a given collection of
...@@ -76,5 +77,5 @@ ...@@ -76,5 +77,5 @@
case, all files relating to a database should belong to case, all files relating to a database should belong to
this <ProductName>Postgres</ProductName> superuser. this <ProductName>Postgres</ProductName> superuser.
</Para> </Para>
</sect1>
</Chapter> </Chapter>
...@@ -30,7 +30,7 @@ ...@@ -30,7 +30,7 @@
</Para> </Para>
</ListItem> </ListItem>
</ItemizedList> </ItemizedList>
</para>
<Para> <Para>
A single <Application>postmaster</Application> manages a given collection of A single <Application>postmaster</Application> manages a given collection of
databases on a single host. Such a collection of databases on a single host. Such a collection of
...@@ -79,5 +79,5 @@ Furthermore, the <ProductName>Postgres</ProductName> superuser should ...@@ -79,5 +79,5 @@ Furthermore, the <ProductName>Postgres</ProductName> superuser should
case, all files relating to a database should belong to case, all files relating to a database should belong to
this <ProductName>Postgres</ProductName> superuser. this <ProductName>Postgres</ProductName> superuser.
</Para> </Para>
</sect1>
</Chapter> </Chapter>
...@@ -12,6 +12,7 @@ ...@@ -12,6 +12,7 @@
In database jargon, <ProductName>Postgres</ProductName> uses a simple "process In database jargon, <ProductName>Postgres</ProductName> uses a simple "process
per-user" client/server model. A <ProductName>Postgres</ProductName> session per-user" client/server model. A <ProductName>Postgres</ProductName> session
consists of the following cooperating UNIX processes (programs): consists of the following cooperating UNIX processes (programs):
</Para>
<ItemizedList> <ItemizedList>
<ListItem> <ListItem>
...@@ -53,6 +54,7 @@ ...@@ -53,6 +54,7 @@
<Application>postmaster</Application>. Hence, the <Application>postmaster</Application> is always running, waiting <Application>postmaster</Application>. Hence, the <Application>postmaster</Application> is always running, waiting
for requests, whereas frontend and backend processes for requests, whereas frontend and backend processes
come and go. come and go.
</Para>
<Para> <Para>
The <FileName>libpq</FileName> library allows a single The <FileName>libpq</FileName> library allows a single
...@@ -69,6 +71,7 @@ ...@@ -69,6 +71,7 @@
machine may not be accessible (or may only be accessed machine may not be accessible (or may only be accessed
using a different filename) on the database server using a different filename) on the database server
machine. machine.
</Para>
<Para> <Para>
You should also be aware that the <Application>postmaster</Application> and You should also be aware that the <Application>postmaster</Application> and
...@@ -81,5 +84,5 @@ ...@@ -81,5 +84,5 @@
case, all files relating to a database should belong to case, all files relating to a database should belong to
this <ProductName>Postgres</ProductName> superuser. this <ProductName>Postgres</ProductName> superuser.
</Para> </Para>
</sect1>
</Chapter> </Chapter>
<!-- <!--
$Header: /cvsroot/pgsql/doc/src/sgml/bki.sgml,v 1.1 1998/08/15 06:49:33 thomas Exp $ $Header: /cvsroot/pgsql/doc/src/sgml/bki.sgml,v 1.2 1998/12/29 02:24:13 thomas Exp $
Transcribed from the original bki.man.5 documentation Transcribed from the original bki.man.5 documentation
- Thomas Lockhart 1998-08-03 - Thomas Lockhart 1998-08-03
...@@ -28,12 +28,14 @@ takes as input <productname>Postgres</productname> source files that double as ...@@ -28,12 +28,14 @@ takes as input <productname>Postgres</productname> source files that double as
<application>genbki</application> <application>genbki</application>
input that builds tables and C header files that describe those input that builds tables and C header files that describe those
tables. tables.
</para>
<para> <para>
Related information may be found in documentation for Related information may be found in documentation for
<application>initdb</application>, <application>initdb</application>,
<application>createdb</application>, <application>createdb</application>,
and the <acronym>SQL</acronym> command <command>CREATE DATABASE</command>. and the <acronym>SQL</acronym> command <command>CREATE DATABASE</command>.
</para>
<sect1> <sect1>
<title><acronym>BKI</acronym> File Format</title> <title><acronym>BKI</acronym> File Format</title>
...@@ -44,6 +46,7 @@ description will be easier to understand if the <filename>global1.bki.source</fi ...@@ -44,6 +46,7 @@ description will be easier to understand if the <filename>global1.bki.source</fi
at hand as an example. (As explained above, this .source file isn't quite at hand as an example. (As explained above, this .source file isn't quite
a <acronym>BKI</acronym> file, but you'll be able to guess what the resulting <acronym>BKI</acronym> file would be a <acronym>BKI</acronym> file, but you'll be able to guess what the resulting <acronym>BKI</acronym> file would be
anyway). anyway).
</para>
<para> <para>
Commands are composed of a command name followed by space separated Commands are composed of a command name followed by space separated
...@@ -56,6 +59,7 @@ value. Otherwise, the characters following the <quote>$</quote> are ...@@ -56,6 +59,7 @@ value. Otherwise, the characters following the <quote>$</quote> are
interpreted as the name of a macro causing the argument to be replaced interpreted as the name of a macro causing the argument to be replaced
with the macro's value. It is an error for this macro to be with the macro's value. It is an error for this macro to be
undefined. undefined.
</para>
<para> <para>
Macros are defined using Macros are defined using
...@@ -67,10 +71,13 @@ and are undefined using ...@@ -67,10 +71,13 @@ and are undefined using
undefine macro macro_name undefine macro macro_name
</programlisting> </programlisting>
and redefined using the same syntax as define. and redefined using the same syntax as define.
</para>
<para> <para>
Lists of general commands and macro commands Lists of general commands and macro commands
follow. follow.
</para>
</sect1>
<sect1> <sect1>
<title>General Commands</title> <title>General Commands</title>
...@@ -85,6 +92,9 @@ OPEN <replaceable class="parameter">classname</replaceable> ...@@ -85,6 +92,9 @@ OPEN <replaceable class="parameter">classname</replaceable>
Open the class called Open the class called
<replaceable class="parameter">classname</replaceable> <replaceable class="parameter">classname</replaceable>
for further manipulation. for further manipulation.
</para>
</listitem>
</varlistentry>
<varlistentry> <varlistentry>
<term> <term>
...@@ -99,6 +109,9 @@ It is an error if ...@@ -99,6 +109,9 @@ It is an error if
is not already opened. If no is not already opened. If no
<replaceable class="parameter">classname</replaceable> <replaceable class="parameter">classname</replaceable>
is given, then the currently open class is closed. is given, then the currently open class is closed.
</para>
</listitem>
</varlistentry>
<varlistentry> <varlistentry>
<term> <term>
...@@ -107,6 +120,9 @@ PRINT ...@@ -107,6 +120,9 @@ PRINT
<listitem> <listitem>
<para> <para>
Print the currently open class. Print the currently open class.
</para>
</listitem>
</varlistentry>
<varlistentry> <varlistentry>
<term> <term>
...@@ -123,6 +139,9 @@ for its OID. If ...@@ -123,6 +139,9 @@ for its OID. If
<replaceable class="parameter">oid_value</replaceable> <replaceable class="parameter">oid_value</replaceable>
is not <quote>0</quote>, then this value will be used as the instance's is not <quote>0</quote>, then this value will be used as the instance's
object identifier. Otherwise, it is an error. object identifier. Otherwise, it is an error.
</para>
</listitem>
</varlistentry>
<varlistentry> <varlistentry>
<term> <term>
...@@ -131,6 +150,9 @@ INSERT (<replaceable class="parameter">value1</replaceable> <replaceable class=" ...@@ -131,6 +150,9 @@ INSERT (<replaceable class="parameter">value1</replaceable> <replaceable class="
<listitem> <listitem>
<para> <para>
As above, but the system generates a unique object identifier. As above, but the system generates a unique object identifier.
</para>
</listitem>
</varlistentry>
<varlistentry> <varlistentry>
<term> <term>
...@@ -141,6 +163,9 @@ CREATE <replaceable class="parameter">classname</replaceable> (<replaceable clas ...@@ -141,6 +163,9 @@ CREATE <replaceable class="parameter">classname</replaceable> (<replaceable clas
Create a class named Create a class named
<replaceable class="parameter">classname</replaceable> <replaceable class="parameter">classname</replaceable>
with the attributes given in parentheses. with the attributes given in parentheses.
</para>
</listitem>
</varlistentry>
<varlistentry> <varlistentry>
<term> <term>
...@@ -152,6 +177,9 @@ Open a class named ...@@ -152,6 +177,9 @@ Open a class named
<replaceable class="parameter">classname</replaceable> <replaceable class="parameter">classname</replaceable>
for writing but do not record its existence in the system catalogs. for writing but do not record its existence in the system catalogs.
(This is primarily to aid in bootstrapping.) (This is primarily to aid in bootstrapping.)
</para>
</listitem>
</varlistentry>
<varlistentry> <varlistentry>
<term> <term>
...@@ -161,6 +189,9 @@ DESTROY <replaceable class="parameter">classname</replaceable> ...@@ -161,6 +189,9 @@ DESTROY <replaceable class="parameter">classname</replaceable>
<para> <para>
Destroy the class named Destroy the class named
<replaceable class="parameter">classname</replaceable>. <replaceable class="parameter">classname</replaceable>.
</para>
</listitem>
</varlistentry>
<varlistentry> <varlistentry>
<term> <term>
...@@ -182,14 +213,18 @@ etc., and the operator collections to use are ...@@ -182,14 +213,18 @@ etc., and the operator collections to use are
<replaceable class="parameter">collection_1</replaceable>, <replaceable class="parameter">collection_1</replaceable>,
<replaceable class="parameter">collection_2</replaceable> <replaceable class="parameter">collection_2</replaceable>
etc., respectively. etc., respectively.
</para>
</listitem>
</varlistentry> </varlistentry>
</variablelist> </variablelist>
<note> <note>
<para> <para>
This last sentence doesn't reference anything in the example. Should be changed to make sense. - Thomas 1998-08-04 This last sentence doesn't reference anything in the example. Should be changed to make sense. - Thomas 1998-08-04
</para>
</note> </note>
</sect1>
<sect1> <sect1>
<title>Macro Commands</title> <title>Macro Commands</title>
...@@ -211,6 +246,9 @@ computed from the execution ...@@ -211,6 +246,9 @@ computed from the execution
with the arguments with the arguments
<replaceable class="parameter">args</replaceable> <replaceable class="parameter">args</replaceable>
declared in a C-like manner. declared in a C-like manner.
</para>
</listitem>
</varlistentry>
<varlistentry> <varlistentry>
<term> <term>
...@@ -223,9 +261,13 @@ Define a macro named ...@@ -223,9 +261,13 @@ Define a macro named
which has its value which has its value
read from the file called read from the file called
<replaceable class="parameter">filename</replaceable>. <replaceable class="parameter">filename</replaceable>.
</para>
</listitem>
</varlistentry> </varlistentry>
</variablelist> </variablelist>
</para>
</sect1>
<sect1> <sect1>
<title>Debugging Commands</title> <title>Debugging Commands</title>
...@@ -234,6 +276,7 @@ read from the file called ...@@ -234,6 +276,7 @@ read from the file called
<note> <note>
<para> <para>
This section on debugging commands was commented-out in the original documentation. Thomas 1998-08-05 This section on debugging commands was commented-out in the original documentation. Thomas 1998-08-05
</para>
</note> </note>
<variablelist> <variablelist>
...@@ -244,6 +287,9 @@ r ...@@ -244,6 +287,9 @@ r
<listitem> <listitem>
<para> <para>
Randomly print the open class. Randomly print the open class.
</para>
</listitem>
</varlistentry>
<varlistentry> <varlistentry>
<term> <term>
...@@ -252,6 +298,9 @@ m -1 ...@@ -252,6 +298,9 @@ m -1
<listitem> <listitem>
<para> <para>
Toggle display of time information. Toggle display of time information.
</para>
</listitem>
</varlistentry>
<varlistentry> <varlistentry>
<term> <term>
...@@ -260,6 +309,9 @@ m 0 ...@@ -260,6 +309,9 @@ m 0
<listitem> <listitem>
<para> <para>
Set retrievals to now. Set retrievals to now.
</para>
</listitem>
</varlistentry>
<varlistentry> <varlistentry>
<term> <term>
...@@ -268,6 +320,9 @@ m 1 Jan 1 01:00:00 1988 ...@@ -268,6 +320,9 @@ m 1 Jan 1 01:00:00 1988
<listitem> <listitem>
<para> <para>
Set retrievals to snapshots of the specfied time. Set retrievals to snapshots of the specfied time.
</para>
</listitem>
</varlistentry>
<varlistentry> <varlistentry>
<term> <term>
...@@ -278,6 +333,9 @@ m 2 Jan 1 01:00:00 1988, Feb 1 01:00:00 1988 ...@@ -278,6 +333,9 @@ m 2 Jan 1 01:00:00 1988, Feb 1 01:00:00 1988
Set retrievals to ranges of the specified times. Set retrievals to ranges of the specified times.
Either time may be replaced with space Either time may be replaced with space
if an unbounded time range is desired. if an unbounded time range is desired.
</para>
</listitem>
</varlistentry>
<varlistentry> <varlistentry>
<term> <term>
...@@ -296,6 +354,9 @@ types ...@@ -296,6 +354,9 @@ types
<replaceable class="parameter">type2</replaceable>, <replaceable class="parameter">type2</replaceable>,
etc. to the class etc. to the class
<replaceable class="parameter">classname</replaceable>. <replaceable class="parameter">classname</replaceable>.
</para>
</listitem>
</varlistentry>
<varlistentry> <varlistentry>
<term> <term>
...@@ -307,6 +368,9 @@ Rename the ...@@ -307,6 +368,9 @@ Rename the
<replaceable class="parameter">oldclassname</replaceable> <replaceable class="parameter">oldclassname</replaceable>
class to class to
<replaceable class="parameter">newclassname</replaceable>. <replaceable class="parameter">newclassname</replaceable>.
</para>
</listitem>
</varlistentry>
<varlistentry> <varlistentry>
<term> <term>
...@@ -323,9 +387,12 @@ attribute in the class named ...@@ -323,9 +387,12 @@ attribute in the class named
<replaceable class="parameter">classname</replaceable> <replaceable class="parameter">classname</replaceable>
to to
<replaceable class="parameter">newattname</replaceable>. <replaceable class="parameter">newattname</replaceable>.
</para>
</listitem>
</varlistentry> </varlistentry>
</variablelist> </variablelist>
</para>
</sect1>
<sect1> <sect1>
<title>Example</title> <title>Example</title>
...@@ -344,5 +411,6 @@ insert oid=421 (int_ops) ...@@ -344,5 +411,6 @@ insert oid=421 (int_ops)
print print
close pg_opclass close pg_opclass
</programlisting> </programlisting>
</para>
</sect1>
</chapter> </chapter>
...@@ -17,6 +17,7 @@ ...@@ -17,6 +17,7 @@
Contributed by <ULink url="mailto:geek+@cmu.edu">Brian Gallew</ULink> Contributed by <ULink url="mailto:geek+@cmu.edu">Brian Gallew</ULink>
</Para> </Para>
</Note> </Note>
</para>
<Para> <Para>
Configuring gcc to use certain flags by default is a simple matter of Configuring gcc to use certain flags by default is a simple matter of
...@@ -28,6 +29,7 @@ sections, each of which is three lines long. The first line is ...@@ -28,6 +29,7 @@ sections, each of which is three lines long. The first line is
"*<Replaceable>section_name</Replaceable>:" (e.g. "*asm:"). "*<Replaceable>section_name</Replaceable>:" (e.g. "*asm:").
The second line is a list of flags, The second line is a list of flags,
and the third line is blank. and the third line is blank.
</para>
<Para> <Para>
The easiest change to make is to append The easiest change to make is to append
...@@ -64,10 +66,12 @@ box lying around, I'd have to make it look like this: ...@@ -64,10 +66,12 @@ box lying around, I'd have to make it look like this:
</ProgramListing> </ProgramListing>
This will always omit frame pointers, any will build 486-optimized This will always omit frame pointers, any will build 486-optimized
code unless -m386 is specified on the command line. code unless -m386 is specified on the command line.
</para>
<Para> <Para>
You can actually do quite a lot of customization with the specs file. You can actually do quite a lot of customization with the specs file.
Always remember, however, that these changes are global, and affect Always remember, however, that these changes are global, and affect
all users of the system. all users of the system.
</para>
</Chapter> </Chapter>
This diff is collapsed.
...@@ -24,21 +24,28 @@ Here is a brief, incomplete summary: ...@@ -24,21 +24,28 @@ Here is a brief, incomplete summary:
Views and rules are now functional thanks to extensive new code in the Views and rules are now functional thanks to extensive new code in the
rewrite rules system from Jan Wieck. He also wrote a chapter on it rewrite rules system from Jan Wieck. He also wrote a chapter on it
for the <citetitle>Programmer's Guide</citetitle>. for the <citetitle>Programmer's Guide</citetitle>.
</para>
</listitem>
<listitem> <listitem>
<para> <para>
Jan also contributed a second procedural language, PL/pgSQL, to go with the Jan also contributed a second procedural language, PL/pgSQL, to go with the
original PL/pgTCL procedural language he contributed last release. original PL/pgTCL procedural language he contributed last release.
</para>
</listitem>
<listitem> <listitem>
<para> <para>
We have optional multiple-byte character set support from Tatsuo Iishi We have optional multiple-byte character set support from Tatsuo Iishi
to complement our existing locale support. to complement our existing locale support.
</para>
</listitem>
<listitem> <listitem>
<para> <para>
Client/server communications has been cleaned up, with better support for Client/server communications has been cleaned up, with better support for
asynchronous messages and interrupts thanks to Tom Lane. asynchronous messages and interrupts thanks to Tom Lane.
</para>
</listitem>
<listitem> <listitem>
<para> <para>
...@@ -48,6 +55,8 @@ with target columns. This uses a generic mechanism which supports ...@@ -48,6 +55,8 @@ with target columns. This uses a generic mechanism which supports
the type extensibility features of <productname>Postgres</productname>. the type extensibility features of <productname>Postgres</productname>.
There is a new chapter in the <citetitle>User's Guide</citetitle> There is a new chapter in the <citetitle>User's Guide</citetitle>
which covers this topic. which covers this topic.
</para>
</listitem>
<listitem> <listitem>
<para> <para>
...@@ -58,20 +67,26 @@ type available on some platforms. See the chapter on data types ...@@ -58,20 +67,26 @@ type available on some platforms. See the chapter on data types
in the <citetitle>User's Guide</citetitle> for details. in the <citetitle>User's Guide</citetitle> for details.
A fourth type, <type>serial</type>, is now supported by the parser as an A fourth type, <type>serial</type>, is now supported by the parser as an
amalgam of the <type>int4</type> type, a sequence, and a unique index. amalgam of the <type>int4</type> type, a sequence, and a unique index.
</para>
</listitem>
<listitem> <listitem>
<para> <para>
Several more <acronym>SQL92</acronym>-compatible syntax features have been Several more <acronym>SQL92</acronym>-compatible syntax features have been
added, including <command>INSERT DEFAULT VALUES</command> added, including <command>INSERT DEFAULT VALUES</command>
</para>
</listitem>
<listitem> <listitem>
<para> <para>
The automatic configuration and installation system has received some The automatic configuration and installation system has received some
attention, and should be more robust for more platforms than it has ever attention, and should be more robust for more platforms than it has ever
been. been.
</para>
</listitem>
</itemizedlist> </itemizedlist>
</para>
<sect2> <sect2>
<title>Migration to v6.4</title> <title>Migration to v6.4</title>
...@@ -81,8 +96,8 @@ A dump/restore using <application>pg_dump</application> ...@@ -81,8 +96,8 @@ A dump/restore using <application>pg_dump</application>
or <application>pg_dumpall</application> or <application>pg_dumpall</application>
is required for those wishing to migrate data from any is required for those wishing to migrate data from any
previous release of <productname>Postgres</productname>. previous release of <productname>Postgres</productname>.
</para>
</sect2>
<sect2> <sect2>
<title>Detailed Change List</title> <title>Detailed Change List</title>
...@@ -282,6 +297,6 @@ configure uses supplied install-sh if no install script found(Tom) ...@@ -282,6 +297,6 @@ configure uses supplied install-sh if no install script found(Tom)
new Makefile.shlib for shared library configuration(Tom) new Makefile.shlib for shared library configuration(Tom)
</programlisting> </programlisting>
</Para> </Para>
</sect2>
</Sect1> </Sect1>
...@@ -33,9 +33,11 @@ mechanism. On the other hand, the object file must be ...@@ -33,9 +33,11 @@ mechanism. On the other hand, the object file must be
postprocessed a bit before it can be loaded into <ProductName>Postgres</ProductName>. We postprocessed a bit before it can be loaded into <ProductName>Postgres</ProductName>. We
hope that the large increase in speed and reliability will hope that the large increase in speed and reliability will
make up for the slight decrease in convenience. make up for the slight decrease in convenience.
<Para> </para>
</Tip> </Tip>
You should expect to read (and reread, and re-reread) the </para>
<para>
You should expect to read (and reread, and re-reread) the
manual pages for the C compiler, cc(1), and the link manual pages for the C compiler, cc(1), and the link
editor, ld(1), if you have specific questions. In editor, ld(1), if you have specific questions. In
addition, the regression test suites in the directory addition, the regression test suites in the directory
...@@ -120,6 +122,7 @@ The GNU C compiler usually does not provide the special ...@@ -120,6 +122,7 @@ The GNU C compiler usually does not provide the special
</Para> </Para>
</ListItem> </ListItem>
</ItemizedList> </ItemizedList>
</para>
<Sect1> <Sect1>
<Title><Acronym>ULTRIX</Acronym></Title> <Title><Acronym>ULTRIX</Acronym></Title>
......
This diff is collapsed.
This diff is collapsed.
...@@ -243,8 +243,10 @@ interchangably. ...@@ -243,8 +243,10 @@ interchangably.
and will be described in depth (in the section and will be described in depth (in the section
on interfacing types and operators to indices) on interfacing types and operators to indices)
after we have discussed basic extensions. after we have discussed basic extensions.
</para>
</ListItem> </ListItem>
</ItemizedList> </ItemizedList>
</Para> </Para>
</sect1>
</Chapter> </Chapter>
...@@ -63,6 +63,7 @@ available through operators and may be documented as operators only. ...@@ -63,6 +63,7 @@ available through operators and may be documented as operators only.
</TGROUP> </TGROUP>
</TABLE> </TABLE>
</Para> </Para>
</sect1>
<sect1> <sect1>
<title>String Functions</title> <title>String Functions</title>
...@@ -230,6 +231,7 @@ Some are used internally to implement the SQL92 string functions listed above. ...@@ -230,6 +231,7 @@ Some are used internally to implement the SQL92 string functions listed above.
<para> <para>
Most functions explicitly defined for text will work for char() and varchar() arguments. Most functions explicitly defined for text will work for char() and varchar() arguments.
</para> </para>
</sect1>
<sect1> <sect1>
<title>Date/Time Functions</title> <title>Date/Time Functions</title>
...@@ -345,6 +347,7 @@ as well as the more specialized quantities ...@@ -345,6 +347,7 @@ as well as the more specialized quantities
to return day of week and `epoch' to return seconds since 1970 (for <Type>datetime</Type>) to return day of week and `epoch' to return seconds since 1970 (for <Type>datetime</Type>)
or 'epoch' to return total elapsed seconds (for <Type>timespan</Type>). or 'epoch' to return total elapsed seconds (for <Type>timespan</Type>).
</Para> </Para>
</sect1>
<sect1> <sect1>
<title>Geometric Functions</title> <title>Geometric Functions</title>
...@@ -623,6 +626,7 @@ support functions. ...@@ -623,6 +626,7 @@ support functions.
</TGROUP> </TGROUP>
</TABLE> </TABLE>
</Para> </Para>
</sect1>
<sect1> <sect1>
<title id="cidr-funcs">IP V4 Functions</title> <title id="cidr-funcs">IP V4 Functions</title>
......
<!-- <!--
$Header: /cvsroot/pgsql/doc/src/sgml/geqo.sgml,v 1.4 1998/08/15 06:55:05 thomas Exp $ $Header: /cvsroot/pgsql/doc/src/sgml/geqo.sgml,v 1.5 1998/12/29 02:24:15 thomas Exp $
Genetic Optimizer Genetic Optimizer
$Log: geqo.sgml,v $ $Log: geqo.sgml,v $
Revision 1.5 1998/12/29 02:24:15 thomas
Clean up to ensure tag completion as required by the newest versions
of Norm's Modular Style Sheets and jade/docbook.
From Vince Vielhaber <vev@michvhf.com>.
Revision 1.4 1998/08/15 06:55:05 thomas Revision 1.4 1998/08/15 06:55:05 thomas
Change Id field in chapter tag to change html output file name. Change Id field in chapter tag to change html output file name.
...@@ -43,6 +48,7 @@ Written by <ULink url="utesch@aut.tu-freiberg.de">Martin Utesch</ULink> ...@@ -43,6 +48,7 @@ Written by <ULink url="utesch@aut.tu-freiberg.de">Martin Utesch</ULink>
for the Institute of Automatic Control at the University of Mining and Technology in Freiberg, Germany. for the Institute of Automatic Control at the University of Mining and Technology in Freiberg, Germany.
</Para> </Para>
</Note> </Note>
</para>
<Sect1> <Sect1>
<Title>Query Handling as a Complex Optimization Problem</Title> <Title>Query Handling as a Complex Optimization Problem</Title>
...@@ -55,6 +61,7 @@ optimization effort is caused by the support of a variety of <FirstTerm>join met ...@@ -55,6 +61,7 @@ optimization effort is caused by the support of a variety of <FirstTerm>join met
(e.g., nested loop, index scan, merge join in <ProductName>Postgres</ProductName>) to (e.g., nested loop, index scan, merge join in <ProductName>Postgres</ProductName>) to
process individual <Command>join</Command>s and a diversity of <FirstTerm>indices</FirstTerm> (e.g., r-tree, process individual <Command>join</Command>s and a diversity of <FirstTerm>indices</FirstTerm> (e.g., r-tree,
b-tree, hash in <ProductName>Postgres</ProductName>) as access paths for relations. b-tree, hash in <ProductName>Postgres</ProductName>) as access paths for relations.
</para>
<Para> <Para>
The current <ProductName>Postgres</ProductName> optimizer implementation performs a <FirstTerm>near- The current <ProductName>Postgres</ProductName> optimizer implementation performs a <FirstTerm>near-
...@@ -62,6 +69,7 @@ exhaustive search</FirstTerm> over the space of alternative strategies. This que ...@@ -62,6 +69,7 @@ exhaustive search</FirstTerm> over the space of alternative strategies. This que
optimization technique is inadequate to support database application optimization technique is inadequate to support database application
domains that involve the need for extensive queries, such as artificial domains that involve the need for extensive queries, such as artificial
intelligence. intelligence.
</para>
<Para> <Para>
The Institute of Automatic Control at the University of Mining and The Institute of Automatic Control at the University of Mining and
...@@ -70,15 +78,18 @@ folks wanted to take the <ProductName>Postgres</ProductName> DBMS as the backend ...@@ -70,15 +78,18 @@ folks wanted to take the <ProductName>Postgres</ProductName> DBMS as the backend
support knowledge based system for the maintenance of an electrical support knowledge based system for the maintenance of an electrical
power grid. The DBMS needed to handle large <Command>join</Command> queries for the power grid. The DBMS needed to handle large <Command>join</Command> queries for the
inference machine of the knowledge based system. inference machine of the knowledge based system.
</para>
<Para> <Para>
Performance difficulties within exploring the space of possible query Performance difficulties within exploring the space of possible query
plans arose the demand for a new optimization technique being developed. plans arose the demand for a new optimization technique being developed.
</para>
<Para> <Para>
In the following we propose the implementation of a <FirstTerm>Genetic Algorithm</FirstTerm> In the following we propose the implementation of a <FirstTerm>Genetic Algorithm</FirstTerm>
as an option for the database query optimization problem. as an option for the database query optimization problem.
</para>
</sect1>
<Sect1> <Sect1>
<Title>Genetic Algorithms (<Acronym>GA</Acronym>)</Title> <Title>Genetic Algorithms (<Acronym>GA</Acronym>)</Title>
...@@ -89,6 +100,7 @@ determined, randomized search. The set of possible solutions for the ...@@ -89,6 +100,7 @@ determined, randomized search. The set of possible solutions for the
optimization problem is considered as a <FirstTerm>population</FirstTerm> of <FirstTerm>individuals</FirstTerm>. optimization problem is considered as a <FirstTerm>population</FirstTerm> of <FirstTerm>individuals</FirstTerm>.
The degree of adaption of an individual to its environment is specified The degree of adaption of an individual to its environment is specified
by its <FirstTerm>fitness</FirstTerm>. by its <FirstTerm>fitness</FirstTerm>.
</para>
<Para> <Para>
The coordinates of an individual in the search space are represented The coordinates of an individual in the search space are represented
...@@ -96,11 +108,13 @@ by <FirstTerm>chromosomes</FirstTerm>, in essence a set of character strings. A ...@@ -96,11 +108,13 @@ by <FirstTerm>chromosomes</FirstTerm>, in essence a set of character strings. A
subsection of a chromosome which encodes the value of a single parameter subsection of a chromosome which encodes the value of a single parameter
being optimized. Typical encodings for a gene could be <FirstTerm>binary</FirstTerm> or being optimized. Typical encodings for a gene could be <FirstTerm>binary</FirstTerm> or
<FirstTerm>integer</FirstTerm>. <FirstTerm>integer</FirstTerm>.
</para>
<Para> <Para>
Through simulation of the evolutionary operations <FirstTerm>recombination</FirstTerm>, Through simulation of the evolutionary operations <FirstTerm>recombination</FirstTerm>,
<FirstTerm>mutation</FirstTerm>, and <FirstTerm>selection</FirstTerm> new generations of search points are found <FirstTerm>mutation</FirstTerm>, and <FirstTerm>selection</FirstTerm> new generations of search points are found
that show a higher average fitness than their ancestors. that show a higher average fitness than their ancestors.
</para>
<Para> <Para>
According to the "comp.ai.genetic" <Acronym>FAQ</Acronym> it cannot be stressed too According to the "comp.ai.genetic" <Acronym>FAQ</Acronym> it cannot be stressed too
...@@ -137,6 +151,8 @@ P''(t) generation of descendants at a time t ...@@ -137,6 +151,8 @@ P''(t) generation of descendants at a time t
| | t := t + 1 | | | t := t + 1 |
+===+=====================================+ +===+=====================================+
</ProgramListing> </ProgramListing>
</para>
</sect1>
<Sect1> <Sect1>
<Title>Genetic Query Optimization (<Acronym>GEQO</Acronym>) in Postgres</Title> <Title>Genetic Query Optimization (<Acronym>GEQO</Acronym>) in Postgres</Title>
...@@ -156,10 +172,12 @@ E. g., the query tree ...@@ -156,10 +172,12 @@ E. g., the query tree
is encoded by the integer string '4-1-3-2', is encoded by the integer string '4-1-3-2',
which means, first join relation '4' and '1', then '3', and which means, first join relation '4' and '1', then '3', and
then '2', where 1, 2, 3, 4 are relids in <ProductName>Postgres</ProductName>. then '2', where 1, 2, 3, 4 are relids in <ProductName>Postgres</ProductName>.
</para>
<Para> <Para>
Parts of the <Acronym>GEQO</Acronym> module are adapted from D. Whitley's Genitor Parts of the <Acronym>GEQO</Acronym> module are adapted from D. Whitley's Genitor
algorithm. algorithm.
</para>
<Para> <Para>
Specific characteristics of the <Acronym>GEQO</Acronym> implementation in <ProductName>Postgres</ProductName> Specific characteristics of the <Acronym>GEQO</Acronym> implementation in <ProductName>Postgres</ProductName>
...@@ -189,6 +207,7 @@ Mutation as genetic operator is deprecated so that no repair ...@@ -189,6 +207,7 @@ Mutation as genetic operator is deprecated so that no repair
</Para> </Para>
</ListItem> </ListItem>
</ItemizedList> </ItemizedList>
</para>
<Para> <Para>
The <Acronym>GEQO</Acronym> module gives the following benefits to the <ProductName>Postgres</ProductName> DBMS The <Acronym>GEQO</Acronym> module gives the following benefits to the <ProductName>Postgres</ProductName> DBMS
...@@ -209,6 +228,7 @@ Improved cost size approximation of query plans since no longer ...@@ -209,6 +228,7 @@ Improved cost size approximation of query plans since no longer
</Para> </Para>
</ListItem> </ListItem>
</ItemizedList> </ItemizedList>
</para>
</Sect1> </Sect1>
...@@ -231,6 +251,8 @@ Debugging showed that it get stucked in a loop of routine ...@@ -231,6 +251,8 @@ Debugging showed that it get stucked in a loop of routine
<Function>OrderedElemPop</Function>, file <FileName>backend/utils/mmgr/oset.c</FileName>. <Function>OrderedElemPop</Function>, file <FileName>backend/utils/mmgr/oset.c</FileName>.
The same problems arise with long queries when using the normal The same problems arise with long queries when using the normal
<ProductName>Postgres</ProductName> query optimization algorithm. <ProductName>Postgres</ProductName> query optimization algorithm.
</para>
</sect3>
<Sect3> <Sect3>
<Title>Improve genetic algorithm parameter settings</Title> <Title>Improve genetic algorithm parameter settings</Title>
...@@ -252,6 +274,8 @@ Computing time ...@@ -252,6 +274,8 @@ Computing time
</Para> </Para>
</ListItem> </ListItem>
</ItemizedList> </ItemizedList>
</para>
</sect3>
<Sect3> <Sect3>
<Title>Find better solution for integer overflow</Title> <Title>Find better solution for integer overflow</Title>
...@@ -263,6 +287,8 @@ the present hack for MAXINT overflow is to set the <ProductName>Postgres</Produc ...@@ -263,6 +287,8 @@ the present hack for MAXINT overflow is to set the <ProductName>Postgres</Produc
value of <StructField>rel->size</StructField> to its logarithm. value of <StructField>rel->size</StructField> to its logarithm.
Modifications of <StructName>Rel</StructName> in <FileName>backend/nodes/relation.h</FileName> will Modifications of <StructName>Rel</StructName> in <FileName>backend/nodes/relation.h</FileName> will
surely have severe impacts on the whole <ProductName>Postgres</ProductName> implementation. surely have severe impacts on the whole <ProductName>Postgres</ProductName> implementation.
</para>
</sect3>
<Sect3> <Sect3>
<Title>Find solution for exhausted memory</Title> <Title>Find solution for exhausted memory</Title>
...@@ -275,7 +301,9 @@ Maybe I forgot something to be freed correctly, but I dunno what. ...@@ -275,7 +301,9 @@ Maybe I forgot something to be freed correctly, but I dunno what.
Of course the <StructName>rel</StructName> data structure of the <Command>join</Command> keeps growing and Of course the <StructName>rel</StructName> data structure of the <Command>join</Command> keeps growing and
growing the more relations are packed into it. growing the more relations are packed into it.
Suggestions are welcome :-( Suggestions are welcome :-(
</para>
</sect3>
</sect2>
<Sect2> <Sect2>
<Title>Further Improvements</Title> <Title>Further Improvements</Title>
...@@ -283,6 +311,7 @@ Suggestions are welcome :-( ...@@ -283,6 +311,7 @@ Suggestions are welcome :-(
<Para> <Para>
Enable bushy query tree processing within <ProductName>Postgres</ProductName>; Enable bushy query tree processing within <ProductName>Postgres</ProductName>;
that may improve the quality of query plans. that may improve the quality of query plans.
</para>
<BIBLIOGRAPHY Id="geqo-biblio"> <BIBLIOGRAPHY Id="geqo-biblio">
<TITLE> <TITLE>
...@@ -365,4 +394,6 @@ The Benjamin/Cummings Pub., Inc. ...@@ -365,4 +394,6 @@ The Benjamin/Cummings Pub., Inc.
</BIBLIOENTRY> </BIBLIOENTRY>
</BIBLIOGRAPHY> </BIBLIOGRAPHY>
</sect2>
</sect1>
</Chapter> </Chapter>
...@@ -19,7 +19,7 @@ with more on different indexing and sorting schemes at ...@@ -19,7 +19,7 @@ with more on different indexing and sorting schemes at
And there is more interesting reading at the Berkely database site at And there is more interesting reading at the Berkely database site at
<ULink url="http://epoch.cs.berkeley.edu:8000/">http://epoch.cs.berkeley.edu:8000/</ULink>. <ULink url="http://epoch.cs.berkeley.edu:8000/">http://epoch.cs.berkeley.edu:8000/</ULink>.
</para>
<Para> <Para>
<Note> <Note>
...@@ -32,12 +32,12 @@ on GiST. Hopefully we will learn more in the future and update this information. ...@@ -32,12 +32,12 @@ on GiST. Hopefully we will learn more in the future and update this information.
- thomas 1998-03-01 - thomas 1998-03-01
</Para> </Para>
</Note> </Note>
</para>
<Para> <Para>
Well, I can't say I quite understand what's going on, but at least Well, I can't say I quite understand what's going on, but at least
I (almost) succeeded in porting GiST examples to linux. The GiST access I (almost) succeeded in porting GiST examples to linux. The GiST access
method is already in the postgres tree (<FileName>src/backend/access/gist</FileName>). method is already in the postgres tree (<FileName>src/backend/access/gist</FileName>).
</para>
<Para> <Para>
<ULink url="ftp://s2k-ftp.cs.berkeley.edu/pub/gist/pggist/pggist.tgz">Examples at Berkeley</ULink> <ULink url="ftp://s2k-ftp.cs.berkeley.edu/pub/gist/pggist/pggist.tgz">Examples at Berkeley</ULink>
come with an overview of the methods and demonstrate spatial index come with an overview of the methods and demonstrate spatial index
...@@ -56,7 +56,7 @@ ERROR: cannot open pix ...@@ -56,7 +56,7 @@ ERROR: cannot open pix
(PostgreSQL 6.3 Sun Feb 1 14:57:30 EST 1998) (PostgreSQL 6.3 Sun Feb 1 14:57:30 EST 1998)
</ProgramListing> </ProgramListing>
</para>
<Para> <Para>
I could not get sense of this error message; it appears to be something I could not get sense of this error message; it appears to be something
we'd rather ask the developers about (see also Note 4 below). What I we'd rather ask the developers about (see also Note 4 below). What I
...@@ -64,28 +64,28 @@ would suggest here is that someone of you linux guys (linux==gcc?) fetch the ...@@ -64,28 +64,28 @@ would suggest here is that someone of you linux guys (linux==gcc?) fetch the
original sources quoted above and apply my patch (see attachment) and original sources quoted above and apply my patch (see attachment) and
tell us what you feel about it. Looks cool to me, but I would not like tell us what you feel about it. Looks cool to me, but I would not like
to hold it up while there are so many competent people around. to hold it up while there are so many competent people around.
</para>
<Para> <Para>
A few notes on the sources: A few notes on the sources:
</para>
<Para> <Para>
1. I failed to make use of the original (HPUX) Makefile and rearranged 1. I failed to make use of the original (HPUX) Makefile and rearranged
the Makefile from the ancient postgres95 tutorial to do the job. I tried the Makefile from the ancient postgres95 tutorial to do the job. I tried
to keep it generic, but I am a very poor makefile writer -- just did to keep it generic, but I am a very poor makefile writer -- just did
some monkey work. Sorry about that, but I guess it is now a little some monkey work. Sorry about that, but I guess it is now a little
more portable that the original makefile. more portable that the original makefile.
</para>
<Para> <Para>
2. I built the example sources right under pgsql/src (just extracted the 2. I built the example sources right under pgsql/src (just extracted the
tar file there). The aforementioned Makefile assumes it is one level tar file there). The aforementioned Makefile assumes it is one level
below pgsql/src (in our case, in pgsql/src/pggist). below pgsql/src (in our case, in pgsql/src/pggist).
</para>
<Para> <Para>
3. The changes I made to the *.c files were all about #include's, 3. The changes I made to the *.c files were all about #include's,
function prototypes and typecasting. Other than that, I just threw function prototypes and typecasting. Other than that, I just threw
away a bunch of unused vars and added a couple parentheses to please away a bunch of unused vars and added a couple parentheses to please
gcc. I hope I did not screw up too much :) gcc. I hope I did not screw up too much :)
</para>
<Para> <Para>
4. There is a comment in polyproc.sql: 4. There is a comment in polyproc.sql:
...@@ -98,11 +98,11 @@ A few notes on the sources: ...@@ -98,11 +98,11 @@ A few notes on the sources:
<ProductName>Postgres</ProductName> versions <ProductName>Postgres</ProductName> versions
back and tried the query. My system went nuts and I had to shoot down back and tried the query. My system went nuts and I had to shoot down
the postmaster in about ten minutes. the postmaster in about ten minutes.
</para>
<Para> <Para>
I will continue to look into GiST for a while, but I would also I will continue to look into GiST for a while, but I would also
appreciate appreciate
more examples of R-tree usage. more examples of R-tree usage.
</para>
</Chapter> </Chapter>
...@@ -170,6 +170,7 @@ At the same time, the version numbering ...@@ -170,6 +170,7 @@ At the same time, the version numbering
was reset to start at 6.0, was reset to start at 6.0,
putting the numbers back into the sequence originally begun by putting the numbers back into the sequence originally begun by
the <ProductName>Postgres</ProductName> Project. the <ProductName>Postgres</ProductName> Project.
</Para>
<Para> <Para>
The emphasis on development for the v1.0.x releases of The emphasis on development for the v1.0.x releases of
...@@ -180,9 +181,11 @@ the emphasis has shifted from ...@@ -180,9 +181,11 @@ the emphasis has shifted from
identifying and understanding existing problems in the backend identifying and understanding existing problems in the backend
to augmenting features and capabilities, although to augmenting features and capabilities, although
work continues in all areas. work continues in all areas.
</Para>
<Para> <Para>
Major enhancements include: Major enhancements include:
</Para>
<ItemizedList> <ItemizedList>
<ListItem> <ListItem>
...@@ -203,6 +206,7 @@ type casting, and binary and hexadecimal integer input. ...@@ -203,6 +206,7 @@ type casting, and binary and hexadecimal integer input.
Built-in types have been improved, including new wide-range date/time types Built-in types have been improved, including new wide-range date/time types
and additional geometric type support. and additional geometric type support.
</Para> </Para>
</ListItem> </ListItem>
<ListItem> <ListItem>
<Para> <Para>
...@@ -211,7 +215,6 @@ and backend startup time has decreased 80% since v6.0 was released. ...@@ -211,7 +215,6 @@ and backend startup time has decreased 80% since v6.0 was released.
</Para> </Para>
</ListItem> </ListItem>
</ItemizedList> </ItemizedList>
</Para>
</Sect2> </Sect2>
</sect1> </sect1>
\ No newline at end of file
...@@ -3,6 +3,7 @@ ...@@ -3,6 +3,7 @@
<Para> <Para>
This manual set is organized into several parts: This manual set is organized into several parts:
</Para>
<VariableList> <VariableList>
<VarListEntry> <VarListEntry>
...@@ -69,6 +70,7 @@ Currently included in the <citetitle>User's Guide</citetitle>. ...@@ -69,6 +70,7 @@ Currently included in the <citetitle>User's Guide</citetitle>.
<Para> <Para>
In addition to this manual set, there are other resources to help you with In addition to this manual set, there are other resources to help you with
<ProductName>Postgres</ProductName> installation and use: <ProductName>Postgres</ProductName> installation and use:
</Para>
<VariableList> <VariableList>
<VarListEntry> <VarListEntry>
......
...@@ -51,6 +51,7 @@ SELECT name, altitude ...@@ -51,6 +51,7 @@ SELECT name, altitude
|Mariposa | 1953 | |Mariposa | 1953 |
+----------+----------+ +----------+----------+
</ProgramListing> </ProgramListing>
</para>
<Para> <Para>
On the other hand, to find the names of all cities, On the other hand, to find the names of all cities,
......
This diff is collapsed.
...@@ -65,6 +65,7 @@ are not as well suited to supporting the traditional relational database languag ...@@ -65,6 +65,7 @@ are not as well suited to supporting the traditional relational database languag
So, although <ProductName>Postgres</ProductName> has some object-oriented features, So, although <ProductName>Postgres</ProductName> has some object-oriented features,
it is firmly in the relational database world. In fact, some commercial databases it is firmly in the relational database world. In fact, some commercial databases
have recently incorporated features pioneered by <ProductName>Postgres</ProductName>. have recently incorporated features pioneered by <ProductName>Postgres</ProductName>.
</Para>
</Sect1> </Sect1>
......
This diff is collapsed.
<!-- <!--
$Header: /cvsroot/pgsql/doc/src/sgml/Attic/keys.sgml,v 1.2 1998/08/17 16:18:13 thomas Exp $ $Header: /cvsroot/pgsql/doc/src/sgml/Attic/keys.sgml,v 1.3 1998/12/29 02:24:16 thomas Exp $
Indices and Keys Indices and Keys
$Log: keys.sgml,v $ $Log: keys.sgml,v $
Revision 1.3 1998/12/29 02:24:16 thomas
Clean up to ensure tag completion as required by the newest versions
of Norm's Modular Style Sheets and jade/docbook.
From Vince Vielhaber <vev@michvhf.com>.
Revision 1.2 1998/08/17 16:18:13 thomas Revision 1.2 1998/08/17 16:18:13 thomas
Small sentence cleanups. Add tags for acronyms and products. Small sentence cleanups. Add tags for acronyms and products.
...@@ -110,6 +115,8 @@ Should not allow NULLs. ...@@ -110,6 +115,8 @@ Should not allow NULLs.
</Para> </Para>
</ListItem> </ListItem>
</itemizedlist> </itemizedlist>
</para>
</listitem>
<ListItem> <ListItem>
<Para> <Para>
...@@ -131,7 +138,10 @@ NULLs are acceptable. ...@@ -131,7 +138,10 @@ NULLs are acceptable.
</Para> </Para>
</ListItem> </ListItem>
</itemizedlist> </itemizedlist>
</para>
</listitem>
</itemizedlist> </itemizedlist>
</para>
<Para> <Para>
As for why no non-unique keys are defined explicitly in standard <acronym>SQL</acronym> syntax? As for why no non-unique keys are defined explicitly in standard <acronym>SQL</acronym> syntax?
......
...@@ -5,6 +5,7 @@ ...@@ -5,6 +5,7 @@
<ProductName>PostgreSQL</ProductName> is copyright (C) 1996-8 <ProductName>PostgreSQL</ProductName> is copyright (C) 1996-8
by the PostgreSQL Global Development Group, by the PostgreSQL Global Development Group,
and is distributed under the terms of the Berkeley license. and is distributed under the terms of the Berkeley license.
</Para>
<Para> <Para>
<ProductName>Postgres95</ProductName> is copyright (C) 1994-5 <ProductName>Postgres95</ProductName> is copyright (C) 1994-5
...@@ -38,3 +39,5 @@ Equipment Corp. PA-RISC and HP-UX are trademarks of ...@@ -38,3 +39,5 @@ Equipment Corp. PA-RISC and HP-UX are trademarks of
Hewlett-Packard Co. OSF/1 is a trademark of the Open Hewlett-Packard Co. OSF/1 is a trademark of the Open
Software Foundation. Software Foundation.
</Para> </Para>
</Sect1>
...@@ -281,6 +281,7 @@ Handles start with the prefix "pgsql". ...@@ -281,6 +281,7 @@ Handles start with the prefix "pgsql".
</TITLE> </TITLE>
<PARA><FUNCTION>pg_connect</FUNCTION> opens a connection to the <PARA><FUNCTION>pg_connect</FUNCTION> opens a connection to the
<ProductName>Postgres</ProductName> backend. <ProductName>Postgres</ProductName> backend.
</Para>
<para> <para>
Two syntaxes are available. In the older one, each possible option Two syntaxes are available. In the older one, each possible option
...@@ -421,8 +422,10 @@ None. ...@@ -421,8 +422,10 @@ None.
The result is a list describing the possible connection options and their The result is a list describing the possible connection options and their
current default values. current default values.
Each entry in the list is a sublist of the format: Each entry in the list is a sublist of the format:
</Para>
<para> <para>
{optname label dispchar dispsize value} {optname label dispchar dispsize value}
</Para>
<Para> <Para>
where the optname is usable as an option in where the optname is usable as an option in
<FUNCTION>pg_connect -conninfo</FUNCTION>. <FUNCTION>pg_connect -conninfo</FUNCTION>.
...@@ -540,6 +543,7 @@ to obtain the results of the query. ...@@ -540,6 +543,7 @@ to obtain the results of the query.
Query result handles start with the connection handle and add a period Query result handles start with the connection handle and add a period
and a result number. and a result number.
</Para>
<PARA> <PARA>
Note that lack of a Tcl error is not proof that the query succeeded! Note that lack of a Tcl error is not proof that the query succeeded!
...@@ -548,6 +552,7 @@ as a query result with failure status, not by generating a Tcl error ...@@ -548,6 +552,7 @@ as a query result with failure status, not by generating a Tcl error
in pg_exec. in pg_exec.
</PARA> </PARA>
</REFSECT1> </REFSECT1>
</refentry>
<REFENTRY ID="PGTCL-PGRESULT"> <REFENTRY ID="PGTCL-PGRESULT">
<REFMETA> <REFMETA>
...@@ -765,6 +770,7 @@ The result depends on the selected option, as described above. ...@@ -765,6 +770,7 @@ The result depends on the selected option, as described above.
<PARA> <PARA>
<FUNCTION>pg_result</FUNCTION> returns information about a query result <FUNCTION>pg_result</FUNCTION> returns information about a query result
created by a prior <FUNCTION>pg_exec</FUNCTION>. created by a prior <FUNCTION>pg_exec</FUNCTION>.
</Para>
<para> <para>
You can keep a query result around for as long as you need it, but when You can keep a query result around for as long as you need it, but when
...@@ -1012,6 +1018,7 @@ The command string is executed from the Tcl idle loop. That is the normal ...@@ -1012,6 +1018,7 @@ The command string is executed from the Tcl idle loop. That is the normal
idle state of an application written with Tk. In non-Tk Tcl shells, you can idle state of an application written with Tk. In non-Tk Tcl shells, you can
execute <FUNCTION>update</FUNCTION> or <FUNCTION>vwait</FUNCTION> to cause execute <FUNCTION>update</FUNCTION> or <FUNCTION>vwait</FUNCTION> to cause
the idle loop to be entered. the idle loop to be entered.
</Para>
<para> <para>
You should not invoke the SQL statements LISTEN or UNLISTEN directly when You should not invoke the SQL statements LISTEN or UNLISTEN directly when
......
...@@ -24,6 +24,7 @@ following directories: ...@@ -24,6 +24,7 @@ following directories:
../src/test/examples ../src/test/examples
../src/bin/psql ../src/bin/psql
</ProgramListing> </ProgramListing>
</Para>
<Para> <Para>
Frontend programs which use <FileName>libpq</FileName> must include the Frontend programs which use <FileName>libpq</FileName> must include the
...@@ -317,6 +318,7 @@ char *PQoptions(PGconn *conn) ...@@ -317,6 +318,7 @@ char *PQoptions(PGconn *conn)
<synopsis> <synopsis>
ConnStatusType *PQstatus(PGconn *conn) ConnStatusType *PQstatus(PGconn *conn)
</synopsis> </synopsis>
</Para>
<Para> <Para>
A failed connection attempt is signaled by status CONNECTION_BAD. A failed connection attempt is signaled by status CONNECTION_BAD.
...@@ -324,6 +326,7 @@ Ordinarily, an OK status will remain so until PQfinish, but a ...@@ -324,6 +326,7 @@ Ordinarily, an OK status will remain so until PQfinish, but a
communications failure might result in the status changing to communications failure might result in the status changing to
CONNECTION_BAD prematurely. In that case the application could CONNECTION_BAD prematurely. In that case the application could
try to recover by calling PQreset. try to recover by calling PQreset.
</Para>
</ListItem> </ListItem>
<ListItem> <ListItem>
...@@ -334,11 +337,13 @@ try to recover by calling PQreset. ...@@ -334,11 +337,13 @@ try to recover by calling PQreset.
<synopsis> <synopsis>
char *PQerrorMessage(PGconn* conn); char *PQerrorMessage(PGconn* conn);
</synopsis> </synopsis>
</Para>
<Para> <Para>
Nearly all libpq functions will set PQerrorMessage if they fail. Nearly all libpq functions will set PQerrorMessage if they fail.
Note that by libpq convention, a non-empty PQerrorMessage will Note that by libpq convention, a non-empty PQerrorMessage will
include a trailing newline. include a trailing newline.
</Para>
</ListItem> </ListItem>
<ListItem> <ListItem>
...@@ -499,9 +504,11 @@ char *PQfname(PGresult *res, ...@@ -499,9 +504,11 @@ char *PQfname(PGresult *res,
int PQfnumber(PGresult *res, int PQfnumber(PGresult *res,
char* field_name); char* field_name);
</synopsis> </synopsis>
</Para>
<Para> <Para>
-1 is returned if the given name does not match any field. -1 is returned if the given name does not match any field.
</Para>
</ListItem> </ListItem>
<ListItem> <ListItem>
...@@ -752,7 +759,6 @@ as with a PGresult returned by libpq itself. ...@@ -752,7 +759,6 @@ as with a PGresult returned by libpq itself.
The PQexec function is adequate for submitting queries in simple synchronous The PQexec function is adequate for submitting queries in simple synchronous
applications. It has a couple of major deficiencies however: applications. It has a couple of major deficiencies however:
<Para>
<ItemizedList> <ItemizedList>
<ListItem> <ListItem>
<Para> <Para>
...@@ -783,7 +789,6 @@ Applications that do not like these limitations can instead use the ...@@ -783,7 +789,6 @@ Applications that do not like these limitations can instead use the
underlying functions that PQexec is built from: PQsendQuery and underlying functions that PQexec is built from: PQsendQuery and
PQgetResult. PQgetResult.
<Para>
<ItemizedList> <ItemizedList>
<ListItem> <ListItem>
<Para> <Para>
...@@ -837,7 +842,6 @@ still cause the frontend to block until the backend completes the ...@@ -837,7 +842,6 @@ still cause the frontend to block until the backend completes the
next SQL command. This can be avoided by proper use of three more next SQL command. This can be avoided by proper use of three more
functions: functions:
<Para>
<ItemizedList> <ItemizedList>
<ListItem> <ListItem>
<Para> <Para>
...@@ -908,10 +912,12 @@ to read the input. It can then call PQisBusy, followed by PQgetResult ...@@ -908,10 +912,12 @@ to read the input. It can then call PQisBusy, followed by PQgetResult
if PQisBusy returns FALSE. It can also call PQnotifies to detect NOTIFY if PQisBusy returns FALSE. It can also call PQnotifies to detect NOTIFY
messages (see "Asynchronous Notification", below). An example is given messages (see "Asynchronous Notification", below). An example is given
in the sample programs section. in the sample programs section.
</Para>
<Para> <Para>
A frontend that uses PQsendQuery/PQgetResult can also attempt to cancel A frontend that uses PQsendQuery/PQgetResult can also attempt to cancel
a query that is still being processed by the backend. a query that is still being processed by the backend.
</Para>
<Para> <Para>
<ItemizedList> <ItemizedList>
...@@ -941,6 +947,7 @@ int PQrequestCancel(PGconn *conn); ...@@ -941,6 +947,7 @@ int PQrequestCancel(PGconn *conn);
<Para> <Para>
Note that if the current query is part of a transaction, cancellation Note that if the current query is part of a transaction, cancellation
will abort the whole transaction. will abort the whole transaction.
</Para>
<Para> <Para>
PQrequestCancel can safely be invoked from a signal handler. So, it is PQrequestCancel can safely be invoked from a signal handler. So, it is
...@@ -950,6 +957,7 @@ PQrequestCancel from a SIGINT signal handler, thus allowing interactive ...@@ -950,6 +957,7 @@ PQrequestCancel from a SIGINT signal handler, thus allowing interactive
cancellation of queries that it issues through PQexec. Note that cancellation of queries that it issues through PQexec. Note that
PQrequestCancel will have no effect if the connection is not currently open PQrequestCancel will have no effect if the connection is not currently open
or the backend is not currently processing a query. or the backend is not currently processing a query.
</Para>
</Sect1> </Sect1>
...@@ -961,7 +969,6 @@ or the backend is not currently processing a query. ...@@ -961,7 +969,6 @@ or the backend is not currently processing a query.
function calls to the backend. This is a trapdoor into system internals and function calls to the backend. This is a trapdoor into system internals and
can be a potential security hole. Most users will not need this feature. can be a potential security hole. Most users will not need this feature.
<Para>
<ItemizedList> <ItemizedList>
<ListItem> <ListItem>
<Para> <Para>
...@@ -1023,13 +1030,13 @@ passed from the notifier to the listener. Thus, typically, any actual data ...@@ -1023,13 +1030,13 @@ passed from the notifier to the listener. Thus, typically, any actual data
that needs to be communicated is transferred through a database relation. that needs to be communicated is transferred through a database relation.
Commonly the condition name is the same as the associated relation, but it is Commonly the condition name is the same as the associated relation, but it is
not necessary for there to be any associated relation. not necessary for there to be any associated relation.
</Para>
<Para> <Para>
<FileName>libpq</FileName> applications submit LISTEN and UNLISTEN <FileName>libpq</FileName> applications submit LISTEN and UNLISTEN
commands as ordinary SQL queries. Subsequently, arrival of NOTIFY commands as ordinary SQL queries. Subsequently, arrival of NOTIFY
messages can be detected by calling PQnotifies(). messages can be detected by calling PQnotifies().
<Para>
<ItemizedList> <ItemizedList>
<ListItem> <ListItem>
<Para> <Para>
...@@ -1062,6 +1069,7 @@ typedef struct pgNotify ...@@ -1062,6 +1069,7 @@ typedef struct pgNotify
<Para> <Para>
The second sample program gives an example of the use The second sample program gives an example of the use
of asynchronous notification. of asynchronous notification.
</Para>
<Para> <Para>
PQnotifies() does not actually read backend data; it just returns messages PQnotifies() does not actually read backend data; it just returns messages
...@@ -1216,6 +1224,7 @@ specified directly. ...@@ -1216,6 +1224,7 @@ specified directly.
<synopsis> <synopsis>
int PQendcopy(PGconn *conn); int PQendcopy(PGconn *conn);
</synopsis> </synopsis>
</Para>
<Para> <Para>
As an example: As an example:
...@@ -1318,10 +1327,12 @@ defaultNoticeProcessor(void * arg, const char * message) ...@@ -1318,10 +1327,12 @@ defaultNoticeProcessor(void * arg, const char * message)
fprintf(stderr, "%s", message); fprintf(stderr, "%s", message);
} }
</ProgramListing> </ProgramListing>
</Para>
<Para> <Para>
To use a special notice processor, call <function>PQsetNoticeProcessor</function> just after To use a special notice processor, call <function>PQsetNoticeProcessor</function> just after
creation of a new PGconn object. creation of a new PGconn object.
</Para>
</Sect1> </Sect1>
...@@ -1951,7 +1962,7 @@ main() ...@@ -1951,7 +1962,7 @@ main()
} }
</ProgramListing> </ProgramListing>
<Para> </Para>
</Sect2> </Sect2>
</Sect1> </Sect1>
......
...@@ -200,6 +200,7 @@ int lo_close(PGconn *conn, int fd) ...@@ -200,6 +200,7 @@ int lo_close(PGconn *conn, int fd)
lo_open. On success, <Acronym>lo_close</Acronym> returns zero. On error, lo_open. On success, <Acronym>lo_close</Acronym> returns zero. On error,
the return value is negative. the return value is negative.
</Para> </Para>
</sect2>
</Sect1> </Sect1>
<Sect1> <Sect1>
......
...@@ -82,6 +82,7 @@ It is possible to create a database in a location other than the default ...@@ -82,6 +82,7 @@ It is possible to create a database in a location other than the default
location for the installation. Remember that all database access actually location for the installation. Remember that all database access actually
occurs through the database backend, so that any location specified must occurs through the database backend, so that any location specified must
be accessible by the backend. be accessible by the backend.
</Para>
<Para> <Para>
Alternate database locations are created and referenced by an environment variable Alternate database locations are created and referenced by an environment variable
...@@ -94,6 +95,7 @@ Any valid environment variable name may be used to reference an alternate locati ...@@ -94,6 +95,7 @@ Any valid environment variable name may be used to reference an alternate locati
although using variable names with a prefix of <quote>PGDATA</quote> is recommended although using variable names with a prefix of <quote>PGDATA</quote> is recommended
to avoid confusion to avoid confusion
and conflict with other variables. and conflict with other variables.
</Para>
<Note> <Note>
<Para> <Para>
...@@ -112,10 +114,12 @@ The administrator's guide discusses how to enable this feature. ...@@ -112,10 +114,12 @@ The administrator's guide discusses how to enable this feature.
For security and integrity reasons, For security and integrity reasons,
any path or environment variable specified has some any path or environment variable specified has some
additional path fields appended. additional path fields appended.
</Para>
<Para> <Para>
Alternate database locations must be prepared by running Alternate database locations must be prepared by running
<Application>initlocation</Application>. <Application>initlocation</Application>.
</Para>
<Para> <Para>
To create a data storage area using the environment variable To create a data storage area using the environment variable
...@@ -128,9 +132,10 @@ Then, from the command line, type ...@@ -128,9 +132,10 @@ Then, from the command line, type
Creating Postgres database system directory /alt/postgres/data Creating Postgres database system directory /alt/postgres/data
Creating Postgres database system directory /alt/postgres/data/base Creating Postgres database system directory /alt/postgres/data/base
</ProgramListing> </ProgramListing>
</Para>
<Para> <Para>
To create a database in the alternate storage area <envar>PGDATA2<envar> To create a database in the alternate storage area <envar>PGDATA2</envar>
from the command line, use the following command: from the command line, use the following command:
<ProgramListing> <ProgramListing>
% createdb -D PGDATA2 mydb % createdb -D PGDATA2 mydb
...@@ -161,6 +166,7 @@ the following: ...@@ -161,6 +166,7 @@ the following:
ERROR: Unable to create database directory /alt/postgres/data/base/mydb ERROR: Unable to create database directory /alt/postgres/data/base/mydb
createdb: database creation failed on mydb. createdb: database creation failed on mydb.
</ProgramListing> </ProgramListing>
</Para>
</Sect1> </Sect1>
...@@ -260,6 +266,7 @@ mydb=> \q ...@@ -260,6 +266,7 @@ mydb=> \q
<Title>Database Privileges</Title> <Title>Database Privileges</Title>
<Para> <Para>
</para>
</Sect2> </Sect2>
<Sect2> <Sect2>
......
...@@ -11,6 +11,7 @@ Since it is possible to install more than one set of ...@@ -11,6 +11,7 @@ Since it is possible to install more than one set of
databases on a single host, this term more precisely denotes any databases on a single host, this term more precisely denotes any
particular set of installed particular set of installed
<Productname>Postgres</Productname> binaries and databases. <Productname>Postgres</Productname> binaries and databases.
</para>
<para> <para>
The The
...@@ -27,6 +28,7 @@ Note that the <Productname>Postgres</Productname> superuser is ...@@ -27,6 +28,7 @@ Note that the <Productname>Postgres</Productname> superuser is
the same as the Unix superuser (which will be referred to as <firstterm>root</firstterm>). the same as the Unix superuser (which will be referred to as <firstterm>root</firstterm>).
The superuser should have a non-zero user identifier (<firstterm>UID</firstterm>) The superuser should have a non-zero user identifier (<firstterm>UID</firstterm>)
for security reasons. for security reasons.
</para>
<para> <para>
The The
...@@ -37,6 +39,7 @@ enforce a security policy for a site. The DBA can add new users by ...@@ -37,6 +39,7 @@ enforce a security policy for a site. The DBA can add new users by
the method described below the method described below
and maintain a set of template databases for use by and maintain a set of template databases for use by
<application>createdb</application>. <application>createdb</application>.
</para>
<para> <para>
The <application>postmaster</application> The <application>postmaster</application>
...@@ -48,6 +51,7 @@ backend processes. The <application>postmaster</application> ...@@ -48,6 +51,7 @@ backend processes. The <application>postmaster</application>
can take several command-line arguments to tune its behavior. can take several command-line arguments to tune its behavior.
However, supplying arguments is necessary only if you intend to run multiple However, supplying arguments is necessary only if you intend to run multiple
sites or a non-default site. sites or a non-default site.
</para>
<para> <para>
The <Productname>Postgres</Productname> backend The <Productname>Postgres</Productname> backend
...@@ -58,6 +62,8 @@ directly from the user shell by the ...@@ -58,6 +62,8 @@ directly from the user shell by the
doing this bypasses the shared buffer pool and lock table associated doing this bypasses the shared buffer pool and lock table associated
with a postmaster/site, therefore this is not recommended in a multiuser with a postmaster/site, therefore this is not recommended in a multiuser
site. site.
</para>
</sect1>
<sect1> <sect1>
<title>Notation</title> <title>Notation</title>
...@@ -66,6 +72,7 @@ site. ...@@ -66,6 +72,7 @@ site.
<quote>...</quote> or <filename>/usr/local/pgsql/</filename> <quote>...</quote> or <filename>/usr/local/pgsql/</filename>
at the front of a file name is used to represent the at the front of a file name is used to represent the
path to the <Productname>Postgres</Productname> superuser's home directory. path to the <Productname>Postgres</Productname> superuser's home directory.
</para>
<para> <para>
In a command synopsis, brackets In a command synopsis, brackets
...@@ -73,10 +80,12 @@ In a command synopsis, brackets ...@@ -73,10 +80,12 @@ In a command synopsis, brackets
Anything in braces Anything in braces
(<quote>{</quote> and <quote>}</quote>) and containing vertical bars (<quote>|</quote>) (<quote>{</quote> and <quote>}</quote>) and containing vertical bars (<quote>|</quote>)
indicates that you must choose one. indicates that you must choose one.
</para>
<para> <para>
In examples, parentheses (<quote>(</quote> and <quote>)</quote>) are used to group boolean In examples, parentheses (<quote>(</quote> and <quote>)</quote>) are used to group boolean
expressions. <quote>|</quote> is the boolean operator OR. expressions. <quote>|</quote> is the boolean operator OR.
</para>
<para> <para>
Examples will show commands executed from various accounts and programs. Examples will show commands executed from various accounts and programs.
...@@ -87,6 +96,7 @@ executed from an unprivileged user's account will be preceeded with ...@@ -87,6 +96,7 @@ executed from an unprivileged user's account will be preceeded with
<quote>$</quote>. <quote>$</quote>.
<acronym>SQL</acronym> commands will be preceeded with <quote>=&gt;</quote> <acronym>SQL</acronym> commands will be preceeded with <quote>=&gt;</quote>
or will have no leading prompt, depending on the context. or will have no leading prompt, depending on the context.
</para>
<note> <note>
<para> <para>
...@@ -94,6 +104,7 @@ At the time of writing (<Productname>Postgres</Productname> v6.4) the notation f ...@@ -94,6 +104,7 @@ At the time of writing (<Productname>Postgres</Productname> v6.4) the notation f
flagging commands is not universally consistant throughout the documentation set. flagging commands is not universally consistant throughout the documentation set.
Please report problems to Please report problems to
<ulink url="mailto:docs@postgresql.org">the Documentation Mailing List</ulink>. <ulink url="mailto:docs@postgresql.org">the Documentation Mailing List</ulink>.
</para>
</note> </note>
</sect1> </sect1>
This diff is collapsed.
...@@ -15,6 +15,7 @@ These operators are declared in the system catalog ...@@ -15,6 +15,7 @@ These operators are declared in the system catalog
pg_operator. Every entry in pg_operator includes pg_operator. Every entry in pg_operator includes
the name of the procedure that implements the operator and the the name of the procedure that implements the operator and the
class <Acronym>OIDs</Acronym> of the input and output types. class <Acronym>OIDs</Acronym> of the input and output types.
</Para>
<Para> <Para>
To view all variations of the <Quote>||</Quote> string concatenation operator, To view all variations of the <Quote>||</Quote> string concatenation operator,
...@@ -45,11 +46,12 @@ as: ...@@ -45,11 +46,12 @@ as:
<ProgramListing> <ProgramListing>
select * from emp where int4lt(salary, 40000); select * from emp where int4lt(salary, 40000);
</ProgramListing> </ProgramListing>
</Para>
<Para> <Para>
<Application>psql</Application> <Application>psql</Application>
has a command (<Command>\dd</Command>) to show these operators. has a command (<Command>\dd</Command>) to show these operators.
</Para>
<sect1> <sect1>
<title>Lexical Precedence</title> <title>Lexical Precedence</title>
...@@ -70,180 +72,255 @@ Operator Ordering (decreasing precedence) ...@@ -70,180 +72,255 @@ Operator Ordering (decreasing precedence)
<row> <row>
<entry> <entry>
Element Element
</entry>
<entry> <entry>
Precedence Precedence
</entry>
<entry> <entry>
Description Description
</entry>
</row>
</thead> </thead>
<tbody> <tbody>
<row> <row>
<entry> <entry>
UNION UNION
</entry>
<entry> <entry>
left left
</entry>
<entry> <entry>
SQL select construct SQL select construct
</entry>
</row>
<row> <row>
<entry> <entry>
:: ::
</entry>
<entry> <entry>
</entry>
<entry> <entry>
<productname>Postgres</productname> typecasting <productname>Postgres</productname> typecasting
</entry>
</row>
<row> <row>
<entry> <entry>
[ ] [ ]
</entry>
<entry> <entry>
left left
</entry>
<entry> <entry>
array delimiters array delimiters
</entry>
</row>
<row> <row>
<entry> <entry>
. .
</entry>
<entry> <entry>
left left
</entry>
<entry> <entry>
table/column delimiter table/column delimiter
</entry>
</row>
<row> <row>
<entry> <entry>
- -
</entry>
<entry> <entry>
right right
</entry>
<entry> <entry>
unary minus unary minus
</entry>
</row>
<row> <row>
<entry> <entry>
; ;
</entry>
<entry> <entry>
left left
</entry>
<entry> <entry>
statement termination, logarithm statement termination, logarithm
</entry>
</row>
<row> <row>
<entry> <entry>
: :
</entry>
<entry> <entry>
right right
</entry>
<entry> <entry>
exponentiation exponentiation
</entry>
</row>
<row> <row>
<entry> <entry>
| |
</entry>
<entry> <entry>
left left
</entry>
<entry> <entry>
start of interval start of interval
</entry>
</row>
<row> <row>
<entry> <entry>
* / * /
</entry>
<entry> <entry>
left left
</entry>
<entry> <entry>
multiplication, division multiplication, division
</entry>
</row>
<row> <row>
<entry> <entry>
+ - + -
</entry>
<entry> <entry>
left left
</entry>
<entry> <entry>
addition, subtraction addition, subtraction
</entry>
</row>
<row> <row>
<entry> <entry>
IS IS
</entry>
<entry> <entry>
</entry>
<entry> <entry>
test for TRUE, FALSE, NULL test for TRUE, FALSE, NULL
</entry>
</row>
<row> <row>
<entry> <entry>
ISNULL ISNULL
</entry>
<entry> <entry>
</entry>
<entry> <entry>
test for NULL test for NULL
</entry>
</row>
<row> <row>
<entry> <entry>
NOTNULL NOTNULL
</entry>
<entry> <entry>
</entry>
<entry> <entry>
test for NOT NULL test for NOT NULL
</entry>
</row>
<row> <row>
<entry> <entry>
(all other operators) (all other operators)
</entry>
<entry> <entry>
</entry>
<entry> <entry>
native and user-defined native and user-defined
</entry>
</row>
<row> <row>
<entry> <entry>
IN IN
</entry>
<entry> <entry>
</entry>
<entry> <entry>
set membership set membership
</entry>
</row>
<row> <row>
<entry> <entry>
BETWEEN BETWEEN
</entry>
<entry> <entry>
</entry>
<entry> <entry>
containment containment
</entry>
</row>
<row> <row>
<entry> <entry>
LIKE LIKE
</entry>
<entry> <entry>
</entry>
<entry> <entry>
string pattern matching string pattern matching
</entry>
</row>
<row> <row>
<entry> <entry>
&lt; &gt; &lt; &gt;
</entry>
<entry> <entry>
</entry>
<entry> <entry>
boolean inequality boolean inequality
</entry>
</row>
<row> <row>
<entry> <entry>
= =
</entry>
<entry> <entry>
right right
</entry>
<entry> <entry>
equality equality
</entry>
</row>
<row> <row>
<entry> <entry>
NOT NOT
</entry>
<entry> <entry>
right right
</entry>
<entry> <entry>
negation negation
</entry>
</row>
<row> <row>
<entry> <entry>
AND AND
</entry>
<entry> <entry>
left left
</entry>
<entry> <entry>
logical intersection logical intersection
</entry>
</row>
<row> <row>
<entry> <entry>
OR OR
</entry>
<entry> <entry>
left left
</entry>
<entry> <entry>
logical union logical union
</entry>
</row>
</tbody> </tbody>
</tgroup>
</table> </table>
</para>
</sect1>
<sect1> <sect1>
<title>General Operators</title> <title>General Operators</title>
...@@ -251,7 +328,7 @@ logical union ...@@ -251,7 +328,7 @@ logical union
<para> <para>
The operators listed here are defined for a number of native data types, The operators listed here are defined for a number of native data types,
ranging from numeric types to data/time types. ranging from numeric types to data/time types.
</para>
<Para> <Para>
<TABLE TOCENTRY="1"> <TABLE TOCENTRY="1">
<TITLE><ProductName>Postgres</ProductName> Operators</TITLE> <TITLE><ProductName>Postgres</ProductName> Operators</TITLE>
...@@ -339,6 +416,7 @@ ranging from numeric types to data/time types. ...@@ -339,6 +416,7 @@ ranging from numeric types to data/time types.
</TGROUP> </TGROUP>
</TABLE> </TABLE>
</Para> </Para>
</sect1>
<sect1> <sect1>
<title id="math-opers">Numerical Operators</title> <title id="math-opers">Numerical Operators</title>
...@@ -430,6 +508,7 @@ ranging from numeric types to data/time types. ...@@ -430,6 +508,7 @@ ranging from numeric types to data/time types.
</TGROUP> </TGROUP>
</TABLE> </TABLE>
</Para> </Para>
</sect1>
<sect1> <sect1>
<title>Geometric Operators</title> <title>Geometric Operators</title>
...@@ -571,6 +650,7 @@ ranging from numeric types to data/time types. ...@@ -571,6 +650,7 @@ ranging from numeric types to data/time types.
</TGROUP> </TGROUP>
</TABLE> </TABLE>
</Para> </Para>
</sect1>
<sect1> <sect1>
<title>Time Interval Operators</title> <title>Time Interval Operators</title>
...@@ -651,6 +731,7 @@ are several operators for this type. ...@@ -651,6 +731,7 @@ are several operators for this type.
</TGROUP> </TGROUP>
</TABLE> </TABLE>
</Para> </Para>
</sect1>
<Sect1> <Sect1>
<title id="cidr-opers">IP V4 Operators</title> <title id="cidr-opers">IP V4 Operators</title>
......
...@@ -11,6 +11,7 @@ A description of the database file default page format. ...@@ -11,6 +11,7 @@ A description of the database file default page format.
<para> <para>
This section provides an overview of the page format used by <productname>Postgres</productname> This section provides an overview of the page format used by <productname>Postgres</productname>
classes. User-defined access methods need not use this page format. classes. User-defined access methods need not use this page format.
</para>
<para> <para>
In the following explanation, a In the following explanation, a
...@@ -18,6 +19,7 @@ In the following explanation, a ...@@ -18,6 +19,7 @@ In the following explanation, a
is assumed to contain 8 bits. In addition, the term is assumed to contain 8 bits. In addition, the term
<firstterm>item</firstterm> <firstterm>item</firstterm>
refers to data which is stored in <productname>Postgres</productname> classes. refers to data which is stored in <productname>Postgres</productname> classes.
</para>
<sect1> <sect1>
<title>Page Structure</title> <title>Page Structure</title>
...@@ -41,50 +43,73 @@ Description ...@@ -41,50 +43,73 @@ Description
</entry> </entry>
</row> </row>
</thead> </thead>
<tbody> <tbody>
<row> <row>
<entry> <entry>
itemPointerData itemPointerData
</entry> </entry>
</row>
<row> <row>
<entry> <entry>
filler filler
</entry> </entry>
</row>
<row> <row>
<entry> <entry>
itemData... itemData...
</entry> </entry>
</row>
<row> <row>
<entry> <entry>
Unallocated Space Unallocated Space
</entry> </entry>
</row>
<row> <row>
<entry> <entry>
ItemContinuationData ItemContinuationData
</entry> </entry>
</row>
<row> <row>
<entry> <entry>
Special Space Special Space
</entry> </entry>
</row>
<row> <row>
<entry> <entry>
``ItemData 2'' ``ItemData 2''
</entry> </entry>
</row>
<row> <row>
<entry> <entry>
``ItemData 1'' ``ItemData 1''
</entry> </entry>
</row>
<row> <row>
<entry> <entry>
ItemIdData ItemIdData
</entry> </entry>
</row>
<row> <row>
<entry> <entry>
PageHeaderData PageHeaderData
</entry> </entry>
</row>
</tbody> </tbody>
</tgroup> </tgroup>
</table> </table>
</para>
<!-- <!--
.\" Running .\" Running
...@@ -121,6 +146,7 @@ the page. Page size is stored in each page because frames in the ...@@ -121,6 +146,7 @@ the page. Page size is stored in each page because frames in the
buffer pool may be subdivided into equal sized pages on a frame by buffer pool may be subdivided into equal sized pages on a frame by
frame basis within a class. The internal fragmentation information is frame basis within a class. The internal fragmentation information is
used to aid in determining when page reorganization should occur. used to aid in determining when page reorganization should occur.
</para>
<para> <para>
Following the page header are item identifiers Following the page header are item identifiers
...@@ -134,6 +160,7 @@ created by <productname>Postgres</productname> consists of a frame number and an ...@@ -134,6 +160,7 @@ created by <productname>Postgres</productname> consists of a frame number and an
identifier. An item identifier contains a byte-offset to the start of identifier. An item identifier contains a byte-offset to the start of
an item, its length in bytes, and a set of attribute bits which affect an item, its length in bytes, and a set of attribute bits which affect
its interpretation. its interpretation.
</para>
<para> <para>
The items themselves are stored in space allocated backwards from The items themselves are stored in space allocated backwards from
...@@ -148,6 +175,8 @@ This structure contains ...@@ -148,6 +175,8 @@ This structure contains
itemPointerData itemPointerData
which points to the next piece and the piece itself. The last piece which points to the next piece and the piece itself. The last piece
is handled normally. is handled normally.
</para>
</sect1>
<sect1> <sect1>
<title>Files</title> <title>Files</title>
...@@ -161,6 +190,9 @@ is handled normally. ...@@ -161,6 +190,9 @@ is handled normally.
<listitem> <listitem>
<para> <para>
Location of shared (global) database files. Location of shared (global) database files.
</para>
</listitem>
</varlistentry>
<varlistentry> <varlistentry>
<term> <term>
...@@ -169,8 +201,13 @@ Location of shared (global) database files. ...@@ -169,8 +201,13 @@ Location of shared (global) database files.
<listitem> <listitem>
<para> <para>
Location of local database files. Location of local database files.
</para>
</listitem>
</varlistentry>
</variablelist> </variablelist>
</para>
</sect1>
<sect1> <sect1>
<title>Bugs</title> <title>Bugs</title>
...@@ -178,9 +215,11 @@ Location of local database files. ...@@ -178,9 +215,11 @@ Location of local database files.
<para> <para>
The page format may change in the future to provide more efficient The page format may change in the future to provide more efficient
access to large objects. access to large objects.
</para>
<para> <para>
This section contains insufficient detail to be of any assistance in This section contains insufficient detail to be of any assistance in
writing a new access method. writing a new access method.
</para>
</sect1>
</chapter> </chapter>
This diff is collapsed.
...@@ -8,6 +8,7 @@ compiled and tested <ProductName>Postgres</ProductName> on a ...@@ -8,6 +8,7 @@ compiled and tested <ProductName>Postgres</ProductName> on a
number of platforms. Check number of platforms. Check
<ulink url="http://www.postgresql.org/docs/admin/ports.htm">the web site</ulink> <ulink url="http://www.postgresql.org/docs/admin/ports.htm">the web site</ulink>
for the latest information. for the latest information.
</para>
<Sect1> <Sect1>
<Title>Currently Supported Platforms</Title> <Title>Currently Supported Platforms</Title>
...@@ -226,11 +227,11 @@ At the time of publication, the following platforms have been tested: ...@@ -226,11 +227,11 @@ At the time of publication, the following platforms have been tested:
</TBODY> </TBODY>
</TGROUP> </TGROUP>
</TABLE> </TABLE>
</para>
<para> <para>
Platforms listed for v6.3.x should also work with v6.4, but we did not receive Platforms listed for v6.3.x should also work with v6.4, but we did not receive
confirmation of such at the time this list was compiled. confirmation of such at the time this list was compiled.
</para>
<note> <note>
<para> <para>
For <productname>Windows NT</productname>, For <productname>Windows NT</productname>,
...@@ -240,7 +241,9 @@ accomplished. Check ...@@ -240,7 +241,9 @@ accomplished. Check
for up to date information. You may also want to for up to date information. You may also want to
look for possible patches on the look for possible patches on the
<ulink url="http://postgresql.org">Postgres web site</ulink>. <ulink url="http://postgresql.org">Postgres web site</ulink>.
</para>
</note> </note>
</sect1>
<Sect1> <Sect1>
<Title>Unsupported Platforms</Title> <Title>Unsupported Platforms</Title>
...@@ -309,6 +312,7 @@ Others listed here do not provide sufficient library support for an attempt. ...@@ -309,6 +312,7 @@ Others listed here do not provide sufficient library support for an attempt.
</TBODY> </TBODY>
</TGROUP> </TGROUP>
</TABLE> </TABLE>
</para>
<Para> <Para>
Note that Windows ports of the frontend are apparently possible Note that Windows ports of the frontend are apparently possible
......
This diff is collapsed.
...@@ -26,6 +26,7 @@ To affect the paging behavior of your <Command>psql</Command> output, ...@@ -26,6 +26,7 @@ To affect the paging behavior of your <Command>psql</Command> output,
set or unset your PAGER environment variable. I always have to set mine set or unset your PAGER environment variable. I always have to set mine
before it will pause. And of course you have to do this before before it will pause. And of course you have to do this before
starting the program. starting the program.
</para>
<Para> <Para>
In csh/tcsh or other C shells: In csh/tcsh or other C shells:
...@@ -39,5 +40,6 @@ while in sh/bash or other Bourne shells: ...@@ -39,5 +40,6 @@ while in sh/bash or other Bourne shells:
<ProgramListing> <ProgramListing>
unset PAGER unset PAGER
</ProgramListing> </ProgramListing>
</para>
</sect1>
</Chapter> </Chapter>
...@@ -54,6 +54,7 @@ identifier</FirstTerm> (<Acronym>OID</Acronym>) ...@@ -54,6 +54,7 @@ identifier</FirstTerm> (<Acronym>OID</Acronym>)
single <FileName>postmaster</FileName> process constitutes an installation single <FileName>postmaster</FileName> process constitutes an installation
or site. or site.
</Para> </Para>
</sect1>
<Sect1> <Sect1>
<Title>Creating a New Class</Title> <Title>Creating a New Class</Title>
...@@ -71,12 +72,14 @@ CREATE TABLE weather ( ...@@ -71,12 +72,14 @@ CREATE TABLE weather (
date date date date
); );
</ProgramListing> </ProgramListing>
</para>
<Para> <Para>
Note that keywords are case-insensitive and identifiers Note that keywords are case-insensitive and identifiers
are usually case-insensitive. are usually case-insensitive.
<Acronym>Postgres</Acronym> allows <Acronym>SQL92</Acronym> <FirstTerm>delimited identifiers</FirstTerm> <Acronym>Postgres</Acronym> allows <Acronym>SQL92</Acronym> <FirstTerm>delimited identifiers</FirstTerm>
(identifiers surrounded by double-quotes) to include mixed-case and spaces, tabs, etc. (identifiers surrounded by double-quotes) to include mixed-case and spaces, tabs, etc.
</para>
<Para> <Para>
<ProductName>Postgres</ProductName> <Acronym>SQL</Acronym> supports the usual <ProductName>Postgres</ProductName> <Acronym>SQL</Acronym> supports the usual
...@@ -95,6 +98,7 @@ a rich set of geometric types. As we will ...@@ -95,6 +98,7 @@ a rich set of geometric types. As we will
classes have properties that are extensions of the classes have properties that are extensions of the
relational model. relational model.
</Para> </Para>
</sect1>
<Sect1> <Sect1>
<Title>Populating a Class with Instances</Title> <Title>Populating a Class with Instances</Title>
...@@ -107,6 +111,7 @@ a rich set of geometric types. As we will ...@@ -107,6 +111,7 @@ a rich set of geometric types. As we will
INSERT INTO weather INSERT INTO weather
VALUES ('San Francisco', 46, 50, 0.25, '11/27/1994') VALUES ('San Francisco', 46, 50, 0.25, '11/27/1994')
</ProgramListing> </ProgramListing>
</para>
<Para> <Para>
You can also use the <Command>copy</Command> command to perform load large You can also use the <Command>copy</Command> command to perform load large
...@@ -121,6 +126,8 @@ COPY INTO weather FROM '/home/user/weather.txt' ...@@ -121,6 +126,8 @@ COPY INTO weather FROM '/home/user/weather.txt'
where the path name for the source file must be available to the backend server where the path name for the source file must be available to the backend server
machine, not just the client. machine, not just the client.
</para>
</sect1>
<Sect1> <Sect1>
<Title>Querying a Class</Title> <Title>Querying a Class</Title>
...@@ -153,6 +160,7 @@ SELECT * FROM WEATHER; ...@@ -153,6 +160,7 @@ SELECT * FROM WEATHER;
<ProgramListing> <ProgramListing>
SELECT city, (temp_hi+temp_lo)/2 AS temp_avg, date FROM weather; SELECT city, (temp_hi+temp_lo)/2 AS temp_avg, date FROM weather;
</ProgramListing> </ProgramListing>
</para>
<Para> <Para>
Arbitrary Boolean operators Arbitrary Boolean operators
...@@ -183,6 +191,7 @@ SELECT DISTINCT city ...@@ -183,6 +191,7 @@ SELECT DISTINCT city
ORDER BY city; ORDER BY city;
</ProgramListing> </ProgramListing>
</Para> </Para>
</sect1>
<Sect1> <Sect1>
<Title>Redirecting SELECT Queries</Title> <Title>Redirecting SELECT Queries</Title>
...@@ -192,6 +201,7 @@ SELECT DISTINCT city ...@@ -192,6 +201,7 @@ SELECT DISTINCT city
<ProgramListing> <ProgramListing>
SELECT * INTO TABLE temp FROM weather; SELECT * INTO TABLE temp FROM weather;
</ProgramListing> </ProgramListing>
</para>
<Para> <Para>
This forms an implicit <Command>create</Command> command, creating a new This forms an implicit <Command>create</Command> command, creating a new
...@@ -200,6 +210,7 @@ SELECT * INTO TABLE temp FROM weather; ...@@ -200,6 +210,7 @@ SELECT * INTO TABLE temp FROM weather;
then, of course, perform any operations on the resulting then, of course, perform any operations on the resulting
class that we can perform on other classes. class that we can perform on other classes.
</Para> </Para>
</sect1>
<Sect1> <Sect1>
<Title>Joins Between Classes</Title> <Title>Joins Between Classes</Title>
...@@ -258,6 +269,7 @@ The semantics of such a join are ...@@ -258,6 +269,7 @@ The semantics of such a join are
the <Command>select distinct</Command> statement. the <Command>select distinct</Command> statement.
</Para> </Para>
</Note> </Note>
</para>
<Para> <Para>
In this case, both W1 and W2 are surrogates for an In this case, both W1 and W2 are surrogates for an
...@@ -267,6 +279,7 @@ The semantics of such a join are ...@@ -267,6 +279,7 @@ The semantics of such a join are
A query can contain an arbitrary number of A query can contain an arbitrary number of
class names and surrogates. class names and surrogates.
</Para> </Para>
</sect1>
<Sect1> <Sect1>
<Title>Updates</Title> <Title>Updates</Title>
...@@ -283,6 +296,7 @@ UPDATE weather ...@@ -283,6 +296,7 @@ UPDATE weather
WHERE date > '11/28/1994'; WHERE date > '11/28/1994';
</ProgramListing> </ProgramListing>
</Para> </Para>
</sect1>
<Sect1> <Sect1>
<Title>Deletions</Title> <Title>Deletions</Title>
...@@ -304,6 +318,7 @@ DELETE FROM classname; ...@@ -304,6 +318,7 @@ DELETE FROM classname;
empty. The system will not request confirmation before empty. The system will not request confirmation before
doing this. doing this.
</Para> </Para>
</sect1>
<Sect1> <Sect1>
<Title>Using Aggregate Functions</Title> <Title>Using Aggregate Functions</Title>
...@@ -344,5 +359,5 @@ SELECT city, max(temp_lo) ...@@ -344,5 +359,5 @@ SELECT city, max(temp_lo)
GROUP BY city; GROUP BY city;
</ProgramListing> </ProgramListing>
</Para> </Para>
</sect1>
</Chapter> </Chapter>
This diff is collapsed.
...@@ -12,6 +12,7 @@ ABORT ...@@ -12,6 +12,7 @@ ABORT
<REFPURPOSE> <REFPURPOSE>
Aborts the current transaction Aborts the current transaction
</REFPURPOSE> </REFPURPOSE>
</REFNAMEDIV>
<REFSYNOPSISDIV> <REFSYNOPSISDIV>
<REFSYNOPSISDIVINFO> <REFSYNOPSISDIVINFO>
<DATE>1998-09-27</DATE> <DATE>1998-09-27</DATE>
...@@ -29,6 +30,7 @@ Inputs ...@@ -29,6 +30,7 @@ Inputs
</TITLE> </TITLE>
<PARA> <PARA>
None. None.
</para>
</REFSECT2> </REFSECT2>
...@@ -49,7 +51,9 @@ Outputs ...@@ -49,7 +51,9 @@ Outputs
<LISTITEM> <LISTITEM>
<PARA> <PARA>
Message returned if successful. Message returned if successful.
</para>
</listitem>
</VARLISTENTRY>
<VARLISTENTRY> <VARLISTENTRY>
<TERM> <TERM>
NOTICE: UserAbortTransactionBlock and not in in-progress state NOTICE: UserAbortTransactionBlock and not in in-progress state
...@@ -58,10 +62,11 @@ ABORT ...@@ -58,10 +62,11 @@ ABORT
<LISTITEM> <LISTITEM>
<PARA> <PARA>
If there is not any transaction currently in progress. If there is not any transaction currently in progress.
</para>
</listitem>
</VARLISTENTRY> </VARLISTENTRY>
</VARIABLELIST> </VARIABLELIST>
</para>
</REFSECT2> </REFSECT2>
</REFSYNOPSISDIV> </REFSYNOPSISDIV>
...@@ -78,7 +83,7 @@ Description ...@@ -78,7 +83,7 @@ Description
This command is identical This command is identical
in behavior to the <acronym>SQL92</acronym> command <command>ROLLBACK</command>, in behavior to the <acronym>SQL92</acronym> command <command>ROLLBACK</command>,
and is present only for historical reasons. and is present only for historical reasons.
</para>
<REFSECT2 ID="R2-SQL-ABORT-3"> <REFSECT2 ID="R2-SQL-ABORT-3">
<REFSECT2INFO> <REFSECT2INFO>
<DATE>1998-09-27</DATE> <DATE>1998-09-27</DATE>
...@@ -89,7 +94,8 @@ Notes ...@@ -89,7 +94,8 @@ Notes
<para> <para>
Use the <command>COMMIT</command> statement to successfully Use the <command>COMMIT</command> statement to successfully
terminate a transaction. terminate a transaction.
</para>
</refsect2>
</REFSECT1> </REFSECT1>
<REFSECT1 ID="R1-SQL-ABORT-2"> <REFSECT1 ID="R1-SQL-ABORT-2">
...@@ -102,6 +108,7 @@ Usage ...@@ -102,6 +108,7 @@ Usage
-- --
ABORT WORK; ABORT WORK;
</ProgramListing> </ProgramListing>
</para>
</REFSECT1> </REFSECT1>
...@@ -109,7 +116,6 @@ ABORT WORK; ...@@ -109,7 +116,6 @@ ABORT WORK;
<TITLE> <TITLE>
Compatibility Compatibility
</TITLE> </TITLE>
<PARA>
<REFSECT2 ID="R2-SQL-ABORT-4"> <REFSECT2 ID="R2-SQL-ABORT-4">
<REFSECT2INFO> <REFSECT2INFO>
...@@ -123,5 +129,7 @@ This command is a <productname>Postgres</productname> extension present ...@@ -123,5 +129,7 @@ This command is a <productname>Postgres</productname> extension present
for historical reasons. <command>ROLLBACK</command> is the <acronym>SQL92</acronym> for historical reasons. <command>ROLLBACK</command> is the <acronym>SQL92</acronym>
equivalent command. equivalent command.
</PARA> </PARA>
</refsect2>
</refsect1>
</REFENTRY> </REFENTRY>
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
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