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">.