1
<!-- doc/src/sgml/history.sgml -->
4
<title>A Brief History of <productname>PostgreSQL</productname></title>
6
<indexterm zone="history">
7
<primary>history</primary>
8
<secondary>of PostgreSQL</secondary>
12
The object-relational database management system now known as
13
<productname>PostgreSQL</productname> is derived from the
14
<productname>POSTGRES</productname> package written at the
15
University of California at Berkeley. With over two decades of
16
development behind it, <productname>PostgreSQL</productname> is now
17
the most advanced open-source database available anywhere.
20
<sect2 id="history-berkeley">
21
<title>The Berkeley <productname>POSTGRES</productname> Project</title>
23
<indexterm zone="history-berkeley">
24
<primary>POSTGRES</primary>
28
The <productname>POSTGRES</productname> project, led by Professor
29
Michael Stonebraker, was sponsored by the Defense Advanced Research
30
Projects Agency (<acronym>DARPA</acronym>), the Army Research
31
Office (<acronym>ARO</acronym>), the National Science Foundation
32
(<acronym>NSF</acronym>), and ESL, Inc. The implementation of
33
<productname>POSTGRES</productname> began in 1986. The initial
34
concepts for the system were presented in <xref linkend="STON86">,
35
and the definition of the initial data model appeared in <xref
36
linkend="ROWE87">. The design of the rule system at that time was
37
described in <xref linkend="STON87a">. The rationale and
38
architecture of the storage manager were detailed in <xref
43
<productname>POSTGRES</productname> has undergone several major
44
releases since then. The first <quote>demoware</quote> system
45
became operational in 1987 and was shown at the 1988
46
<acronym>ACM-SIGMOD</acronym> Conference. Version 1, described in
47
<xref linkend="STON90a">, was released to a few external users in
48
June 1989. In response to a critique of the first rule system
49
(<xref linkend="STON89">), the rule system was redesigned (<xref
50
linkend="STON90b">), and Version 2 was released in June 1990 with
51
the new rule system. Version 3 appeared in 1991 and added support
52
for multiple storage managers, an improved query executor, and a
53
rewritten rule system. For the most part, subsequent releases
54
until <productname>Postgres95</productname> (see below) focused on
55
portability and reliability.
59
<productname>POSTGRES</productname> has been used to implement many
60
different research and production applications. These include: a
61
financial data analysis system, a jet engine performance monitoring
62
package, an asteroid tracking database, a medical information
63
database, and several geographic information systems.
64
<productname>POSTGRES</productname> has also been used as an
65
educational tool at several universities. Finally, Illustra
66
Information Technologies (later merged into
67
<ulink url="http://www.informix.com/"><productname>Informix</productname></ulink>,
68
which is now owned by <ulink
69
url="http://www.ibm.com/">IBM</ulink>) picked up the code and
70
commercialized it. In late 1992,
71
<productname>POSTGRES</productname> became the primary data manager
73
<ulink url="http://meteora.ucsd.edu/s2k/s2k_home.html">
74
Sequoia 2000 scientific computing project</ulink>.
78
The size of the external user community nearly doubled during 1993.
79
It became increasingly obvious that maintenance of the prototype
80
code and support was taking up large amounts of time that should
81
have been devoted to database research. In an effort to reduce
82
this support burden, the Berkeley
83
<productname>POSTGRES</productname> project officially ended with
88
<sect2 id="history-postgres95">
89
<title><productname>Postgres95</productname></title>
91
<indexterm zone="history-postgres95">
92
<primary>Postgres95</primary>
96
In 1994, Andrew Yu and Jolly Chen added an SQL language interpreter
97
to <productname>POSTGRES</productname>. Under a new name,
98
<productname>Postgres95</productname> was subsequently released to
99
the web to find its own way in the world as an open-source
100
descendant of the original <productname>POSTGRES</productname>
105
<productname>Postgres95</productname> code was completely ANSI C
106
and trimmed in size by 25%. Many internal changes improved
108
maintainability. <productname>Postgres95</productname> release
109
1.0.x ran about 30-50% faster on the Wisconsin Benchmark compared
110
to <productname>POSTGRES</productname>, Version 4.2. Apart from
111
bug fixes, the following were the major enhancements:
116
The query language PostQUEL was replaced with
117
<acronym>SQL</acronym> (implemented in the server). Subqueries
118
were not supported until <productname>PostgreSQL</productname>
119
(see below), but they could be imitated in
120
<productname>Postgres95</productname> with user-defined
121
<acronym>SQL</acronym> functions. Aggregate functions were
122
re-implemented. Support for the <literal>GROUP BY</literal>
123
query clause was also added.
130
(<application>psql</application>) was provided for interactive
131
SQL queries, which used <acronym>GNU</acronym>
132
<application>Readline</application>. This largely superseded
133
the old <application>monitor</> program.
139
A new front-end library, <filename>libpgtcl</filename>,
140
supported <acronym>Tcl</acronym>-based clients. A sample shell,
141
<command>pgtclsh</command>, provided new Tcl commands to
142
interface <application>Tcl</application> programs with the
143
<productname>Postgres95</productname> server.
149
The large-object interface was overhauled. The inversion large
150
objects were the only mechanism for storing large objects. (The
151
inversion file system was removed.)
157
The instance-level rule system was removed. Rules were still
158
available as rewrite rules.
164
A short tutorial introducing regular <acronym>SQL</acronym>
165
features as well as those of
166
<productname>Postgres95</productname> was distributed with the
173
<acronym>GNU</acronym> make (instead of <acronym>BSD</acronym>
174
make) was used for the build. Also,
175
<productname>Postgres95</productname> could be compiled with an
176
unpatched <productname>GCC</productname> (data alignment of
185
<title><productname>PostgreSQL</productname></title>
188
By 1996, it became clear that the name <quote>Postgres95</quote>
189
would not stand the test of time. We chose a new name,
190
<productname>PostgreSQL</productname>, to reflect the relationship
191
between the original <productname>POSTGRES</productname> and the
192
more recent versions with <acronym>SQL</acronym> capability. At
193
the same time, we set the version numbering to start at 6.0,
194
putting the numbers back into the sequence originally begun by the
195
Berkeley <productname>POSTGRES</productname> project.
199
Many people continue to refer to
200
<productname>PostgreSQL</productname> as <quote>Postgres</quote>
201
(now rarely in all capital letters) because of tradition or because
202
it is easier to pronounce. This usage is widely accepted as a
207
The emphasis during development of
208
<productname>Postgres95</productname> was on identifying and
209
understanding existing problems in the server code. With
210
<productname>PostgreSQL</productname>, the emphasis has shifted to
211
augmenting features and capabilities, although work continues in
216
Details about what has happened in <productname>PostgreSQL</> since
217
then can be found in <xref linkend="release">.