Remove old RULE privilege completely.
[pgsql.git] / doc / src / sgml / history.sgml
blobe7d134e53ad5a7a43f7eec5fb829b766eb2e3a59
1 <!-- doc/src/sgml/history.sgml -->
3 <sect1 id="history">
4 <title>A Brief History of <productname>PostgreSQL</productname></title>
6 <indexterm zone="history">
7 <primary>history</primary>
8 <secondary>of PostgreSQL</secondary>
9 </indexterm>
11 <para>
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.
18 </para>
20 <para>
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"/>.
24 </para>
26 <sect2 id="history-berkeley">
27 <title>The Berkeley <productname>POSTGRES</productname> Project</title>
29 <indexterm zone="history-berkeley">
30 <primary>POSTGRES</primary>
31 </indexterm>
33 <para>
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
45 linkend="ston87b"/>.
46 </para>
48 <para>
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.
62 </para>
64 <para>
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
78 for the
79 <ulink url="http://meteora.ucsd.edu/s2k/s2k_home.html">
80 Sequoia 2000 scientific computing project</ulink>.
81 </para>
83 <para>
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
90 Version 4.2.
91 </para>
92 </sect2>
94 <sect2 id="history-postgres95">
95 <title><productname>Postgres95</productname></title>
97 <indexterm zone="history-postgres95">
98 <primary>Postgres95</primary>
99 </indexterm>
101 <para>
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>
107 Berkeley code.
108 </para>
110 <para>
111 <productname>Postgres95</productname> code was completely ANSI C
112 and trimmed in size by 25%. Many internal changes improved
113 performance and
114 maintainability. <productname>Postgres95</productname> release
115 1.0.x ran about 30&ndash;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:
119 <itemizedlist>
120 <listitem>
121 <para>
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.)
125 Subqueries
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.
132 </para>
133 </listitem>
135 <listitem>
136 <para>
137 A new program
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.
142 </para>
143 </listitem>
145 <listitem>
146 <para>
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.
152 </para>
153 </listitem>
155 <listitem>
156 <para>
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.)
160 </para>
161 </listitem>
163 <listitem>
164 <para>
165 The instance-level rule system was removed. Rules were still
166 available as rewrite rules.
167 </para>
168 </listitem>
170 <listitem>
171 <para>
172 A short tutorial introducing regular <acronym>SQL</acronym>
173 features as well as those of
174 <productname>Postgres95</productname> was distributed with the
175 source code
176 </para>
177 </listitem>
179 <listitem>
180 <para>
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
185 doubles was fixed).
186 </para>
187 </listitem>
188 </itemizedlist>
189 </para>
190 </sect2>
192 <sect2 id="history-postgresql">
193 <title><productname>PostgreSQL</productname></title>
195 <para>
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.
204 </para>
206 <para>
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
211 nickname or alias.
212 </para>
214 <para>
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
220 all areas.
221 </para>
223 <para>
224 Details about what has happened in
225 each <productname>PostgreSQL</productname> release since then
226 can be found at
227 <ulink url="https://www.postgresql.org/docs/release/">https://www.postgresql.org/docs/release/</ulink>.
228 </para>
229 </sect2>
230 </sect1>