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>
<para> <indexterm zone="history-berkeley">
Implementation of the <productname>POSTGRES</productname> <primary>POSTGRES</primary>
<acronym>DBMS</acronym> began in 1986. The </indexterm>
initial concepts for the system were presented in
<xref linkend="STON86"> <para>
and the definition of the initial data model The <productname>POSTGRES</productname> project, led by Professor
appeared in Michael Stonebraker, was sponsored by the Defense Advanced Research
<xref linkend="ROWE87">. Projects Agency (<acronym>DARPA</acronym>), the Army Research
The design of the rule system at Office (<acronym>ARO</acronym>), the National Science Foundation
that time was described in (<acronym>NSF</acronym>), and ESL, Inc. The implementation of
<xref linkend="STON87a">. <productname>POSTGRES</productname> began in 1986. The initial
The rationale concepts for the system were presented in <xref linkend="STON86">
and architecture of the storage manager were detailed in and the definition of the initial data model appeared in <xref
<xref linkend="STON87b">. linkend="ROWE87">. The design of the rule system at that time was
</para> described in <xref linkend="STON87a">. The rationale and
architecture of the storage manager were detailed in <xref
<para> linkend="STON87b">.
<productname>Postgres</productname> has undergone several major releases since </para>
then. The first <quote>demoware</quote> system became operational
in 1987 and was shown at the 1988 <acronym>ACM-SIGMOD</acronym> <para>
Conference. Version 1, described in <productname>POSTGRES</productname> has undergone several major
<xref linkend="STON90a">, was released releases since then. The first <quote>demoware</quote> system
to a few external users in June 1989. In response to a became operational in 1987 and was shown at the 1988
critique of the first rule system <acronym>ACM-SIGMOD</acronym> Conference. Version 1, described in
(<xref linkend="STON89">), <xref linkend="STON90a">, was released to a few external users in
the rule June 1989. In response to a critique of the first rule system
system was redesigned (<xref linkend="STON89">), the rule system was redesigned (<xref
(<xref linkend="STON90b">) linkend="STON90b">) and Version 2 was released in June 1990 with
and Version 2 was the new rule system. Version 3 appeared in 1991 and added support
released in June 1990 with the new rule system. for multiple storage managers, an improved query executor, and a
Version 3 appeared in 1991 and added support for multiple rewritten rule system. For the most part, subsequent releases
storage managers, an improved query executor, and a until <productname>Postgres95</productname> (see below) focused on
rewritten rule system. For the most part, subsequent portability and reliability.
releases until <productname>Postgres95</productname> (see below) </para>
focused on portability and reliability.
</para> <para>
<productname>POSTGRES</productname> has been used to implement many
<para> different research and production applications. These include: a
<productname>POSTGRES</productname> has been used financial data analysis system, a jet engine performance monitoring
to implement many different package, an asteroid tracking database, a medical information
research and production applications. These include: a database, and several geographic information systems.
financial data analysis system, a jet engine <productname>POSTGRES</productname> has also been used as an
performance monitoring package, an asteroid tracking educational tool at several universities. Finally, Illustra
database, a medical information database, and several Information Technologies (later merged into <ulink
geographic information systems. url="http://www.informix.com/"><productname>Informix</productname></ulink>,
<productname>POSTGRES</productname> has also been which is now owned by <ulink
used as an educational tool at several universities. url="http://www.ibm.com/">IBM</ulink>.) picked up the code and
Finally, commercialized it. In late 1992,
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 <productname>POSTGRES</productname> became the primary data manager
for the for the <ulink
<ulink url="http://meteora.ucsd.edu/s2k/s2k_home.html">Sequoia 2000</ulink> url="http://meteora.ucsd.edu/s2k/s2k_home.html">Sequoia
scientific computing project in late 1992. 2000</ulink> scientific computing project.
</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>
...@@ -142,41 +139,43 @@ $Header: /cvsroot/pgsql/doc/src/sgml/history.sgml,v 1.20 2003/01/19 00:13:28 mom ...@@ -142,41 +139,43 @@ $Header: /cvsroot/pgsql/doc/src/sgml/history.sgml,v 1.20 2003/01/19 00:13:28 mom
<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>
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.
</para>
<para>
Major enhancements in <productname>PostgreSQL</productname> include:
</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> </para>
</listitem>
<listitem>
<para> <para>
Built-in types have been improved, including new wide-range date/time types The emphasis during development of
and additional geometric type support. <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>
</listitem>
<listitem>
<para> <para>
Overall backend code speed has been increased by approximately 20-40%, Details about what has happened in PostgreSQL since then can be
and backend start-up time has decreased by 80% since version 6.0 was released. found in <xref linkend="release">.
</para> </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>
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>
<para> <para>
<productname>PostgreSQL</productname> is an open-source descendant of To make the large amount of information about PostgreSQL manageable,
this original Berkeley code. It provides SQL92/SQL99 language support this book has been organized in several parts. Each part is
and other modern features. targeted at a different class of users, or at users in different
stages of their PostgreSQL experience:
<itemizedlist>
<listitem>
<para>
<xref linkend="tutorial"> is an informal introduction for new users.
</para> </para>
</listitem>
<listitem>
<para> <para>
<productname>POSTGRES</productname> pioneered many of the <xref linkend="sql"> documents the <acronym>SQL</acronym> query
object-relational concepts now becoming available in some commercial language environment, including data types and functions, as well
databases. as user-level performance tuning. Every
Traditional relational database management systems <productname>PostgreSQL</> user should read this.
(<acronym>RDBMS</acronym>) support a data model consisting of a collection </para>
of named relations, containing attributes of a specific </listitem>
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 spacing="compact">
<listitem> <listitem>
<simpara>inheritance</> <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> </listitem>
<listitem> <listitem>
<simpara>data types</> <para>
<xref linkend="client-interfaces"> describes the programming
interfaces for PostgreSQL client programs.
</para>
</listitem> </listitem>
<listitem> <listitem>
<simpara>functions</simpara> <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>
<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> </listitem>
</itemizedlist> </itemizedlist>
</para> </para>
<sect1 id="intro-whatis">
<title> What is <productname>PostgreSQL</productname>?</title>
<para> <para>
Other features provide additional power and flexibility: <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"> <itemizedlist spacing="compact">
<listitem> <listitem>
<simpara>constraints</simpara> <simpara>complex queries</simpara>
</listitem>
<listitem>
<simpara>foreign keys</simpara>
</listitem> </listitem>
<listitem> <listitem>
<simpara>triggers</simpara> <simpara>triggers</simpara>
</listitem> </listitem>
<listitem> <listitem>
<simpara>rules</simpara> <simpara>views</simpara>
</listitem> </listitem>
<listitem> <listitem>
<simpara>transactional integrity</simpara> <simpara>transactional integrity</simpara>
</listitem> </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> </itemizedlist>
</para> </para>
<para> <para>
These features put <productname>PostgreSQL</productname> into the And because of the liberal license, PostgreSQL can be used,
category of databases referred to as modified, and distributed by everyone free of charge for any
<firstterm>object-relational</firstterm>. Note that this is distinct purpose, be it private, commercial, or academic.
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> </para>
</sect1> </sect1>
<!-- Keep this comment at the end of the file &history;
Local variables: &notation;
mode:sgml &info;
sgml-omittag:nil &problems;
sgml-shorttag:t
sgml-minimize-attributes:nil </preface>
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:
-->
...@@ -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
</para> passages, italics (<replaceable>example</replaceable>) indicate,
that you must insert an actual value instead of the placeholder. On
<para> occasion, parts of program code are emphasized in bold face
We use <filename>/usr/local/pgsql/</filename> as the root (<emphasis role="bold"><literal>example</></>), if they have been
directory of the installation and <filename>/usr/local/pgsql/data</filename> added or changed since the preceding example.
as the directory with the database files. These directories may vary
on your site, details can be derived in <xref linkend="installation">.
</para> </para>
<para> <para>
In a command synopsis, brackets The following conventions are used in the synopsis of a command:
(<literal>[</literal> and <literal>]</literal>) indicate an optional phrase or keyword. brackets (<literal>[</literal> and <literal>]</literal>) indicate
Anything in braces optional parts. (In the synopsis of a Tcl command, question marks
(<literal>{</literal> and <literal>}</literal>) and containing vertical bars (<literal>?</>) are used instead, as is usual in Tcl.) Braces
(<literal>|</literal>) (<literal>{</literal> and <literal>}</literal>) and vertical lines
indicates that you must choose one alternative. (<literal>|</literal>) indicate that you must choose one
alternative. Dots (<literal>...</>) mean that the preceding element
can be repeated.
</para> </para>
<para> <para>
Examples will show commands executed from various accounts and programs. Where it enhances the clarity, SQL commands are preceded by the
Commands executed from a Unix shell may be preceded with a dollar sign prompt <literal>=&gt;</>, and shell commands are preceded by the
(<quote><literal>$</literal></quote>). Commands executed from particular user prompt <literal>$</>. Normally, prompts are not shown, though.
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> </para>
<note>
<para> <para>
The notation for An <firstterm>administrator</firstterm> is generally a person who is
flagging commands is not universally consistent throughout the in charge of installing and running the server. A <firstterm>user</firstterm>
documentation set. could be anyone who is using, or wants to use, any part of the
Please report problems to the documentation mailing list <productname>PostgreSQL</productname> system. These terms should not
<email>pgsql-docs@postgresql.org</email>. be interpreted too narrowly; this documentation set does not have fixed
presumptions about system administration procedures.
</para> </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">
<title>Preface</title>
&intro; &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