11<Sect1>
22<Title>A Short History of <ProductName>Postgres</ProductName></Title>
33
4+ <Para>
5+ The Object-Relational Database Management System now known as
6+ <ProductName>PostgreSQL</ProductName> was originally called
7+ <ProductName>Postgres</ProductName>, and briefly called
8+ <ProductName>Postgres95</ProductName>. With over a decade of
9+ development behind it, <ProductName>PostgreSQL</ProductName>
10+ is the most advanced open-source database available anywhere,
11+ offering multi-version concurrency control and supporting almost
12+ all SQL constructs, including subselects, transactions, and
13+ user-defined types and functions.
14+ </Para>
15+
416<Sect2>
517<Title>The Berkeley <ProductName>Postgres</ProductName> Project</Title>
618
@@ -37,8 +49,8 @@ and Version 2 was
3749 Version 3 appeared in 1991 and added support for multiple
3850 storage managers, an improved query executor, and a
3951 rewritten rewrite rule system. For the most part,
40- releasessince then have focused on portability and
41- reliability.
52+ releasesuntil <ProductName>Postgres95</ProductName> (see below)
53+ focused on portability and reliability.
4254</Para>
4355
4456<Para>
@@ -70,7 +82,7 @@ and Version 2 was
7082 ended with Version 4.2.
7183</Para>
7284</Sect2>
73-
85+
7486<Sect2>
7587<Title><ProductName>Postgres95</ProductName></Title>
7688
@@ -79,77 +91,75 @@ In 1994,
7991<ULink url="mailto:ayu@informix.com">Andrew Yu</ULink>
8092and
8193<ULink url="http://http.cs.berkeley.edu/~jolly/">Jolly Chen</ULink>
82- added a SQL language interpreter to <ProductName>Postgres</ProductName>,
83- and the code was subsequently released to
84- the Web to find its own way in the world.
85- <ProductName>Postgres95 </ProductName> was a public-domain, open source descendant
86- of this original Berkeley code.
94+ added a SQL language interpreter to <ProductName>Postgres</ProductName>.
95+ <ProductName>Postgres95</ProductName> was subsequently released to
96+ the Web to find its own way in the world as a public-domain,
97+ open source descendant of the original <ProductName>Postgres </ProductName>
98+ Berkeley code.
8799</Para>
88100
89101<Para>
90- <ProductName>Postgres95</ProductName> is a derivative of the last official release
91- of <ProductName>Postgres</ProductName> (version 4.2). The code is now completely
92- ANSI C and the code size has been trimmed by 25%. There
93- are a lot of internal changes that improve performance
94- and code maintainability.
95- <ProductName>Postgres95</ProductName> v1.0.x runs about 30-50%
96- faster on the Wisconsin Benchmark compared to v4.2.
97- Apart from bug fixes, these are the major enhancements:
102+ <ProductName>Postgres95</ProductName> code was completely
103+ ANSI C and trimmed in size by 25%. Many
104+ internal changes improved performance and maintainability.
105+ <ProductName>Postgres95</ProductName> v1.0.x ran about 30-50%
106+ faster on the Wisconsin Benchmark compared to
107+ <ProductName>Postgres</ProductName> v4.2.
108+ Apart from bug fixes, these were the major enhancements:
98109
99110<ItemizedList>
100111<ListItem>
101112<Para>
102- The query language <ProductName>Postquel</ProductName>has been replaced with
103- <Acronym>SQL</Acronym> (implemented in the server).We do notyet support
104- subqueries (which can be imitated with user defined
105- <Acronym>SQL</Acronym> functions) . Aggregates have been
106- re-implemented.We also added support for ``GROUP BY''.
107- The <FileName>libpq</FileName> interfaceis still available for <Acronym>C</Acronym>
113+ The query language <ProductName>Postquel</ProductName>was replaced with
114+ <Acronym>SQL</Acronym> (implemented in the server).Subqueries were notsupported until <ProductName>PostgreSQL</ProductName> (see below), but they
115+ could be imitatedin <ProductName>Postgres95</ProductName> with user- defined
116+ <Acronym>SQL</Acronym> functions. Aggregateswere
117+ re-implemented.Support for ``GROUP BY'' was also added .
118+ The <FileName>libpq</FileName> interfaceremained available for <Acronym>C</Acronym>
108119 programs.
109120</Para>
110121</ListItem>
111122<ListItem>
112123<Para>
113- In addition to the monitor program, we provide a new
114- program (<Application>psql</Application>) which supports <Acronym>GNU</Acronym> <FileName>readline</FileName>.
124+ In addition to the monitor program, a new program
125+ (<Application>psql</Application>) was provided for interactive SQL queries
126+ using <Acronym>GNU</Acronym> <FileName>readline</FileName>.
115127</Para>
116128</ListItem>
117129<ListItem>
118130<Para>
119- We added a new front-end library, <FileName>libpgtcl</FileName>, that
120- supports <Acronym>Tcl</Acronym>-based clients. A sample shell,
121- pgtclsh,provides new Tcl commands to interface <Application>tcl</Application>
131+ A new front-end library, <FileName>libpgtcl</FileName>,
132+ supported <Acronym>Tcl</Acronym>-based clients. A sample shell,
133+ pgtclsh,provided new Tcl commands to interface <Application>tcl</Application>
122134 programs with the <ProductName>Postgres95</ProductName> backend.
123135</Para>
124136</ListItem>
125137<ListItem>
126138<Para>
127- The large object interface has been overhauled. We
128- kept Inversion large objects as the only mechanism
129- for storing large objects. (This is not to be
130- confused with the Inversion file system which has been
131- removed.)
139+ The large object interface was overhauled. The Inversion large objects were
140+ the only mechanism for storing large objects.
141+ (The Inversion file system was removed.)
132142</Para>
133143</ListItem>
134144<ListItem>
135145<Para>
136- The instance-level rule systemhas been removed.
137- Rulesare still available as rewrite rules.
146+ The instance-level rule systemwas removed.
147+ Ruleswere still available as rewrite rules.
138148</Para>
139149</ListItem>
140150<ListItem>
141151<Para>
142152 A short tutorial introducing regular <Acronym>SQL</Acronym> features as
143- well as those ofours is distributed with the source
144- code.
153+ well as those of<ProductName>Postgres95</ProductName> was
154+ distributed with the source code.
145155</Para>
146156</ListItem>
147157<ListItem>
148158<Para>
149- <Acronym>GNU</Acronym> make (instead of <Acronym>BSD</Acronym> make)is used for the
150- build. Also, <ProductName>Postgres95</ProductName>can be compiled with an
151- unpatched <ProductName>gcc</ProductName> (data alignment of doubles has been
152- fixed).
159+ <Acronym>GNU</Acronym> make (instead of <Acronym>BSD</Acronym> make)was used
160+ for the build. Also, <ProductName>Postgres95</ProductName>could be
161+ compiled with an unpatched <ProductName>gcc</ProductName>
162+ (data alignment of doubles was fixed).
153163</Para>
154164</ListItem>
155165</ItemizedList>
@@ -160,36 +170,39 @@ and code maintainability.
160170<Title><ProductName>PostgreSQL</ProductName></Title>
161171
162172<Para>
163- By 1996, it became clear that the name <Quote>Postgres95</Quote> would not stand
164- the test of time. A new name, <ProductName>PostgreSQL</ProductName>,
165- was chosen to reflect the
166- relationship between original <ProductName>Postgres</ProductName>
167- and the more recent
168- versions with <Acronym>SQL</Acronym> capability.
169- At the same time, the version numbering
170- was reset to start at 6.0,
171- putting the numbers back into the sequence originally begun by
172- the <ProductName>Postgres</ProductName> Project.
173+ By 1996, it became clear that the name <Quote>Postgres95</Quote> would
174+ not stand the test of time. We chose a new name,
175+ <ProductName>PostgreSQL</ProductName>, to reflect the relationship
176+ between the original <ProductName>Postgres</ProductName> and the more
177+ recent versions with <Acronym>SQL</Acronym> capability. At the same
178+ time, we set the version numbering to start at 6.0, putting the
179+ numbers back into the sequence originally begun by the
180+ <ProductName>Postgres</ProductName> Project.
173181</Para>
174182
175183<Para>
176- The emphasis on development for the v1.0.x releases of
177- <ProductName>Postgres95</ProductName>
178- was on stabilizing the backend code.
179- With the v6.x series of <ProductName>PostgreSQL</ProductName>,
180- the emphasis has shifted from
181- identifying and understanding existing problems in the backend
182- to augmenting features and capabilities, although
184+ The emphasis during development of <ProductName>Postgres95</ProductName>
185+ was on identifying and understanding existing problems in the backend code.
186+ With <ProductName>PostgreSQL</ProductName>,
187+ the emphasis has shifted to augmenting features and capabilities, although
183188work continues in all areas.
184189</Para>
185190
186191<Para>
187- Major enhancements include:
192+ Major enhancementsin <ProductName>PostgreSQL</ProductName> include:
188193</Para>
189194
190195<ItemizedList>
191196<ListItem>
192197<Para>
198+ Table-level locking has been replaced with multi-version concurrency control,
199+ which allows readers to continue reading consistent data during writer activity
200+ and enables hot backups from pg_dump while the database stays available for
201+ queries.
202+ </Para>
203+ </ListItem>
204+ <ListItem>
205+ <Para>
193206Important backend features, including subselects, defaults,
194207constraints, and triggers, have been implemented.
195208</Para>