A Short History of Postgres
+The Object-Relational Database Management System now known as
+
PostgreSQL was originally called
+
Postgres, and briefly called
+
Postgres95. With over a decade of
+development behind it,
PostgreSQL
+is the most advanced open-source database available anywhere,
+offering multi-version concurrency control and supporting almost
+all SQL constructs, including subselects, transactions, and
+user-defined types and functions.
+
+
The Berkeley Postgres Project
Version 3 appeared in 1991 and added support for multiple
storage managers, an improved query executor, and a
rewritten rewrite rule system. For the most part,
- releases since then have focused on portability and
- reliability.
+ releases
until Postgres95 (see below)
+ focused on portability and reliability.
ended with Version 4.2.
-
+
and
-added a SQL language interpreter to
Postgres,
-and the code was subsequently released to
-the Web to find its own way in the world.
-
Postgres95 was a public-domain, open source descendant
-of this original Berkeley code.
+added a SQL language interpreter to
Postgres.
+
Postgres95 was subsequently released to
+the Web to find its own way in the world as a public-domain,
+open source descendant of the original
Postgres
+Berkeley code.
-
Postgres95 is a derivative of the last official release
-of
Postgres (version 4.2). The code is now completely
- ANSI C and the code size has been trimmed by 25%. There
- are a lot of internal changes that improve performance
-and code maintainability.
-
Postgres95 v1.0.x runs about 30-50%
- faster on the Wisconsin Benchmark compared to v4.2.
- Apart from bug fixes, these are the major enhancements:
+
Postgres95 code was completely
+ ANSI C and trimmed in size by 25%. Many
+ internal changes improved performance and maintainability.
+
Postgres95 v1.0.x ran about 30-50%
+ faster on the Wisconsin Benchmark compared to
+ Apart from bug fixes, these were the major enhancements:
- The query language
Postquel has been replaced with
-
SQL (implemented in the server).
We do not yet support
- subqueries (which can be imitated with user defined
-
SQL functions
). Aggregates have been
- re-implemented. We also added support for ``GROUP BY''.
- The
libpq interface
is still available for
C
+ The query language
Postquel was replaced with
+
SQL (implemented in the server).
Subqueries were not supported until PostgreSQL (see below), but they
+
could be imitated in Postgres95 with user-defined
+
SQL functions
. Aggregates were
+ re-implemented. Support for ``GROUP BY'' was also added.
+ The
libpq interface
remained available for
C
programs.
- In addition to the monitor program, we provide a new
- program (
psql) which supports
GNU readline.
+In addition to the monitor program, a new program
+(
psql) was provided for interactive SQL queries
- We added a new front-end library, libpgtcl, that
- support
s Tcl-based clients. A sample shell,
- pgtclsh, provide
s new Tcl commands to interface
tcl
+ A new front-end library, libpgtcl,
+ support
ed Tcl-based clients. A sample shell,
+ pgtclsh, provide
d new Tcl commands to interface
tcl
programs with the
Postgres95 backend.
- The large object interface has been overhauled. We
- kept Inversion large objects as the only mechanism
- for storing large objects. (This is not to be
- confused with the Inversion file system which has been
- removed.)
+The large object interface was overhauled. The Inversion large objects were
+the only mechanism for storing large objects.
+(The Inversion file system was removed.)
- The instance-level rule system has been removed.
- Rules are still available as rewrite rules.
+ The instance-level rule system was removed.
+ Rules were still available as rewrite rules.
A short tutorial introducing regular
SQL features as
- well as those of ours is distributed with the source
- code.
+ well as those of
Postgres95 was
+ distributed with the source code.
-
GNU make (instead of
BSD make) is used for the
- build. Also,
Postgres95 can be compiled with an
- unpatched
gcc (data alignment of doubles has been
- fixed).
+
GNU make (instead of
BSD make) was used
+for the build. Also,
Postgres95 could be
+compiled with an unpatched
gcc
+(data alignment of doubles was fixed).
-By 1996, it became clear that the name Postgres95
would not stand
-the test of time. A new name,
PostgreSQL,
-was chosen to reflect the
-relationship between original
Postgres
-and the more recent
-versions with
SQL capability.
-At the same time, the version numbering
-was reset to start at 6.0,
-putting the numbers back into the sequence originally begun by
+By 1996, it became clear that the name Postgres95
would
+not stand the test of time. We chose a new name,
+
PostgreSQL, to reflect the relationship
+between the original
Postgres and the more
+recent versions with
SQL capability. At the same
+time, we set the version numbering to start at 6.0, putting the
+numbers back into the sequence originally begun by the
-The emphasis on development for the v1.0.x releases of
-was on stabilizing the backend code.
-With the v6.x series of
PostgreSQL,
-the emphasis has shifted from
-identifying and understanding existing problems in the backend
-to augmenting features and capabilities, although
+The emphasis during development of
Postgres95
+was on identifying and understanding existing problems in the backend code.
+the emphasis has shifted to augmenting features and capabilities, although
work continues in all areas.
-Major enhancements include:
+Major enhancements in
PostgreSQL include:
+Table-level locking has been replaced with multi-version concurrency control,
+which allows readers to continue reading consistent data during writer activity
+and enables hot backups from pg_dump while the database stays available for
+queries.
+
+
+
Important backend features, including subselects, defaults,
constraints, and triggers, have been implemented.