Update preface.

Use question marks rather than brackets to delimit optional elements in
Tcl synopses.

Fix stylesheet misfeature leading to excessively long cross-reference text
when linking to a different "part".

Remove <body> attributes -- CSS stylesheets should handle that.

Improve bibliography formatting.

Add fast-forward links for more convenient navigation.
This commit is contained in:
Peter Eisentraut 2003-09-08 23:02:28 +00:00
parent e54965c0f8
commit 6de93c0529
8 changed files with 360 additions and 483 deletions

View File

@ -1,182 +1,181 @@
<!--
$Header: /cvsroot/pgsql/doc/src/sgml/history.sgml,v 1.20 2003/01/19 00:13:28 momjian Exp $
$Header: /cvsroot/pgsql/doc/src/sgml/history.sgml,v 1.21 2003/09/08 23:02:28 petere Exp $
-->
<sect1 id="history">
<title>A Brief History of <productname>PostgreSQL</productname></title>
<indexterm zone="history">
<primary>history</primary>
<secondary>of PostgreSQL</secondary>
</indexterm>
<para>
The object-relational database management system now known as
<productname>PostgreSQL</productname> (and briefly called
<productname>Postgres95</productname>) is derived from the
<productname>POSTGRES</productname> package written at the University of
California at Berkeley. With over a decade of
development behind it, <productname>PostgreSQL</productname>
is the most advanced open-source database available anywhere,
offering multiversion concurrency control, supporting almost
all SQL constructs (including subselects, transactions, and
user-defined types and functions), and having a wide range of
language bindings available (including C, C++, Java, Perl, Tcl, and Python).
The object-relational database management system now known as
<productname>PostgreSQL</productname> is derived from the
<productname>POSTGRES</productname> package written at the
University of California at Berkeley. With over a decade of
development behind it, <productname>PostgreSQL</productname> is now
the most advanced open-source database available anywhere.
</para>
<sect2>
<sect2 id="history-berkeley">
<title>The Berkeley <productname>POSTGRES</productname> Project</title>
<indexterm zone="history-berkeley">
<primary>POSTGRES</primary>
</indexterm>
<para>
Implementation of the <productname>POSTGRES</productname>
<acronym>DBMS</acronym> began in 1986. The
initial concepts for the system were presented in
<xref linkend="STON86">
and the definition of the initial data model
appeared in
<xref linkend="ROWE87">.
The design of the rule system at
that time was described in
<xref linkend="STON87a">.
The rationale
and architecture of the storage manager were detailed in
<xref linkend="STON87b">.
The <productname>POSTGRES</productname> project, led by Professor
Michael Stonebraker, was sponsored by the Defense Advanced Research
Projects Agency (<acronym>DARPA</acronym>), the Army Research
Office (<acronym>ARO</acronym>), the National Science Foundation
(<acronym>NSF</acronym>), and ESL, Inc. The implementation of
<productname>POSTGRES</productname> began in 1986. The initial
concepts for the system were presented in <xref linkend="STON86">
and the definition of the initial data model appeared in <xref
linkend="ROWE87">. The design of the rule system at that time was
described in <xref linkend="STON87a">. The rationale and
architecture of the storage manager were detailed in <xref
linkend="STON87b">.
</para>
<para>
<productname>Postgres</productname> has undergone several major releases since
then. The first <quote>demoware</quote> system became operational
in 1987 and was shown at the 1988 <acronym>ACM-SIGMOD</acronym>
Conference. Version 1, described in
<xref linkend="STON90a">, was released
to a few external users in June 1989. In response to a
critique of the first rule system
(<xref linkend="STON89">),
the rule
system was redesigned
(<xref linkend="STON90b">)
and Version 2 was
released in June 1990 with the new rule system.
Version 3 appeared in 1991 and added support for multiple
storage managers, an improved query executor, and a
rewritten rule system. For the most part, subsequent
releases until <productname>Postgres95</productname> (see below)
focused on portability and reliability.
<productname>POSTGRES</productname> has undergone several major
releases since then. The first <quote>demoware</quote> system
became operational in 1987 and was shown at the 1988
<acronym>ACM-SIGMOD</acronym> Conference. Version 1, described in
<xref linkend="STON90a">, was released to a few external users in
June 1989. In response to a critique of the first rule system
(<xref linkend="STON89">), the rule system was redesigned (<xref
linkend="STON90b">) and Version 2 was released in June 1990 with
the new rule system. Version 3 appeared in 1991 and added support
for multiple storage managers, an improved query executor, and a
rewritten rule system. For the most part, subsequent releases
until <productname>Postgres95</productname> (see below) focused on
portability and reliability.
</para>
<para>
<productname>POSTGRES</productname> has been used
to implement many different
research and production applications. These include: a
financial data analysis system, a jet engine
performance monitoring package, an asteroid tracking
database, a medical information database, and several
geographic information systems.
<productname>POSTGRES</productname> has also been
used as an educational tool at several universities.
Finally,
Illustra Information Technologies (later merged into
<ulink url="http://www.informix.com/"><productname>Informix</productname></ulink>,
which is now owned by <ulink url="http://www.ibm.com/">IBM</ulink>.)
picked up
the code and commercialized it.
<productname>POSTGRES</productname> became the primary data manager
for the
<ulink url="http://meteora.ucsd.edu/s2k/s2k_home.html">Sequoia 2000</ulink>
scientific computing project in late 1992.
<productname>POSTGRES</productname> has been used to implement many
different research and production applications. These include: a
financial data analysis system, a jet engine performance monitoring
package, an asteroid tracking database, a medical information
database, and several geographic information systems.
<productname>POSTGRES</productname> has also been used as an
educational tool at several universities. Finally, Illustra
Information Technologies (later merged into <ulink
url="http://www.informix.com/"><productname>Informix</productname></ulink>,
which is now owned by <ulink
url="http://www.ibm.com/">IBM</ulink>.) picked up the code and
commercialized it. In late 1992,
<productname>POSTGRES</productname> became the primary data manager
for the <ulink
url="http://meteora.ucsd.edu/s2k/s2k_home.html">Sequoia
2000</ulink> scientific computing project.
</para>
<para>
The size of the external user community
nearly doubled during 1993. It became increasingly
obvious that maintenance of the prototype code and
support was taking up large amounts of time that should
have been devoted to database research. In an effort
to reduce this support burden, the Berkeley
<productname>POSTGRES</productname> project officially
ended with Version 4.2.
The size of the external user community nearly doubled during 1993.
It became increasingly obvious that maintenance of the prototype
code and support was taking up large amounts of time that should
have been devoted to database research. In an effort to reduce
this support burden, the Berkeley
<productname>POSTGRES</productname> project officially ended with
Version 4.2.
</para>
</sect2>
<sect2>
<sect2 id="history-postgres95">
<title><productname>Postgres95</productname></title>
<indexterm zone="history-postgres95">
<primary>Postgres95</primary>
</indexterm>
<para>
In 1994, Andrew Yu and Jolly Chen
added a SQL language interpreter to <productname>POSTGRES</productname>.
In 1994, Andrew Yu and Jolly Chen added a SQL language interpreter
to <productname>POSTGRES</productname>. Under a new name,
<productname>Postgres95</productname> was subsequently released to
the Web to find its own way in the world as an
open-source descendant of the original <productname>POSTGRES</productname>
the web to find its own way in the world as an open-source
descendant of the original <productname>POSTGRES</productname>
Berkeley code.
</para>
<para>
<productname>Postgres95</productname> code was completely
ANSI C and trimmed in size by 25%. Many
internal changes improved performance and maintainability.
<productname>Postgres95</productname> release 1.0.x ran about 30-50%
faster on the Wisconsin Benchmark compared to
<productname>POSTGRES</productname>, Version 4.2.
Apart from bug fixes, the following were the major enhancements:
<productname>Postgres95</productname> code was completely ANSI C
and trimmed in size by 25%. Many internal changes improved
performance and
maintainability. <productname>Postgres95</productname> release
1.0.x ran about 30-50% faster on the Wisconsin Benchmark compared
to <productname>POSTGRES</productname>, Version 4.2. Apart from
bug fixes, the following were the major enhancements:
<itemizedlist>
<listitem>
<para>
The query language PostQUEL was replaced with
<acronym>SQL</acronym> (implemented in the server).
Subqueries were not supported until
<productname>PostgreSQL</productname> (see below), but they
could be imitated in <productname>Postgres95</productname> with user-defined
<acronym>SQL</acronym> functions. Aggregates were
re-implemented. Support for the GROUP BY query clause was also added.
The <filename>libpq</filename> interface remained
available for <acronym>C</acronym>
programs.
<acronym>SQL</acronym> (implemented in the server). Subqueries
were not supported until <productname>PostgreSQL</productname>
(see below), but they could be imitated in
<productname>Postgres95</productname> with user-defined
<acronym>SQL</acronym> functions. Aggregate functions were
re-implemented. Support for the <literal>GROUP BY</literal>
query clause was also added.
</para>
</listitem>
<listitem>
<para>
In addition to the monitor program, a new program
(<application>psql</application>) was provided for interactive SQL queries
using <acronym>GNU</acronym> <application>Readline</application>.
(<application>psql</application>) was provided for interactive
SQL queries, which used <acronym>GNU</acronym>
<application>Readline</application>.
</para>
</listitem>
<listitem>
<para>
A new front-end library, <filename>libpgtcl</filename>,
supported <acronym>Tcl</acronym>-based clients. A sample shell,
<command>pgtclsh</command>, provided new Tcl commands to interface
<application>Tcl</application>
programs with the <productname>Postgres95</productname> backend.
A new front-end library, <filename>libpgtcl</filename>,
supported <acronym>Tcl</acronym>-based clients. A sample shell,
<command>pgtclsh</command>, provided new Tcl commands to
interface <application>Tcl</application> programs with the
<productname>Postgres95</productname> server.
</para>
</listitem>
<listitem>
<para>
The large-object interface was overhauled. The Inversion large objects were
the only mechanism for storing large objects.
(The Inversion file system was removed.)
The large-object interface was overhauled. The inversion large
objects were the only mechanism for storing large objects. (The
inversion file system was removed.)
</para>
</listitem>
<listitem>
<para>
The instance-level rule system was removed.
Rules were still available as rewrite rules.
The instance-level rule system was removed. Rules were still
available as rewrite rules.
</para>
</listitem>
<listitem>
<para>
A short tutorial introducing regular <acronym>SQL</acronym> features as
well as those of <productname>Postgres95</productname> was
distributed with the source code
A short tutorial introducing regular <acronym>SQL</acronym>
features as well as those of
<productname>Postgres95</productname> was distributed with the
source code
</para>
</listitem>
<listitem>
<para>
<acronym>GNU</acronym> make (instead of <acronym>BSD</acronym> make) was used
for the build. Also, <productname>Postgres95</productname> could be
compiled with an unpatched <productname>GCC</productname>
(data alignment of doubles was fixed).
<acronym>GNU</acronym> make (instead of <acronym>BSD</acronym>
make) was used for the build. Also,
<productname>Postgres95</productname> could be compiled with an
unpatched <productname>GCC</productname> (data alignment of
doubles was fixed).
</para>
</listitem>
</itemizedlist>
@ -187,83 +186,28 @@ $Header: /cvsroot/pgsql/doc/src/sgml/history.sgml,v 1.20 2003/01/19 00:13:28 mom
<title><productname>PostgreSQL</productname></title>
<para>
By 1996, it became clear that the name <quote>Postgres95</quote> would
not stand the test of time. We chose a new name,
By 1996, it became clear that the name <quote>Postgres95</quote>
would not stand the test of time. We chose a new name,
<productname>PostgreSQL</productname>, to reflect the relationship
between the original <productname>POSTGRES</productname> and the more
recent versions with <acronym>SQL</acronym> capability. At the same
time, we set the version numbering to start at 6.0, putting the
numbers back into the sequence originally begun by the Berkeley
<productname>POSTGRES</productname> project.
between the original <productname>POSTGRES</productname> and the
more recent versions with <acronym>SQL</acronym> capability. At
the same time, we set the version numbering to start at 6.0,
putting the numbers back into the sequence originally begun by the
Berkeley <productname>POSTGRES</productname> project.
</para>
<para>
The emphasis during development of <productname>Postgres95</productname>
was on identifying and understanding existing problems in the backend code.
With <productname>PostgreSQL</productname>,
the emphasis has shifted to augmenting features and capabilities, although
work continues in all areas.
The emphasis during development of
<productname>Postgres95</productname> was on identifying and
understanding existing problems in the server code. With
<productname>PostgreSQL</productname>, the emphasis has shifted to
augmenting features and capabilities, although work continues in
all areas.
</para>
<para>
Major enhancements in <productname>PostgreSQL</productname> include:
Details about what has happened in PostgreSQL since then can be
found in <xref linkend="release">.
</para>
<itemizedlist>
<listitem>
<para>
Table-level locking has been replaced by multiversion concurrency control,
which allows readers to continue reading consistent data during writer activity
and enables hot backups from <application>pg_dump</> while the database stays available for
queries.
</para>
</listitem>
<listitem>
<para>
Important backend features, including subselects, defaults,
constraints, and triggers, have been implemented.
</para>
</listitem>
<listitem>
<para>
Additional <acronym>SQL92</acronym>-compliant language features have been added,
including primary keys, quoted identifiers, literal string type coercion,
type casting, and binary and hexadecimal integer input.
</para>
</listitem>
<listitem>
<para>
Built-in types have been improved, including new wide-range date/time types
and additional geometric type support.
</para>
</listitem>
<listitem>
<para>
Overall backend code speed has been increased by approximately 20-40%,
and backend start-up time has decreased by 80% since version 6.0 was released.
</para>
</listitem>
</itemizedlist>
</sect2>
</sect1>
<!-- Keep this comment at the end of the file
Local variables:
mode:sgml
sgml-omittag:nil
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
sgml-parent-document:nil
sgml-default-dtd-file:"./reference.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:("/usr/lib/sgml/catalog")
sgml-local-ecat-files:nil
End:
-->

View File

@ -1,104 +1,21 @@
<!--
$Header: /cvsroot/pgsql/doc/src/sgml/info.sgml,v 1.18 2003/01/19 00:13:28 momjian Exp $
$Header: /cvsroot/pgsql/doc/src/sgml/info.sgml,v 1.19 2003/09/08 23:02:28 petere Exp $
-->
<sect1 id="resources">
<title>Overview of Documentation Resources</title>
<title>Further Information</title>
<para>
The <productname>PostgreSQL</> documentation is organized into
several books:
Besides the documentation, that is, this book, there are other
resources about <productname>PostgreSQL</productname>:
<variablelist>
<varlistentry>
<term>&cite-tutorial;</term>
<listitem>
<para>
An informal introduction for new users.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>&cite-user;</term>
<listitem>
<para>
Documents the <acronym>SQL</acronym> query language environment,
including data types and functions, as well as user-level
performance tuning. Every <productname>PostgreSQL</> user
should read this.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>&cite-admin;</term>
<listitem>
<para>
Installation and server management information. Everyone who
runs a <productname>PostgreSQL</> server, either for personal
use or for other users, needs to read this.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>&cite-programmer;</term>
<listitem>
<para>
Advanced information for application programmers. Topics include
type and function extensibility, library interfaces, and
application design issues.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>&cite-reference;</term>
<listitem>
<para>
Reference pages for <acronym>SQL</acronym> command syntax, and
client and server programs. This book is auxiliary to the
User's, Administrator's, and Programmer's Guides.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>&cite-developer;</term>
<listitem>
<para>
Information for <productname>PostgreSQL</productname>
developers. This is intended for those who are contributing to
the <productname>PostgreSQL</productname> project; application
development information appears in the &cite-programmer;.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
<para>
In addition to this manual set, there are other resources to help you with
<productname>PostgreSQL</productname> installation and use:
<variablelist>
<varlistentry>
<term>man pages</term>
<listitem>
<para>
The &cite-reference;'s pages in the traditional Unix man
format. There is no difference in content.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>FAQs</term>
<listitem>
<para>
Frequently Asked Questions (FAQ) lists document both general issues
and some platform-specific issues.
The FAQ list <indexterm><primary>FAQ-Liste</></> contains
continuously updated answers to frequently asked questions.
</para>
</listitem>
</varlistentry>
@ -107,7 +24,8 @@ $Header: /cvsroot/pgsql/doc/src/sgml/info.sgml,v 1.18 2003/01/19 00:13:28 momjia
<term>READMEs</term>
<listitem>
<para>
README files are available for some contributed packages.
<filename>README</filename> files are available for some
contributed packages.
</para>
</listitem>
</varlistentry>
@ -118,8 +36,8 @@ $Header: /cvsroot/pgsql/doc/src/sgml/info.sgml,v 1.18 2003/01/19 00:13:28 momjia
<para>
The <ulink
url="http://www.postgresql.org"><productname>PostgreSQL</productname>
web site</ulink> carries details on the latest release, upcoming
features, and other information to make your work or play with
web site</ulink> carries details on the latest release and other
information to make your work or play with
<productname>PostgreSQL</productname> more productive.
</para>
</listitem>
@ -131,10 +49,8 @@ $Header: /cvsroot/pgsql/doc/src/sgml/info.sgml,v 1.18 2003/01/19 00:13:28 momjia
<para>
The mailing lists are a good place to have your questions
answered, to share experiences with other users, and to contact
the developers. Consult the <ulink
url="http://www.postgresql.org/users-lounge/">User's
Lounge</ulink> section of the <productname>PostgreSQL</>
web site for details.
the developers. Consult the <productname>PostgreSQL</> web site
for details.
</para>
</listitem>
</varlistentry>
@ -143,41 +59,18 @@ $Header: /cvsroot/pgsql/doc/src/sgml/info.sgml,v 1.18 2003/01/19 00:13:28 momjia
<term>Yourself!</term>
<listitem>
<para>
<productname>PostgreSQL</productname> is an open-source effort.
<productname>PostgreSQL</productname> is an open-source project.
As such, it depends on the user community for ongoing support.
As you begin to use <productname>PostgreSQL</productname>, you
will rely on others for help, either through the documentation
or through the mailing lists. Consider contributing your
knowledge back. If you learn something which is not in the
documentation, write it up and contribute it. If you add
features to the code, contribute them.
</para>
<para>
Even those without a lot of experience can provide corrections
and minor changes in the documentation, and that is a good way
to start. The <email>pgsql-docs@postgresql.org</email> mailing
list is the place to get going.
knowledge back. Read the mailing lists and answer questions. If
you learn something which is not in the documentation, write it
up and contribute it. If you add features to the code,
contribute them.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</sect1>
<!-- Keep this comment at the end of the file
Local variables:
mode:sgml
sgml-omittag:nil
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
sgml-parent-document:nil
sgml-default-dtd-file:"./reference.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:("/usr/lib/sgml/catalog")
sgml-local-ecat-files:nil
End:
-->

View File

@ -1,110 +1,151 @@
<!--
$Header: /cvsroot/pgsql/doc/src/sgml/intro.sgml,v 1.20 2002/10/24 17:48:54 petere Exp $
$Header: /cvsroot/pgsql/doc/src/sgml/intro.sgml,v 1.21 2003/09/08 23:02:28 petere Exp $
-->
<sect1 id="intro-whatis">
<title> What is <productname>PostgreSQL</productname>?</title>
<preface id="preface">
<title>Preface</title>
<para>
<productname>PostgreSQL</productname> is an object-relational
database management system (<acronym>ORDBMS</acronym>) based on
<ulink url="http://s2k-ftp.CS.Berkeley.EDU:8000/postgres/postgres.html">
<productname>POSTGRES, Version 4.2</productname></ulink>,
developed at the University of California at Berkeley Computer
Science Department. The <productname>POSTGRES</productname>
project, led by Professor Michael Stonebraker, was sponsored by
the Defense Advanced Research Projects Agency
(<acronym>DARPA</acronym>), the Army Research Office
(<acronym>ARO</acronym>), the National Science Foundation
(<acronym>NSF</acronym>), and ESL, Inc.
</para>
<para>
This book is the official documentation of PostgreSQL. It is being
written by the PostgreSQL developers and other volunteers in
parallel to the development of the PostgreSQL software. It
describes all the functionality that the current version of
PostgreSQL officially supports.
</para>
<para>
<productname>PostgreSQL</productname> is an open-source descendant of
this original Berkeley code. It provides SQL92/SQL99 language support
and other modern features.
</para>
<para>
To make the large amount of information about PostgreSQL manageable,
this book has been organized in several parts. Each part is
targeted at a different class of users, or at users in different
stages of their PostgreSQL experience:
<para>
<productname>POSTGRES</productname> pioneered many of the
object-relational concepts now becoming available in some commercial
databases.
Traditional relational database management systems
(<acronym>RDBMS</acronym>) support a data model consisting of a collection
of named relations, containing attributes of a specific
type. In current commercial systems, possible types
include floating point numbers, integers, character
strings, money, and dates. It is commonly recognized
that this model is inadequate for future data-processing applications.
The relational model successfully replaced previous
models in part because of its <quote>Spartan simplicity</quote>.
However, this simplicity makes the
implementation of certain applications very difficult.
<productname>PostgreSQL</productname> offers substantial additional
power by incorporating the following additional
concepts in such a way that users can easily
extend the system:
<itemizedlist>
<listitem>
<para>
<xref linkend="tutorial"> is an informal introduction for new users.
</para>
</listitem>
<itemizedlist spacing="compact">
<listitem>
<simpara>inheritance</>
</listitem>
<listitem>
<simpara>data types</>
</listitem>
<listitem>
<simpara>functions</simpara>
</listitem>
</itemizedlist>
</para>
<listitem>
<para>
<xref linkend="sql"> documents the <acronym>SQL</acronym> query
language environment, including data types and functions, as well
as user-level performance tuning. Every
<productname>PostgreSQL</> user should read this.
</para>
</listitem>
<para>
Other features provide additional power and flexibility:
<listitem>
<para>
<xref linkend="admin"> describes the installation and
administration of the server. Everyone that runs a PostgreSQL
server, be it for private use or for others, should read this
part.
</para>
</listitem>
<itemizedlist spacing="compact">
<listitem>
<simpara>constraints</simpara>
</listitem>
<listitem>
<simpara>triggers</simpara>
</listitem>
<listitem>
<simpara>rules</simpara>
</listitem>
<listitem>
<simpara>transactional integrity</simpara>
</listitem>
</itemizedlist>
</para>
<listitem>
<para>
<xref linkend="client-interfaces"> describes the programming
interfaces for PostgreSQL client programs.
</para>
</listitem>
<para>
These features put <productname>PostgreSQL</productname> into the
category of databases referred to as
<firstterm>object-relational</firstterm>. Note that this is distinct
from those referred to as <firstterm>object-oriented</firstterm>,
which in general are not as well suited to supporting
traditional relational database languages.
So, although <productname>PostgreSQL</productname> has some
object-oriented features, it is firmly in the relational database
world. In fact, some commercial databases have recently
incorporated features pioneered by <productname>PostgreSQL</productname>.
</para>
</sect1>
<listitem>
<para>
<xref linkend="server-programming"> contains information for
advanced users about the extensibility capabilities of the
server. Topics are, for instance, user-defined data types and
functions.
</para>
</listitem>
<!-- Keep this comment at the end of the file
Local variables:
mode:sgml
sgml-omittag:nil
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
sgml-parent-document:nil
sgml-default-dtd-file:"./reference.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:("/usr/lib/sgml/catalog")
sgml-local-ecat-files:nil
End:
-->
<listitem>
<para>
<xref linkend="reference"> contains information about the syntax
of SQL commands, client and server programs. This part supports
the other parts with structured information sorted by command or
program.
</para>
</listitem>
</itemizedlist>
</para>
<sect1 id="intro-whatis">
<title> What is <productname>PostgreSQL</productname>?</title>
<para>
<productname>PostgreSQL</productname> is an object-relational
database management system (<acronym>ORDBMS</acronym>) based on
<ulink url="http://s2k-ftp.CS.Berkeley.EDU:8000/postgres/postgres.html">
<productname>POSTGRES, Version 4.2</productname></ulink>, developed
at the University of California at Berkeley Computer Science
Department. POSTGRES pioneered many concepts that only became
available in some commercial database systems much later.
</para>
<para>
<productname>PostgreSQL</productname> is an open-source descendant
of this original Berkeley code. It supports SQL92 and SQL99 and
offers many modern features:
<itemizedlist spacing="compact">
<listitem>
<simpara>complex queries</simpara>
</listitem>
<listitem>
<simpara>foreign keys</simpara>
</listitem>
<listitem>
<simpara>triggers</simpara>
</listitem>
<listitem>
<simpara>views</simpara>
</listitem>
<listitem>
<simpara>transactional integrity</simpara>
</listitem>
<listitem>
<simpara>multiversion concurrency control</simpara>
</listitem>
</itemizedlist>
Also, PostgreSQL can be extended by the user in many ways, for
example by adding new
<itemizedlist spacing="compact">
<listitem>
<simpara>data types</simpara>
</listitem>
<listitem>
<simpara>functions</simpara>
</listitem>
<listitem>
<simpara>operators</simpara>
</listitem>
<listitem>
<simpara>aggregate functions</simpara>
</listitem>
<listitem>
<simpara>index methods</simpara>
</listitem>
<listitem>
<simpara>procedural languages</simpara>
</listitem>
</itemizedlist>
</para>
<para>
And because of the liberal license, PostgreSQL can be used,
modified, and distributed by everyone free of charge for any
purpose, be it private, commercial, or academic.
</para>
</sect1>
&history;
&notation;
&info;
&problems;
</preface>

View File

@ -201,7 +201,7 @@ load libpgtcl[info sharedlibextension]
<refsynopsisdiv>
<synopsis>
pg_connect -conninfo <parameter>connectOptions</parameter>
pg_connect <parameter>dbName</parameter> <optional>-host <parameter>hostName</parameter></optional> <optional>-port <parameter>portNumber</parameter></optional> <optional>-tty <parameter>tty</parameter</optional> <optional>-options <parameter>serverOptions</parameter></optional>
pg_connect <parameter>dbName</parameter> <optional role="tcl">-host <parameter>hostName</parameter></optional> <optional role="tcl">-port <parameter>portNumber</parameter></optional> <optional role="tcl">-tty <parameter>tty</parameter</optional> <optional role="tcl">-options <parameter>serverOptions</parameter></optional>
</synopsis>
</refsynopsisdiv>
@ -612,7 +612,7 @@ pg_result <parameter>resultHandle</parameter> <parameter>resultOption</parameter
</varlistentry>
<varlistentry>
<term><option>-assignbyidx <parameter>arrayName</> <optional><parameter>appendstr</></optional></option></term>
<term><option>-assignbyidx <parameter>arrayName</> <optional role="tcl"><parameter>appendstr</></optional></option></term>
<listitem>
<para>
Assign the results to an array using the values of the
@ -839,7 +839,7 @@ pg_select $pgconn "SELECT * FROM table1;" array {
<refsynopsisdiv>
<synopsis>
pg_execute <optional>-array <parameter>arrayVar</parameter></optional> <optional>-oid <parameter>oidVar</parameter></optional> <parameter>conn</parameter> <parameter>commandString</parameter> <optional><parameter>procedure</parameter></optional>
pg_execute <optional role="tcl">-array <parameter>arrayVar</parameter></optional> <optional role="tcl">-oid <parameter>oidVar</parameter></optional> <parameter>conn</parameter> <parameter>commandString</parameter> <optional role="tcl"><parameter>procedure</parameter></optional>
</synopsis>
</refsynopsisdiv>
@ -1020,7 +1020,7 @@ pg_execute $pgconn "SELECT max(value) AS max, min(value) AS min FROM mytable;"
<refsynopsisdiv>
<synopsis>
pg_listen <parameter>conn</parameter> <parameter>notifyName</parameter> <optional><parameter>callbackCommand</parameter></optional>
pg_listen <parameter>conn</parameter> <parameter>notifyName</parameter> <optional role="tcl"><parameter>callbackCommand</parameter></optional>
</synopsis>
</refsynopsisdiv>
@ -1120,7 +1120,7 @@ pg_listen <parameter>conn</parameter> <parameter>notifyName</parameter> <optiona
<refsynopsisdiv>
<synopsis>
pg_on_connection_loss <parameter>conn</parameter> <optional><parameter>callbackCommand</parameter></optional>
pg_on_connection_loss <parameter>conn</parameter> <optional role="tcl"><parameter>callbackCommand</parameter></optional>
</synopsis>
</refsynopsisdiv>

View File

@ -1,9 +1,40 @@
<!--
$Header: /cvsroot/pgsql/doc/src/sgml/notation.sgml,v 1.22 2003/03/25 16:15:37 petere Exp $
$Header: /cvsroot/pgsql/doc/src/sgml/notation.sgml,v 1.23 2003/09/08 23:02:28 petere Exp $
-->
<sect1 id="notation">
<title>Terminology and Notation</title>
<title>Conventions</title>
<para>
This book uses the following typographical conventions to mark
certain portions of test: new terms, foreign phrases, and other
important passages are emphasized in <emphasis>italics</>.
Everything that represents input or output of the computer, in
particular commands, program code, and screen output, is shown in a
monospaced front (<literal>example</literal>). Within such
passages, italics (<replaceable>example</replaceable>) indicate,
that you must insert an actual value instead of the placeholder. On
occasion, parts of program code are emphasized in bold face
(<emphasis role="bold"><literal>example</></>), if they have been
added or changed since the preceding example.
</para>
<para>
The following conventions are used in the synopsis of a command:
brackets (<literal>[</literal> and <literal>]</literal>) indicate
optional parts. (In the synopsis of a Tcl command, question marks
(<literal>?</>) are used instead, as is usual in Tcl.) Braces
(<literal>{</literal> and <literal>}</literal>) and vertical lines
(<literal>|</literal>) indicate that you must choose one
alternative. Dots (<literal>...</>) mean that the preceding element
can be repeated.
</para>
<para>
Where it enhances the clarity, SQL commands are preceded by the
prompt <literal>=&gt;</>, and shell commands are preceded by the
prompt <literal>$</>. Normally, prompts are not shown, though.
</para>
<para>
An <firstterm>administrator</firstterm> is generally a person who is
@ -13,58 +44,4 @@ $Header: /cvsroot/pgsql/doc/src/sgml/notation.sgml,v 1.22 2003/03/25 16:15:37 pe
be interpreted too narrowly; this documentation set does not have fixed
presumptions about system administration procedures.
</para>
<para>
We use <filename>/usr/local/pgsql/</filename> as the root
directory of the installation and <filename>/usr/local/pgsql/data</filename>
as the directory with the database files. These directories may vary
on your site, details can be derived in <xref linkend="installation">.
</para>
<para>
In a command synopsis, brackets
(<literal>[</literal> and <literal>]</literal>) indicate an optional phrase or keyword.
Anything in braces
(<literal>{</literal> and <literal>}</literal>) and containing vertical bars
(<literal>|</literal>)
indicates that you must choose one alternative.
</para>
<para>
Examples will show commands executed from various accounts and programs.
Commands executed from a Unix shell may be preceded with a dollar sign
(<quote><literal>$</literal></quote>). Commands executed from particular user
accounts such as <systemitem>root</> or <systemitem>postgres</> are specially flagged and explained.
<acronym>SQL</acronym> commands may be preceded with
<quote><literal>=&gt;</literal></quote>
or will have no leading prompt, depending on the context.
</para>
<note>
<para>
The notation for
flagging commands is not universally consistent throughout the
documentation set.
Please report problems to the documentation mailing list
<email>pgsql-docs@postgresql.org</email>.
</para>
</note>
</sect1>
<!-- Keep this comment at the end of the file
Local variables:
mode:sgml
sgml-omittag:nil
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
sgml-parent-document:nil
sgml-default-dtd-file:"./reference.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:("/usr/lib/sgml/catalog")
sgml-local-ecat-files:nil
End:
-->

View File

@ -1,5 +1,5 @@
<!--
$Header: /cvsroot/pgsql/doc/src/sgml/pltcl.sgml,v 2.25 2003/08/31 17:32:19 petere Exp $
$Header: /cvsroot/pgsql/doc/src/sgml/pltcl.sgml,v 2.26 2003/09/08 23:02:28 petere Exp $
-->
<chapter id="pltcl">
@ -235,7 +235,7 @@ CREATE FUNCTION overpaid(employee) RETURNS boolean AS '
<variablelist>
<varlistentry>
<term><function>spi_exec</function> <literal>?-count <replaceable>n</replaceable>? ?-array <replaceable>name</replaceable>? <replaceable>command</replaceable> ?<replaceable>loop-body</replaceable>?</literal></term>
<term><literal><function>spi_exec</function> <optional role="tcl">-count <replaceable>n</replaceable></optional> <optional role="tcl">-array <replaceable>name</replaceable></optional> <replaceable>command</replaceable> <optional role="tcl"><replaceable>loop-body</replaceable></optional></literal></term>
<listitem>
<para>
Executes an SQL command given as a string. An error in the command
@ -329,7 +329,7 @@ spi_exec -array C "SELECT * FROM pg_class" {
</varlistentry>
<varlistentry>
<term><function>spi_execp</> <literal>?-count <replaceable>n</replaceable>? ?-array <replaceable>name</replaceable>? ?-nulls <replaceable>string</replaceable>? <replaceable>queryid</replaceable> ?<replaceable>value-list</replaceable>? ?<replaceable>loop-body</replaceable>?</literal></term>
<term><literal><function>spi_execp</> <optional role="tcl">-count <replaceable>n</replaceable></optional> <optional role="tcl">-array <replaceable>name</replaceable></optional> <optional role="tcl">-nulls <replaceable>string</replaceable></optional> <replaceable>queryid</replaceable> <optional role="tcl"><replaceable>value-list</replaceable></optional> <optional role="tcl"><replaceable>loop-body</replaceable></optional></literal></term>
<listitem>
<para>
Executes a query previously prepared with <function>spi_prepare</>.

View File

@ -1,5 +1,5 @@
<!--
$Header: /cvsroot/pgsql/doc/src/sgml/postgres.sgml,v 1.54 2003/09/01 23:01:49 petere Exp $
$Header: /cvsroot/pgsql/doc/src/sgml/postgres.sgml,v 1.55 2003/09/08 23:02:28 petere Exp $
-->
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook V3.1//EN" [
@ -21,15 +21,7 @@ $Header: /cvsroot/pgsql/doc/src/sgml/postgres.sgml,v 1.54 2003/09/01 23:01:49 pe
&legal;
</bookinfo>
<preface id="preface">
<title>Preface</title>
&intro;
&history;
&notation;
&problems;
</preface>
&intro;
<part id="tutorial">
<title>Tutorial</title>

View File

@ -1,4 +1,4 @@
<!-- $Header: /cvsroot/pgsql/doc/src/sgml/stylesheet.dsl,v 1.23 2003/03/25 16:15:38 petere Exp $ -->
<!-- $Header: /cvsroot/pgsql/doc/src/sgml/stylesheet.dsl,v 1.24 2003/09/08 23:02:28 petere Exp $ -->
<!DOCTYPE style-sheet PUBLIC "-//James Clark//DTD DSSSL Style Sheet//EN" [
<!-- must turn on one of these with -i on the jade command line -->
@ -62,6 +62,38 @@
(element type ($mono-seq$))
(element (programlisting emphasis) ($bold-seq$)) ;; to highlight sections of code
;; Special support for Tcl synopses
(element optional
(if (equal? (attribute-string (normalize "role")) "tcl")
(make sequence
(literal "?")
($charseq$)
(literal "?"))
(make sequence
(literal %arg-choice-opt-open-str%)
($charseq$)
(literal %arg-choice-opt-close-str%))))
;; Avoid excessive cross-reference labels
(define (auto-xref-indirect? target ancestor)
(cond
; ;; Always add indirect references to another book
; ((member (gi ancestor) (book-element-list))
; #t)
;; Add indirect references to the section or component a block
;; is in iff chapters aren't autolabelled. (Otherwise "Figure 1-3"
;; is sufficient)
((and (member (gi target) (block-element-list))
(not %chapter-autolabel%))
#t)
;; Add indirect references to the component a section is in if
;; the sections are not autolabelled
((and (member (gi target) (section-element-list))
(member (gi ancestor) (component-element-list))
(not %section-autolabel%))
#t)
(else #f)))
;; Bibliography things
@ -110,11 +142,6 @@
(element issn
(make sequence
(literal "ISSN ")
(process-children)))
(element pagenums
(make sequence
(literal "p. ")
(process-children))))
@ -137,6 +164,7 @@
<![ %output-html; [
(define %section-autolabel% #t)
(define %label-preface-sections% #f)
(define %generate-legalnotice-link% #t)
(define %html-ext% ".html")
(define %root-filename% "index")
@ -144,6 +172,8 @@
(define %use-id-as-filename% #t)
(define %stylesheet% "stylesheet.css")
(define %graphic-default-extension% "gif")
(define %gentext-nav-use-ff% #t)
(define %body-attr% '())
;; Returns the depth of auto TOC that should be made at the nd-level
(define (toc-depth nd)