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 decades of
16 development behind it,
<productname>PostgreSQL
</productname> is now
17 the most advanced open-source database available anywhere.
21 Another take on the history presented here can be found in Dr. Joe
22 Hellerstein's paper
<quote>Looking Back at Postgres
</quote>
23 <xref linkend=
"hell18"/>.
26 <sect2 id=
"history-berkeley">
27 <title>The Berkeley
<productname>POSTGRES
</productname> Project
</title>
29 <indexterm zone=
"history-berkeley">
30 <primary>POSTGRES
</primary>
34 The
<productname>POSTGRES
</productname> project, led by Professor
35 Michael Stonebraker, was sponsored by the Defense Advanced Research
36 Projects Agency (
<acronym>DARPA
</acronym>), the Army Research
37 Office (
<acronym>ARO
</acronym>), the National Science Foundation
38 (
<acronym>NSF
</acronym>), and ESL, Inc. The implementation of
39 <productname>POSTGRES
</productname> began in
1986. The initial
40 concepts for the system were presented in
<xref linkend=
"ston86"/>,
41 and the definition of the initial data model appeared in
<xref
42 linkend=
"rowe87"/>. The design of the rule system at that time was
43 described in
<xref linkend=
"ston87a"/>. The rationale and
44 architecture of the storage manager were detailed in
<xref
49 <productname>POSTGRES
</productname> has undergone several major
50 releases since then. The first
<quote>demoware
</quote> system
51 became operational in
1987 and was shown at the
1988
52 <acronym>ACM-SIGMOD
</acronym> Conference. Version
1, described in
53 <xref linkend=
"ston90a"/>, was released to a few external users in
54 June
1989. In response to a critique of the first rule system
55 (
<xref linkend=
"ston89"/>), the rule system was redesigned (
<xref
56 linkend=
"ston90b"/>), and Version
2 was released in June
1990 with
57 the new rule system. Version
3 appeared in
1991 and added support
58 for multiple storage managers, an improved query executor, and a
59 rewritten rule system. For the most part, subsequent releases
60 until
<productname>Postgres95
</productname> (see below) focused on
61 portability and reliability.
65 <productname>POSTGRES
</productname> has been used to implement many
66 different research and production applications. These include: a
67 financial data analysis system, a jet engine performance monitoring
68 package, an asteroid tracking database, a medical information
69 database, and several geographic information systems.
70 <productname>POSTGRES
</productname> has also been used as an
71 educational tool at several universities. Finally, Illustra
72 Information Technologies (later merged into
73 <ulink url=
"https://www.ibm.com/analytics/informix"><productname>Informix
</productname></ulink>,
74 which is now owned by
<ulink
75 url=
"https://www.ibm.com/">IBM
</ulink>) picked up the code and
76 commercialized it. In late
1992,
77 <productname>POSTGRES
</productname> became the primary data manager
79 <ulink url=
"http://meteora.ucsd.edu/s2k/s2k_home.html">
80 Sequoia
2000 scientific computing project
</ulink>.
84 The size of the external user community nearly doubled during
1993.
85 It became increasingly obvious that maintenance of the prototype
86 code and support was taking up large amounts of time that should
87 have been devoted to database research. In an effort to reduce
88 this support burden, the Berkeley
89 <productname>POSTGRES
</productname> project officially ended with
94 <sect2 id=
"history-postgres95">
95 <title><productname>Postgres95
</productname></title>
97 <indexterm zone=
"history-postgres95">
98 <primary>Postgres95
</primary>
102 In
1994, Andrew Yu and Jolly Chen added an SQL language interpreter
103 to
<productname>POSTGRES
</productname>. Under a new name,
104 <productname>Postgres95
</productname> was subsequently released to
105 the web to find its own way in the world as an open-source
106 descendant of the original
<productname>POSTGRES
</productname>
111 <productname>Postgres95
</productname> code was completely ANSI C
112 and trimmed in size by
25%. Many internal changes improved
114 maintainability.
<productname>Postgres95
</productname> release
115 1.0.x ran about
30–50% faster on the Wisconsin Benchmark compared
116 to
<productname>POSTGRES
</productname>, Version
4.2. Apart from
117 bug fixes, the following were the major enhancements:
122 The query language PostQUEL was replaced with
123 <acronym>SQL
</acronym> (implemented in the server). (Interface
124 library
<link linkend=
"libpq">libpq
</link> was named after PostQUEL.)
126 were not supported until
<productname>PostgreSQL
</productname>
127 (see below), but they could be imitated in
128 <productname>Postgres95
</productname> with user-defined
129 <acronym>SQL
</acronym> functions. Aggregate functions were
130 re-implemented. Support for the
<literal>GROUP BY
</literal>
131 query clause was also added.
138 (
<application>psql
</application>) was provided for interactive
139 SQL queries, which used
<acronym>GNU
</acronym>
140 <application>Readline
</application>. This largely superseded
141 the old
<application>monitor
</application> program.
147 A new front-end library,
<filename>libpgtcl
</filename>,
148 supported
<acronym>Tcl
</acronym>-based clients. A sample shell,
149 <command>pgtclsh
</command>, provided new Tcl commands to
150 interface
<application>Tcl
</application> programs with the
151 <productname>Postgres95
</productname> server.
157 The large-object interface was overhauled. The inversion large
158 objects were the only mechanism for storing large objects. (The
159 inversion file system was removed.)
165 The instance-level rule system was removed. Rules were still
166 available as rewrite rules.
172 A short tutorial introducing regular
<acronym>SQL
</acronym>
173 features as well as those of
174 <productname>Postgres95
</productname> was distributed with the
181 <acronym>GNU
</acronym> make (instead of
<acronym>BSD
</acronym>
182 make) was used for the build. Also,
183 <productname>Postgres95
</productname> could be compiled with an
184 unpatched
<productname>GCC
</productname> (data alignment of
192 <sect2 id=
"history-postgresql">
193 <title><productname>PostgreSQL
</productname></title>
196 By
1996, it became clear that the name
<quote>Postgres95
</quote>
197 would not stand the test of time. We chose a new name,
198 <productname>PostgreSQL
</productname>, to reflect the relationship
199 between the original
<productname>POSTGRES
</productname> and the
200 more recent versions with
<acronym>SQL
</acronym> capability. At
201 the same time, we set the version numbering to start at
6.0,
202 putting the numbers back into the sequence originally begun by the
203 Berkeley
<productname>POSTGRES
</productname> project.
207 Many people continue to refer to
208 <productname>PostgreSQL
</productname> as
<quote>Postgres
</quote>
209 (now rarely in all capital letters) because of tradition or because
210 it is easier to pronounce. This usage is widely accepted as a
215 The emphasis during development of
216 <productname>Postgres95
</productname> was on identifying and
217 understanding existing problems in the server code. With
218 <productname>PostgreSQL
</productname>, the emphasis has shifted to
219 augmenting features and capabilities, although work continues in
224 Details about what has happened in
225 each
<productname>PostgreSQL
</productname> release since then
227 <ulink url=
"https://www.postgresql.org/docs/release/">https://www.postgresql.org/docs/release/
</ulink>.