Commit 6de93c05 authored by Peter Eisentraut's avatar Peter Eisentraut

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.
parent e54965c0
<!-- <!--
$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"> <sect1 id="history">
<title>A Brief History of <productname>PostgreSQL</productname></title> <title>A Brief History of <productname>PostgreSQL</productname></title>
<indexterm zone="history">
<primary>history</primary>
<secondary>of PostgreSQL</secondary>
</indexterm>
<para> <para>
The object-relational database management system now known as The object-relational database management system now known as
<productname>PostgreSQL</productname> (and briefly called <productname>PostgreSQL</productname> is derived from the
<productname>Postgres95</productname>) is derived from the <productname>POSTGRES</productname> package written at the
<productname>POSTGRES</productname> package written at the University of University of California at Berkeley. With over a decade of
California at Berkeley. With over a decade of development behind it, <productname>PostgreSQL</productname> is now
development behind it, <productname>PostgreSQL</productname> the most advanced open-source database available anywhere.
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).
</para> </para>
<sect2> <sect2 id="history-berkeley">
<title>The Berkeley <productname>POSTGRES</productname> Project</title> <title>The Berkeley <productname>POSTGRES</productname> Project</title>
<indexterm zone="history-berkeley">
<primary>POSTGRES</primary>
</indexterm>
<para> <para>
Implementation of the <productname>POSTGRES</productname> The <productname>POSTGRES</productname> project, led by Professor
<acronym>DBMS</acronym> began in 1986. The Michael Stonebraker, was sponsored by the Defense Advanced Research
initial concepts for the system were presented in Projects Agency (<acronym>DARPA</acronym>), the Army Research
<xref linkend="STON86"> Office (<acronym>ARO</acronym>), the National Science Foundation
and the definition of the initial data model (<acronym>NSF</acronym>), and ESL, Inc. The implementation of
appeared in <productname>POSTGRES</productname> began in 1986. The initial
<xref linkend="ROWE87">. concepts for the system were presented in <xref linkend="STON86">
The design of the rule system at and the definition of the initial data model appeared in <xref
that time was described in linkend="ROWE87">. The design of the rule system at that time was
<xref linkend="STON87a">. described in <xref linkend="STON87a">. The rationale and
The rationale architecture of the storage manager were detailed in <xref
and architecture of the storage manager were detailed in linkend="STON87b">.
<xref linkend="STON87b">.
</para> </para>
<para> <para>
<productname>Postgres</productname> has undergone several major releases since <productname>POSTGRES</productname> has undergone several major
then. The first <quote>demoware</quote> system became operational releases since then. The first <quote>demoware</quote> system
in 1987 and was shown at the 1988 <acronym>ACM-SIGMOD</acronym> became operational in 1987 and was shown at the 1988
Conference. Version 1, described in <acronym>ACM-SIGMOD</acronym> Conference. Version 1, described in
<xref linkend="STON90a">, was released <xref linkend="STON90a">, was released to a few external users in
to a few external users in June 1989. In response to a June 1989. In response to a critique of the first rule system
critique of the first rule system (<xref linkend="STON89">), the rule system was redesigned (<xref
(<xref linkend="STON89">), linkend="STON90b">) and Version 2 was released in June 1990 with
the rule the new rule system. Version 3 appeared in 1991 and added support
system was redesigned for multiple storage managers, an improved query executor, and a
(<xref linkend="STON90b">) rewritten rule system. For the most part, subsequent releases
and Version 2 was until <productname>Postgres95</productname> (see below) focused on
released in June 1990 with the new rule system. portability and reliability.
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>
<para> <para>
<productname>POSTGRES</productname> has been used <productname>POSTGRES</productname> has been used to implement many
to implement many different different research and production applications. These include: a
research and production applications. These include: a financial data analysis system, a jet engine performance monitoring
financial data analysis system, a jet engine package, an asteroid tracking database, a medical information
performance monitoring package, an asteroid tracking database, and several geographic information systems.
database, a medical information database, and several <productname>POSTGRES</productname> has also been used as an
geographic information systems. educational tool at several universities. Finally, Illustra
<productname>POSTGRES</productname> has also been Information Technologies (later merged into <ulink
used as an educational tool at several universities. url="http://www.informix.com/"><productname>Informix</productname></ulink>,
Finally, which is now owned by <ulink
Illustra Information Technologies (later merged into url="http://www.ibm.com/">IBM</ulink>.) picked up the code and
<ulink url="http://www.informix.com/"><productname>Informix</productname></ulink>, commercialized it. In late 1992,
which is now owned by <ulink url="http://www.ibm.com/">IBM</ulink>.) <productname>POSTGRES</productname> became the primary data manager
picked up for the <ulink
the code and commercialized it. url="http://meteora.ucsd.edu/s2k/s2k_home.html">Sequoia
<productname>POSTGRES</productname> became the primary data manager 2000</ulink> scientific computing project.
for the
<ulink url="http://meteora.ucsd.edu/s2k/s2k_home.html">Sequoia 2000</ulink>
scientific computing project in late 1992.
</para> </para>
<para> <para>
The size of the external user community The size of the external user community nearly doubled during 1993.
nearly doubled during 1993. It became increasingly It became increasingly obvious that maintenance of the prototype
obvious that maintenance of the prototype code and code and support was taking up large amounts of time that should
support was taking up large amounts of time that should have been devoted to database research. In an effort to reduce
have been devoted to database research. In an effort this support burden, the Berkeley
to reduce this support burden, the Berkeley <productname>POSTGRES</productname> project officially ended with
<productname>POSTGRES</productname> project officially Version 4.2.
ended with Version 4.2.
</para> </para>
</sect2> </sect2>
<sect2> <sect2 id="history-postgres95">
<title><productname>Postgres95</productname></title> <title><productname>Postgres95</productname></title>
<indexterm zone="history-postgres95">
<primary>Postgres95</primary>
</indexterm>
<para> <para>
In 1994, Andrew Yu and Jolly Chen In 1994, Andrew Yu and Jolly Chen added a SQL language interpreter
added a SQL language interpreter to <productname>POSTGRES</productname>. to <productname>POSTGRES</productname>. Under a new name,
<productname>Postgres95</productname> was subsequently released to <productname>Postgres95</productname> was subsequently released to
the Web to find its own way in the world as an the web to find its own way in the world as an open-source
open-source descendant of the original <productname>POSTGRES</productname> descendant of the original <productname>POSTGRES</productname>
Berkeley code. Berkeley code.
</para> </para>
<para> <para>
<productname>Postgres95</productname> code was completely <productname>Postgres95</productname> code was completely ANSI C
ANSI C and trimmed in size by 25%. Many and trimmed in size by 25%. Many internal changes improved
internal changes improved performance and maintainability. performance and
<productname>Postgres95</productname> release 1.0.x ran about 30-50% maintainability. <productname>Postgres95</productname> release
faster on the Wisconsin Benchmark compared to 1.0.x ran about 30-50% faster on the Wisconsin Benchmark compared
<productname>POSTGRES</productname>, Version 4.2. to <productname>POSTGRES</productname>, Version 4.2. Apart from
Apart from bug fixes, the following were the major enhancements: bug fixes, the following were the major enhancements:
<itemizedlist> <itemizedlist>
<listitem> <listitem>
<para> <para>
The query language PostQUEL was replaced with The query language PostQUEL was replaced with
<acronym>SQL</acronym> (implemented in the server). <acronym>SQL</acronym> (implemented in the server). Subqueries
Subqueries were not supported until were not supported until <productname>PostgreSQL</productname>
<productname>PostgreSQL</productname> (see below), but they (see below), but they could be imitated in
could be imitated in <productname>Postgres95</productname> with user-defined <productname>Postgres95</productname> with user-defined
<acronym>SQL</acronym> functions. Aggregates were <acronym>SQL</acronym> functions. Aggregate functions were
re-implemented. Support for the GROUP BY query clause was also added. re-implemented. Support for the <literal>GROUP BY</literal>
The <filename>libpq</filename> interface remained query clause was also added.
available for <acronym>C</acronym>
programs.
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
In addition to the monitor program, a new program In addition to the monitor program, a new program
(<application>psql</application>) was provided for interactive SQL queries (<application>psql</application>) was provided for interactive
using <acronym>GNU</acronym> <application>Readline</application>. SQL queries, which used <acronym>GNU</acronym>
<application>Readline</application>.
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
A new front-end library, <filename>libpgtcl</filename>, A new front-end library, <filename>libpgtcl</filename>,
supported <acronym>Tcl</acronym>-based clients. A sample shell, supported <acronym>Tcl</acronym>-based clients. A sample shell,
<command>pgtclsh</command>, provided new Tcl commands to interface <command>pgtclsh</command>, provided new Tcl commands to
<application>Tcl</application> interface <application>Tcl</application> programs with the
programs with the <productname>Postgres95</productname> backend. <productname>Postgres95</productname> server.
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
The large-object interface was overhauled. The Inversion large objects were The large-object interface was overhauled. The inversion large
the only mechanism for storing large objects. objects were the only mechanism for storing large objects. (The
(The Inversion file system was removed.) inversion file system was removed.)
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
The instance-level rule system was removed. The instance-level rule system was removed. Rules were still
Rules were still available as rewrite rules. available as rewrite rules.
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
A short tutorial introducing regular <acronym>SQL</acronym> features as A short tutorial introducing regular <acronym>SQL</acronym>
well as those of <productname>Postgres95</productname> was features as well as those of
distributed with the source code <productname>Postgres95</productname> was distributed with the
source code
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
<acronym>GNU</acronym> make (instead of <acronym>BSD</acronym> make) was used <acronym>GNU</acronym> make (instead of <acronym>BSD</acronym>
for the build. Also, <productname>Postgres95</productname> could be make) was used for the build. Also,
compiled with an unpatched <productname>GCC</productname> <productname>Postgres95</productname> could be compiled with an
(data alignment of doubles was fixed). unpatched <productname>GCC</productname> (data alignment of
doubles was fixed).
</para> </para>
</listitem> </listitem>
</itemizedlist> </itemizedlist>
...@@ -187,83 +186,28 @@ $Header: /cvsroot/pgsql/doc/src/sgml/history.sgml,v 1.20 2003/01/19 00:13:28 mom ...@@ -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> <title><productname>PostgreSQL</productname></title>
<para> <para>
By 1996, it became clear that the name <quote>Postgres95</quote> would By 1996, it became clear that the name <quote>Postgres95</quote>
not stand the test of time. We chose a new name, would not stand the test of time. We chose a new name,
<productname>PostgreSQL</productname>, to reflect the relationship <productname>PostgreSQL</productname>, to reflect the relationship
between the original <productname>POSTGRES</productname> and the more between the original <productname>POSTGRES</productname> and the
recent versions with <acronym>SQL</acronym> capability. At the same more recent versions with <acronym>SQL</acronym> capability. At
time, we set the version numbering to start at 6.0, putting the the same time, we set the version numbering to start at 6.0,
numbers back into the sequence originally begun by the Berkeley putting the numbers back into the sequence originally begun by the
<productname>POSTGRES</productname> project. Berkeley <productname>POSTGRES</productname> project.
</para> </para>
<para> <para>
The emphasis during development of <productname>Postgres95</productname> The emphasis during development of
was on identifying and understanding existing problems in the backend code. <productname>Postgres95</productname> was on identifying and
With <productname>PostgreSQL</productname>, understanding existing problems in the server code. With
the emphasis has shifted to augmenting features and capabilities, although <productname>PostgreSQL</productname>, the emphasis has shifted to
work continues in all areas. augmenting features and capabilities, although work continues in
all areas.
</para> </para>
<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> </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> </sect2>
</sect1> </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:
-->
<!-- <!--
$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"> <sect1 id="resources">
<title>Overview of Documentation Resources</title> <title>Further Information</title>
<para> <para>
The <productname>PostgreSQL</> documentation is organized into Besides the documentation, that is, this book, there are other
several books: resources about <productname>PostgreSQL</productname>:
<variablelist> <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> <varlistentry>
<term>FAQs</term> <term>FAQs</term>
<listitem> <listitem>
<para> <para>
Frequently Asked Questions (FAQ) lists document both general issues The FAQ list <indexterm><primary>FAQ-Liste</></> contains
and some platform-specific issues. continuously updated answers to frequently asked questions.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
...@@ -107,7 +24,8 @@ $Header: /cvsroot/pgsql/doc/src/sgml/info.sgml,v 1.18 2003/01/19 00:13:28 momjia ...@@ -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> <term>READMEs</term>
<listitem> <listitem>
<para> <para>
README files are available for some contributed packages. <filename>README</filename> files are available for some
contributed packages.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
...@@ -118,8 +36,8 @@ $Header: /cvsroot/pgsql/doc/src/sgml/info.sgml,v 1.18 2003/01/19 00:13:28 momjia ...@@ -118,8 +36,8 @@ $Header: /cvsroot/pgsql/doc/src/sgml/info.sgml,v 1.18 2003/01/19 00:13:28 momjia
<para> <para>
The <ulink The <ulink
url="http://www.postgresql.org"><productname>PostgreSQL</productname> url="http://www.postgresql.org"><productname>PostgreSQL</productname>
web site</ulink> carries details on the latest release, upcoming web site</ulink> carries details on the latest release and other
features, and other information to make your work or play with information to make your work or play with
<productname>PostgreSQL</productname> more productive. <productname>PostgreSQL</productname> more productive.
</para> </para>
</listitem> </listitem>
...@@ -131,10 +49,8 @@ $Header: /cvsroot/pgsql/doc/src/sgml/info.sgml,v 1.18 2003/01/19 00:13:28 momjia ...@@ -131,10 +49,8 @@ $Header: /cvsroot/pgsql/doc/src/sgml/info.sgml,v 1.18 2003/01/19 00:13:28 momjia
<para> <para>
The mailing lists are a good place to have your questions The mailing lists are a good place to have your questions
answered, to share experiences with other users, and to contact answered, to share experiences with other users, and to contact
the developers. Consult the <ulink the developers. Consult the <productname>PostgreSQL</> web site
url="http://www.postgresql.org/users-lounge/">User's for details.
Lounge</ulink> section of the <productname>PostgreSQL</>
web site for details.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
...@@ -143,41 +59,18 @@ $Header: /cvsroot/pgsql/doc/src/sgml/info.sgml,v 1.18 2003/01/19 00:13:28 momjia ...@@ -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> <term>Yourself!</term>
<listitem> <listitem>
<para> <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 such, it depends on the user community for ongoing support.
As you begin to use <productname>PostgreSQL</productname>, you As you begin to use <productname>PostgreSQL</productname>, you
will rely on others for help, either through the documentation will rely on others for help, either through the documentation
or through the mailing lists. Consider contributing your or through the mailing lists. Consider contributing your
knowledge back. If you learn something which is not in the knowledge back. Read the mailing lists and answer questions. If
documentation, write it up and contribute it. If you add you learn something which is not in the documentation, write it
features to the code, contribute them. up and contribute it. If you add features to the code,
</para> contribute them.
<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.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
</variablelist> </variablelist>
</para> </para>
</sect1> </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:
-->
<!-- <!--
$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"> <preface id="preface">
<title> What is <productname>PostgreSQL</productname>?</title> <title>Preface</title>
<para> <para>
<productname>PostgreSQL</productname> is an object-relational This book is the official documentation of PostgreSQL. It is being
database management system (<acronym>ORDBMS</acronym>) based on written by the PostgreSQL developers and other volunteers in
<ulink url="http://s2k-ftp.CS.Berkeley.EDU:8000/postgres/postgres.html"> parallel to the development of the PostgreSQL software. It
<productname>POSTGRES, Version 4.2</productname></ulink>, describes all the functionality that the current version of
developed at the University of California at Berkeley Computer PostgreSQL officially supports.
Science Department. The <productname>POSTGRES</productname> </para>
project, led by Professor Michael Stonebraker, was sponsored by
the Defense Advanced Research Projects Agency <para>
(<acronym>DARPA</acronym>), the Army Research Office To make the large amount of information about PostgreSQL manageable,
(<acronym>ARO</acronym>), the National Science Foundation this book has been organized in several parts. Each part is
(<acronym>NSF</acronym>), and ESL, Inc. targeted at a different class of users, or at users in different
</para> stages of their PostgreSQL experience:
<para> <itemizedlist>
<productname>PostgreSQL</productname> is an open-source descendant of <listitem>
this original Berkeley code. It provides SQL92/SQL99 language support <para>
and other modern features. <xref linkend="tutorial"> is an informal introduction for new users.
</para> </para>
</listitem>
<para>
<productname>POSTGRES</productname> pioneered many of the <listitem>
object-relational concepts now becoming available in some commercial <para>
databases. <xref linkend="sql"> documents the <acronym>SQL</acronym> query
Traditional relational database management systems language environment, including data types and functions, as well
(<acronym>RDBMS</acronym>) support a data model consisting of a collection as user-level performance tuning. Every
of named relations, containing attributes of a specific <productname>PostgreSQL</> user should read this.
type. In current commercial systems, possible types </para>
include floating point numbers, integers, character </listitem>
strings, money, and dates. It is commonly recognized
that this model is inadequate for future data-processing applications. <listitem>
The relational model successfully replaced previous <para>
models in part because of its <quote>Spartan simplicity</quote>. <xref linkend="admin"> describes the installation and
However, this simplicity makes the administration of the server. Everyone that runs a PostgreSQL
implementation of certain applications very difficult. server, be it for private use or for others, should read this
<productname>PostgreSQL</productname> offers substantial additional part.
power by incorporating the following additional </para>
concepts in such a way that users can easily </listitem>
extend the system:
<listitem>
<itemizedlist spacing="compact"> <para>
<listitem> <xref linkend="client-interfaces"> describes the programming
<simpara>inheritance</> interfaces for PostgreSQL client programs.
</listitem> </para>
<listitem> </listitem>
<simpara>data types</>
</listitem>
<listitem> <listitem>
<simpara>functions</simpara> <para>
</listitem> <xref linkend="server-programming"> contains information for
</itemizedlist> advanced users about the extensibility capabilities of the
</para> server. Topics are, for instance, user-defined data types and
functions.
<para> </para>
Other features provide additional power and flexibility: </listitem>
<itemizedlist spacing="compact"> <listitem>
<listitem> <para>
<simpara>constraints</simpara> <xref linkend="reference"> contains information about the syntax
</listitem> of SQL commands, client and server programs. This part supports
<listitem> the other parts with structured information sorted by command or
<simpara>triggers</simpara> program.
</listitem> </para>
<listitem> </listitem>
<simpara>rules</simpara> </itemizedlist>
</listitem> </para>
<listitem>
<simpara>transactional integrity</simpara> <sect1 id="intro-whatis">
</listitem> <title> What is <productname>PostgreSQL</productname>?</title>
</itemizedlist>
</para> <para>
<productname>PostgreSQL</productname> is an object-relational
<para> database management system (<acronym>ORDBMS</acronym>) based on
These features put <productname>PostgreSQL</productname> into the <ulink url="http://s2k-ftp.CS.Berkeley.EDU:8000/postgres/postgres.html">
category of databases referred to as <productname>POSTGRES, Version 4.2</productname></ulink>, developed
<firstterm>object-relational</firstterm>. Note that this is distinct at the University of California at Berkeley Computer Science
from those referred to as <firstterm>object-oriented</firstterm>, Department. POSTGRES pioneered many concepts that only became
which in general are not as well suited to supporting available in some commercial database systems much later.
traditional relational database languages. </para>
So, although <productname>PostgreSQL</productname> has some
object-oriented features, it is firmly in the relational database <para>
world. In fact, some commercial databases have recently <productname>PostgreSQL</productname> is an open-source descendant
incorporated features pioneered by <productname>PostgreSQL</productname>. of this original Berkeley code. It supports SQL92 and SQL99 and
</para> offers many modern features:
</sect1> <itemizedlist spacing="compact">
<listitem>
<!-- Keep this comment at the end of the file <simpara>complex queries</simpara>
Local variables: </listitem>
mode:sgml <listitem>
sgml-omittag:nil <simpara>foreign keys</simpara>
sgml-shorttag:t </listitem>
sgml-minimize-attributes:nil <listitem>
sgml-always-quote-attributes:t <simpara>triggers</simpara>
sgml-indent-step:1 </listitem>
sgml-indent-data:t <listitem>
sgml-parent-document:nil <simpara>views</simpara>
sgml-default-dtd-file:"./reference.ced" </listitem>
sgml-exposed-tags:nil <listitem>
sgml-local-catalogs:("/usr/lib/sgml/catalog") <simpara>transactional integrity</simpara>
sgml-local-ecat-files:nil </listitem>
End: <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>
...@@ -201,7 +201,7 @@ load libpgtcl[info sharedlibextension] ...@@ -201,7 +201,7 @@ load libpgtcl[info sharedlibextension]
<refsynopsisdiv> <refsynopsisdiv>
<synopsis> <synopsis>
pg_connect -conninfo <parameter>connectOptions</parameter> 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> </synopsis>
</refsynopsisdiv> </refsynopsisdiv>
...@@ -612,7 +612,7 @@ pg_result <parameter>resultHandle</parameter> <parameter>resultOption</parameter ...@@ -612,7 +612,7 @@ pg_result <parameter>resultHandle</parameter> <parameter>resultOption</parameter
</varlistentry> </varlistentry>
<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> <listitem>
<para> <para>
Assign the results to an array using the values of the Assign the results to an array using the values of the
...@@ -839,7 +839,7 @@ pg_select $pgconn "SELECT * FROM table1;" array { ...@@ -839,7 +839,7 @@ pg_select $pgconn "SELECT * FROM table1;" array {
<refsynopsisdiv> <refsynopsisdiv>
<synopsis> <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> </synopsis>
</refsynopsisdiv> </refsynopsisdiv>
...@@ -1020,7 +1020,7 @@ pg_execute $pgconn "SELECT max(value) AS max, min(value) AS min FROM mytable;" ...@@ -1020,7 +1020,7 @@ pg_execute $pgconn "SELECT max(value) AS max, min(value) AS min FROM mytable;"
<refsynopsisdiv> <refsynopsisdiv>
<synopsis> <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> </synopsis>
</refsynopsisdiv> </refsynopsisdiv>
...@@ -1120,7 +1120,7 @@ pg_listen <parameter>conn</parameter> <parameter>notifyName</parameter> <optiona ...@@ -1120,7 +1120,7 @@ pg_listen <parameter>conn</parameter> <parameter>notifyName</parameter> <optiona
<refsynopsisdiv> <refsynopsisdiv>
<synopsis> <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> </synopsis>
</refsynopsisdiv> </refsynopsisdiv>
......
<!-- <!--
$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"> <sect1 id="notation">
<title>Terminology and Notation</title> <title>Conventions</title>
<para> <para>
An <firstterm>administrator</firstterm> is generally a person who is This book uses the following typographical conventions to mark
in charge of installing and running the server. A <firstterm>user</firstterm> certain portions of test: new terms, foreign phrases, and other
could be anyone who is using, or wants to use, any part of the important passages are emphasized in <emphasis>italics</>.
<productname>PostgreSQL</productname> system. These terms should not Everything that represents input or output of the computer, in
be interpreted too narrowly; this documentation set does not have fixed particular commands, program code, and screen output, is shown in a
presumptions about system administration procedures. 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>
<para> <para>
We use <filename>/usr/local/pgsql/</filename> as the root The following conventions are used in the synopsis of a command:
directory of the installation and <filename>/usr/local/pgsql/data</filename> brackets (<literal>[</literal> and <literal>]</literal>) indicate
as the directory with the database files. These directories may vary optional parts. (In the synopsis of a Tcl command, question marks
on your site, details can be derived in <xref linkend="installation">. (<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>
<para> <para>
In a command synopsis, brackets Where it enhances the clarity, SQL commands are preceded by the
(<literal>[</literal> and <literal>]</literal>) indicate an optional phrase or keyword. prompt <literal>=&gt;</>, and shell commands are preceded by the
Anything in braces prompt <literal>$</>. Normally, prompts are not shown, though.
(<literal>{</literal> and <literal>}</literal>) and containing vertical bars
(<literal>|</literal>)
indicates that you must choose one alternative.
</para> </para>
<para> <para>
Examples will show commands executed from various accounts and programs. An <firstterm>administrator</firstterm> is generally a person who is
Commands executed from a Unix shell may be preceded with a dollar sign in charge of installing and running the server. A <firstterm>user</firstterm>
(<quote><literal>$</literal></quote>). Commands executed from particular user could be anyone who is using, or wants to use, any part of the
accounts such as <systemitem>root</> or <systemitem>postgres</> are specially flagged and explained. <productname>PostgreSQL</productname> system. These terms should not
<acronym>SQL</acronym> commands may be preceded with be interpreted too narrowly; this documentation set does not have fixed
<quote><literal>=&gt;</literal></quote> presumptions about system administration procedures.
or will have no leading prompt, depending on the context.
</para> </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> </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:
-->
<!-- <!--
$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"> <chapter id="pltcl">
...@@ -235,7 +235,7 @@ CREATE FUNCTION overpaid(employee) RETURNS boolean AS ' ...@@ -235,7 +235,7 @@ CREATE FUNCTION overpaid(employee) RETURNS boolean AS '
<variablelist> <variablelist>
<varlistentry> <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> <listitem>
<para> <para>
Executes an SQL command given as a string. An error in the command 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" { ...@@ -329,7 +329,7 @@ spi_exec -array C "SELECT * FROM pg_class" {
</varlistentry> </varlistentry>
<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> <listitem>
<para> <para>
Executes a query previously prepared with <function>spi_prepare</>. Executes a query previously prepared with <function>spi_prepare</>.
......
<!-- <!--
$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" [ <!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 ...@@ -21,15 +21,7 @@ $Header: /cvsroot/pgsql/doc/src/sgml/postgres.sgml,v 1.54 2003/09/01 23:01:49 pe
&legal; &legal;
</bookinfo> </bookinfo>
<preface id="preface"> &intro;
<title>Preface</title>
&intro;
&history;
&notation;
&problems;
</preface>
<part id="tutorial"> <part id="tutorial">
<title>Tutorial</title> <title>Tutorial</title>
......
<!-- $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" [ <!DOCTYPE style-sheet PUBLIC "-//James Clark//DTD DSSSL Style Sheet//EN" [
<!-- must turn on one of these with -i on the jade command line --> <!-- must turn on one of these with -i on the jade command line -->
...@@ -62,6 +62,38 @@ ...@@ -62,6 +62,38 @@
(element type ($mono-seq$)) (element type ($mono-seq$))
(element (programlisting emphasis) ($bold-seq$)) ;; to highlight sections of code (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 ;; Bibliography things
...@@ -110,11 +142,6 @@ ...@@ -110,11 +142,6 @@
(element issn (element issn
(make sequence (make sequence
(literal "ISSN ") (literal "ISSN ")
(process-children)))
(element pagenums
(make sequence
(literal "p. ")
(process-children)))) (process-children))))
...@@ -137,6 +164,7 @@ ...@@ -137,6 +164,7 @@
<![ %output-html; [ <![ %output-html; [
(define %section-autolabel% #t) (define %section-autolabel% #t)
(define %label-preface-sections% #f)
(define %generate-legalnotice-link% #t) (define %generate-legalnotice-link% #t)
(define %html-ext% ".html") (define %html-ext% ".html")
(define %root-filename% "index") (define %root-filename% "index")
...@@ -144,6 +172,8 @@ ...@@ -144,6 +172,8 @@
(define %use-id-as-filename% #t) (define %use-id-as-filename% #t)
(define %stylesheet% "stylesheet.css") (define %stylesheet% "stylesheet.css")
(define %graphic-default-extension% "gif") (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 ;; Returns the depth of auto TOC that should be made at the nd-level
(define (toc-depth nd) (define (toc-depth nd)
......
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