2 2. A Brief History of PostgreSQL #
4 2.1. The Berkeley POSTGRES Project
8 The object-relational database management system now known as
9 PostgreSQL is derived from the POSTGRES package written at the
10 University of California at Berkeley. With decades of development
11 behind it, PostgreSQL is now the most advanced open-source database
14 Another take on the history presented here can be found in Dr. Joe
15 Hellerstein's paper “Looking Back at Postgres” [hell18].
17 2.1. The Berkeley POSTGRES Project #
19 The POSTGRES project, led by Professor Michael Stonebraker, was
20 sponsored by the Defense Advanced Research Projects Agency (DARPA), the
21 Army Research Office (ARO), the National Science Foundation (NSF), and
22 ESL, Inc. The implementation of POSTGRES began in 1986. The initial
23 concepts for the system were presented in [ston86], and the definition
24 of the initial data model appeared in [rowe87]. The design of the rule
25 system at that time was described in [ston87a]. The rationale and
26 architecture of the storage manager were detailed in [ston87b].
28 POSTGRES has undergone several major releases since then. The first
29 “demoware” system became operational in 1987 and was shown at the 1988
30 ACM-SIGMOD Conference. Version 1, described in [ston90a], was released
31 to a few external users in June 1989. In response to a critique of the
32 first rule system ([ston89]), the rule system was redesigned
33 ([ston90b]), and Version 2 was released in June 1990 with the new rule
34 system. Version 3 appeared in 1991 and added support for multiple
35 storage managers, an improved query executor, and a rewritten rule
36 system. For the most part, subsequent releases until Postgres95 (see
37 below) focused on portability and reliability.
39 POSTGRES has been used to implement many different research and
40 production applications. These include: a financial data analysis
41 system, a jet engine performance monitoring package, an asteroid
42 tracking database, a medical information database, and several
43 geographic information systems. POSTGRES has also been used as an
44 educational tool at several universities. Finally, Illustra Information
45 Technologies (later merged into Informix, which is now owned by IBM)
46 picked up the code and commercialized it. In late 1992, POSTGRES became
47 the primary data manager for the Sequoia 2000 scientific computing
48 project described in [ston92].
50 The size of the external user community nearly doubled during 1993. It
51 became increasingly obvious that maintenance of the prototype code and
52 support was taking up large amounts of time that should have been
53 devoted to database research. In an effort to reduce this support
54 burden, the Berkeley POSTGRES project officially ended with Version
59 In 1994, Andrew Yu and Jolly Chen added an SQL language interpreter to
60 POSTGRES. Under a new name, Postgres95 was subsequently released to the
61 web to find its own way in the world as an open-source descendant of
62 the original POSTGRES Berkeley code.
64 Postgres95 code was completely ANSI C and trimmed in size by 25%. Many
65 internal changes improved performance and maintainability. Postgres95
66 release 1.0.x ran about 30–50% faster on the Wisconsin Benchmark
67 compared to POSTGRES, Version 4.2. Apart from bug fixes, the following
68 were the major enhancements:
69 * The query language PostQUEL was replaced with SQL (implemented in
70 the server). (Interface library libpq was named after PostQUEL.)
71 Subqueries were not supported until PostgreSQL (see below), but
72 they could be imitated in Postgres95 with user-defined SQL
73 functions. Aggregate functions were re-implemented. Support for the
74 GROUP BY query clause was also added.
75 * A new program (psql) was provided for interactive SQL queries,
76 which used GNU Readline. This largely superseded the old monitor
78 * A new front-end library, libpgtcl, supported Tcl-based clients. A
79 sample shell, pgtclsh, provided new Tcl commands to interface Tcl
80 programs with the Postgres95 server.
81 * The large-object interface was overhauled. The inversion large
82 objects were the only mechanism for storing large objects. (The
83 inversion file system was removed.)
84 * The instance-level rule system was removed. Rules were still
85 available as rewrite rules.
86 * A short tutorial introducing regular SQL features as well as those
87 of Postgres95 was distributed with the source code
88 * GNU make (instead of BSD make) was used for the build. Also,
89 Postgres95 could be compiled with an unpatched GCC (data alignment
90 of doubles was fixed).
94 By 1996, it became clear that the name “Postgres95” would not stand the
95 test of time. We chose a new name, PostgreSQL, to reflect the
96 relationship between the original POSTGRES and the more recent versions
97 with SQL capability. At the same time, we set the version numbering to
98 start at 6.0, putting the numbers back into the sequence originally
99 begun by the Berkeley POSTGRES project.
101 Postgres is still considered an official project name, both because of
102 tradition and because people find it easier to pronounce Postgres than
105 The emphasis during development of Postgres95 was on identifying and
106 understanding existing problems in the server code. With PostgreSQL,
107 the emphasis has shifted to augmenting features and capabilities,
108 although work continues in all areas.
110 Details about what has happened in each PostgreSQL release since then
111 can be found at https://www.postgresql.org/docs/release/.