CINXE.COM
PostgreSQL: Documentation: 17: 2. A Brief History of PostgreSQL
<!doctype html> <html lang="en"> <head> <title>PostgreSQL: Documentation: 17: 2. A Brief History of PostgreSQL</title> <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> <meta http-equiv="Content-Type" content="text/xhtml; charset=utf-8" /> <meta name="theme-color" content="#336791"/> <meta name="copyright" content="The PostgreSQL Global Development Group" /> <meta property="og:url" content="https://www.postgresql.org/docs/17/history.html" /> <meta property="og:type" content="article" /> <meta property="article:published_time" content="2024-11-21T14:03:57" /> <meta property="og:image" content="https://www.postgresql.org/media/img/about/press/elephant.png" /> <meta property="og:title" content="2. A Brief History of PostgreSQL" /> <meta property="og:description" content="2.&nbsp;A Brief History of PostgreSQL # 2.1. The Berkeley POSTGRES Project 2.2. Postgres95 2.3. PostgreSQL The object-relational database management system …" /> <meta property="og:site_name" content="PostgreSQL Documentation" /> <link rel="canonical" href="https://www.postgresql.org/docs/current/history.html" /> <link href="/media/css/fontawesome.css?18db9df6" rel="stylesheet"> <link rel="stylesheet" href="/media/css/bootstrap-4.4.1.min.css"> <link rel="shortcut icon" href="/favicon.ico" /> <link rel="stylesheet" type="text/css" href="/dyncss/base.css?18db9df6"> <script src="/media/js/theme.js"></script> </head> <body> <div class="container-fluid"> <div class="row justify-content-md-center"> <div class="col"> <!-- Header --> <nav class="navbar navbar-expand-lg navbar-light bg-light"> <a class="navbar-brand p-0" href="/"> <img class="logo" src="/media/img/about/press/elephant.png" alt="PostgreSQL Elephant Logo"> </a> <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#pgNavbar" aria-controls="pgNavbar" aria-expanded="false" aria-label="Toggle navigation"> <span class="navbar-toggler-icon"></span> </button> <div class="collapse navbar-collapse" id="pgNavbar"> <ul class="navbar-nav mr-auto"> <li class="nav-item p-2"><a href="/" title="Home">Home</a></li> <li class="nav-item p-2"><a href="/about/" title="About">About</a></li> <li class="nav-item p-2"><a href="/download/" title="Download">Download</a></li> <li class="nav-item p-2"><a href="/docs/" title="Documentation">Documentation</a></li> <li class="nav-item p-2"><a href="/community/" title="Community">Community</a></li> <li class="nav-item p-2"><a href="/developer/" title="Developers">Developers</a></li> <li class="nav-item p-2"><a href="/support/" title="Support">Support</a></li> <li class="nav-item p-2"><a href="/about/donate/" title="Donate">Donate</a></li> <li class="nav-item p-2"><a href="/account/" title="Your account">Your account</a></li> </ul> <form role="search" method="get" action="/search/"> <div class="input-group"> <input id="q" name="q" type="text" size="20" maxlength="255" accesskey="s" class="form-control" placeholder="Search for..."> <span class="input-group-btn"> <button class="btn btn-default" type="submit"><i class="fas fa-search"></i></button> </span> </div><!-- /input-group --> </form> <form id="form-theme" class="form-inline d-none"> <button id="btn-theme" class="btn btn-default ml-1" type="button"></button> </form> </div> </nav> </div> </div> <div class="row justify-content-center pg-shout-box"> <div class="col text-white text-center">November 21, 2024: <a href="/about/news/postgresql-172-166-1510-1415-1318-and-1222-released-2965/"> PostgreSQL 17.2, 16.6, 15.10, 14.15, 13.18, and 12.22 Released! </a> </div> </div> </div> <div class="container-fluid margin"> <div class="row"> <div id="pgContentWrap" class="col-11"> <div class="row"> <div class="col-md-6 mb-2"> <div class="row"> <div class="col"> <div> <a href="/docs/" title="Documentation">Documentation</a> → <a href="/docs/17/index.html">PostgreSQL 17</a> </div> </div> </div> <div class="row"> <div class="col"> Supported Versions: <a href="/docs/current/history.html" title="PostgreSQL 17 - 2. A Brief History of PostgreSQL" class="docs-version-selected">Current</a> (<a href="/docs/17/history.html" title="PostgreSQL 17 - 2. A Brief History of PostgreSQL" class="docs-version-selected">17</a>) / <a href="/docs/16/history.html" title="PostgreSQL 16 - 2. A Brief History of PostgreSQL" >16</a> / <a href="/docs/15/history.html" title="PostgreSQL 15 - 2. A Brief History of PostgreSQL" >15</a> / <a href="/docs/14/history.html" title="PostgreSQL 14 - 2. A Brief History of PostgreSQL" >14</a> / <a href="/docs/13/history.html" title="PostgreSQL 13 - 2. A Brief History of PostgreSQL" >13</a> </div> </div> <div class="row"> <div class="col"> Development Versions: <a href="/docs/devel/history.html" title="PostgreSQL devel - 2. A Brief History of PostgreSQL" rel="nofollow">devel</a> </div> </div> <div class="row"> <div class="col-12"> Unsupported versions: <a href="/docs/12/history.html" title="PostgreSQL 12 - 2. A Brief History of PostgreSQL" rel="nofollow">12</a> / <a href="/docs/11/history.html" title="PostgreSQL 11 - 2. A Brief History of PostgreSQL" rel="nofollow">11</a> / <a href="/docs/10/history.html" title="PostgreSQL 10 - 2. A Brief History of PostgreSQL" rel="nofollow">10</a> / <a href="/docs/9.6/history.html" title="PostgreSQL 9.6 - 2. A Brief History of PostgreSQL" rel="nofollow">9.6</a> / <a href="/docs/9.5/history.html" title="PostgreSQL 9.5 - 2. A Brief History of PostgreSQL" rel="nofollow">9.5</a> / <a href="/docs/9.4/history.html" title="PostgreSQL 9.4 - 2. A Brief History of PostgreSQL" rel="nofollow">9.4</a> / <a href="/docs/9.3/history.html" title="PostgreSQL 9.3 - 2. A Brief History of PostgreSQL" rel="nofollow">9.3</a> / <a href="/docs/9.2/history.html" title="PostgreSQL 9.2 - 2. A Brief History of PostgreSQL" rel="nofollow">9.2</a> / <a href="/docs/9.1/history.html" title="PostgreSQL 9.1 - 2. A Brief History of PostgreSQL" rel="nofollow">9.1</a> / <a href="/docs/9.0/history.html" title="PostgreSQL 9.0 - 2. A Brief History of PostgreSQL" rel="nofollow">9.0</a> / <a href="/docs/8.4/history.html" title="PostgreSQL 8.4 - 2. A Brief History of PostgreSQL" rel="nofollow">8.4</a> / <a href="/docs/8.3/history.html" title="PostgreSQL 8.3 - 2. A Brief History of PostgreSQL" rel="nofollow">8.3</a> / <a href="/docs/8.2/history.html" title="PostgreSQL 8.2 - 2. A Brief History of PostgreSQL" rel="nofollow">8.2</a> / <a href="/docs/8.1/history.html" title="PostgreSQL 8.1 - 2. A Brief History of PostgreSQL" rel="nofollow">8.1</a> / <a href="/docs/8.0/history.html" title="PostgreSQL 8.0 - 2. A Brief History of PostgreSQL" rel="nofollow">8.0</a> / <a href="/docs/7.4/history.html" title="PostgreSQL 7.4 - 2. A Brief History of PostgreSQL" rel="nofollow">7.4</a> / <a href="/docs/7.3/history.html" title="PostgreSQL 7.3 - 2. A Brief History of PostgreSQL" rel="nofollow">7.3</a> / <a href="/docs/7.2/history.html" title="PostgreSQL 7.2 - 2. A Brief History of PostgreSQL" rel="nofollow">7.2</a> / <a href="/docs/7.1/history.html" title="PostgreSQL 7.1 - 2. A Brief History of PostgreSQL" rel="nofollow">7.1</a> </div> </div> </div> <div class="col-md-6 col-lg-5 offset-lg-1"> <form id="docSearchForm" role="search" method="get" action="/search/"> <input type="hidden" name="u" value="/docs/17/" /> <div class="input-group"> <input type="text" id="q" name="q" class="form-control" placeholder="Search the documentation for..."/> <span class="input-group-btn"> <button class="btn btn-default" type="submit"><i class="fas fa-search"></i></button> </span> </div><!-- /input-group --> </form> </div> </div> <div id="docContent"> <div class="navheader"> <table width="100%" summary="Navigation header"> <tr> <th colspan="5" align="center">2. A Brief History of <span class="productname">PostgreSQL</span></th> </tr> <tr> <td width="10%" align="left"><a accesskey="p" href="intro-whatis.html" title="1. What Is PostgreSQL?">Prev</a> </td> <td width="10%" align="left"><a accesskey="u" href="preface.html" title="Preface">Up</a></td> <th width="60%" align="center">Preface</th> <td width="10%" align="right"><a accesskey="h" href="index.html" title="PostgreSQL 17.2 Documentation">Home</a></td> <td width="10%" align="right"> <a accesskey="n" href="notation.html" title="3. Conventions">Next</a></td> </tr> </table> <hr /> </div> <div class="sect1" id="HISTORY"> <div class="titlepage"> <div> <div> <h2 class="title" style="clear: both">2. A Brief History of <span class="productname">PostgreSQL</span> <a href="#HISTORY" class="id_link">#</a></h2> </div> </div> </div> <div class="toc"> <dl class="toc"> <dt><span class="sect2"><a href="history.html#HISTORY-BERKELEY">2.1. The Berkeley <span class="productname">POSTGRES</span> Project</a></span></dt> <dt><span class="sect2"><a href="history.html#HISTORY-POSTGRES95">2.2. <span class="productname">Postgres95</span></a></span></dt> <dt><span class="sect2"><a href="history.html#HISTORY-POSTGRESQL">2.3. <span class="productname">PostgreSQL</span></a></span></dt> </dl> </div><a id="id-1.3.5.2" class="indexterm" name="id-1.3.5.2"></a> <p>The object-relational database management system now known as <span class="productname">PostgreSQL</span> is derived from the <span class="productname">POSTGRES</span> package written at the University of California at Berkeley. With decades of development behind it, <span class="productname">PostgreSQL</span> is now the most advanced open-source database available anywhere.</p> <div class="sect2" id="HISTORY-BERKELEY"> <div class="titlepage"> <div> <div> <h3 class="title">2.1. The Berkeley <span class="productname">POSTGRES</span> Project <a href="#HISTORY-BERKELEY" class="id_link">#</a></h3> </div> </div> </div><a id="id-1.3.5.4.2" class="indexterm" name="id-1.3.5.4.2"></a> <p>The <span class="productname">POSTGRES</span> project, led by Professor Michael Stonebraker, was sponsored by the Defense Advanced Research Projects Agency (<acronym class="acronym">DARPA</acronym>), the Army Research Office (<acronym class="acronym">ARO</acronym>), the National Science Foundation (<acronym class="acronym">NSF</acronym>), and ESL, Inc. The implementation of <span class="productname">POSTGRES</span> began in 1986. The initial concepts for the system were presented in <a class="xref" href="biblio.html#STON86">[ston86]</a>, and the definition of the initial data model appeared in <a class="xref" href="biblio.html#ROWE87">[rowe87]</a>. The design of the rule system at that time was described in <a class="xref" href="biblio.html#STON87A">[ston87a]</a>. The rationale and architecture of the storage manager were detailed in <a class="xref" href="biblio.html#STON87B">[ston87b]</a>.</p> <p><span class="productname">POSTGRES</span> has undergone several major releases since then. The first <span class="quote">“<span class="quote">demoware</span>”</span> system became operational in 1987 and was shown at the 1988 <acronym class="acronym">ACM-SIGMOD</acronym> Conference. Version 1, described in <a class="xref" href="biblio.html#STON90A">[ston90a]</a>, was released to a few external users in June 1989. In response to a critique of the first rule system (<a class="xref" href="biblio.html#STON89">[ston89]</a>), the rule system was redesigned (<a class="xref" href="biblio.html#STON90B">[ston90b]</a>), and Version 2 was released in June 1990 with the new rule system. Version 3 appeared in 1991 and added support for multiple storage managers, an improved query executor, and a rewritten rule system. For the most part, subsequent releases until <span class="productname">Postgres95</span> (see below) focused on portability and reliability.</p> <p><span class="productname">POSTGRES</span> has been used to implement many different research and production applications. These include: a financial data analysis system, a jet engine performance monitoring package, an asteroid tracking database, a medical information database, and several geographic information systems. <span class="productname">POSTGRES</span> has also been used as an educational tool at several universities. Finally, Illustra Information Technologies (later merged into <a class="ulink" href="https://www.ibm.com/analytics/informix" target="_top"><span class="productname">Informix</span></a>, which is now owned by <a class="ulink" href="https://www.ibm.com/" target="_top">IBM</a>) picked up the code and commercialized it. In late 1992, <span class="productname">POSTGRES</span> became the primary data manager for the <a class="ulink" href="http://meteora.ucsd.edu/s2k/s2k_home.html" target="_top">Sequoia 2000 scientific computing project</a>.</p> <p>The size of the external user community nearly doubled during 1993. It became increasingly obvious that maintenance of the prototype code and support was taking up large amounts of time that should have been devoted to database research. In an effort to reduce this support burden, the Berkeley <span class="productname">POSTGRES</span> project officially ended with Version 4.2.</p> </div> <div class="sect2" id="HISTORY-POSTGRES95"> <div class="titlepage"> <div> <div> <h3 class="title">2.2. <span class="productname">Postgres95</span> <a href="#HISTORY-POSTGRES95" class="id_link">#</a></h3> </div> </div> </div><a id="id-1.3.5.5.2" class="indexterm" name="id-1.3.5.5.2"></a> <p>In 1994, Andrew Yu and Jolly Chen added an SQL language interpreter to <span class="productname">POSTGRES</span>. Under a new name, <span class="productname">Postgres95</span> was subsequently released to the web to find its own way in the world as an open-source descendant of the original <span class="productname">POSTGRES</span> Berkeley code.</p> <p><span class="productname">Postgres95</span> code was completely ANSI C and trimmed in size by 25%. Many internal changes improved performance and maintainability. <span class="productname">Postgres95</span> release 1.0.x ran about 30–50% faster on the Wisconsin Benchmark compared to <span class="productname">POSTGRES</span>, Version 4.2. Apart from bug fixes, the following were the major enhancements:</p> <div class="itemizedlist"> <ul class="itemizedlist" style="list-style-type: disc;"> <li class="listitem"> <p>The query language PostQUEL was replaced with <acronym class="acronym">SQL</acronym> (implemented in the server). (Interface library <a class="link" href="libpq.html" title="Chapter 32. libpq — C Library">libpq</a> was named after PostQUEL.) Subqueries were not supported until <span class="productname">PostgreSQL</span> (see below), but they could be imitated in <span class="productname">Postgres95</span> with user-defined <acronym class="acronym">SQL</acronym> functions. Aggregate functions were re-implemented. Support for the <code class="literal">GROUP BY</code> query clause was also added.</p> </li> <li class="listitem"> <p>A new program (<span class="application">psql</span>) was provided for interactive SQL queries, which used <acronym class="acronym">GNU</acronym> <span class="application">Readline</span>. This largely superseded the old <span class="application">monitor</span> program.</p> </li> <li class="listitem"> <p>A new front-end library, <code class="filename">libpgtcl</code>, supported <acronym class="acronym">Tcl</acronym>-based clients. A sample shell, <code class="command">pgtclsh</code>, provided new Tcl commands to interface <span class="application">Tcl</span> programs with the <span class="productname">Postgres95</span> server.</p> </li> <li class="listitem"> <p>The large-object interface was overhauled. The inversion large objects were the only mechanism for storing large objects. (The inversion file system was removed.)</p> </li> <li class="listitem"> <p>The instance-level rule system was removed. Rules were still available as rewrite rules.</p> </li> <li class="listitem"> <p>A short tutorial introducing regular <acronym class="acronym">SQL</acronym> features as well as those of <span class="productname">Postgres95</span> was distributed with the source code</p> </li> <li class="listitem"> <p><acronym class="acronym">GNU</acronym> make (instead of <acronym class="acronym">BSD</acronym> make) was used for the build. Also, <span class="productname">Postgres95</span> could be compiled with an unpatched <span class="productname">GCC</span> (data alignment of doubles was fixed).</p> </li> </ul> </div> </div> <div class="sect2" id="HISTORY-POSTGRESQL"> <div class="titlepage"> <div> <div> <h3 class="title">2.3. <span class="productname">PostgreSQL</span> <a href="#HISTORY-POSTGRESQL" class="id_link">#</a></h3> </div> </div> </div> <p>By 1996, it became clear that the name <span class="quote">“<span class="quote">Postgres95</span>”</span> would not stand the test of time. We chose a new name, <span class="productname">PostgreSQL</span>, to reflect the relationship between the original <span class="productname">POSTGRES</span> and the more recent versions with <acronym class="acronym">SQL</acronym> 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 Berkeley <span class="productname">POSTGRES</span> project.</p> <p>Many people continue to refer to <span class="productname">PostgreSQL</span> as <span class="quote">“<span class="quote">Postgres</span>”</span> (now rarely in all capital letters) because of tradition or because it is easier to pronounce. This usage is widely accepted as a nickname or alias.</p> <p>The emphasis during development of <span class="productname">Postgres95</span> was on identifying and understanding existing problems in the server code. With <span class="productname">PostgreSQL</span>, the emphasis has shifted to augmenting features and capabilities, although work continues in all areas.</p> <p>Details about what has happened in <span class="productname">PostgreSQL</span> since then can be found in <a class="xref" href="release.html" title="Appendix E. Release Notes">Appendix E</a>.</p> </div> </div> <div class="navfooter"> <hr /> <table width="100%" summary="Navigation footer"> <tr> <td width="40%" align="left"><a accesskey="p" href="intro-whatis.html" title="1. What Is PostgreSQL?">Prev</a> </td> <td width="20%" align="center"><a accesskey="u" href="preface.html" title="Preface">Up</a></td> <td width="40%" align="right"> <a accesskey="n" href="notation.html" title="3. Conventions">Next</a></td> </tr> <tr> <td width="40%" align="left" valign="top">1. What Is <span class="productname">PostgreSQL</span>? </td> <td width="20%" align="center"><a accesskey="h" href="index.html" title="PostgreSQL 17.2 Documentation">Home</a></td> <td width="40%" align="right" valign="top"> 3. Conventions</td> </tr> </table> </div> </div> <div id="docComments"> <h2>Submit correction</h2> <p> If you see anything in the documentation that is not correct, does not match your experience with the particular feature or requires further clarification, please use <a href="/account/comments/new/17/history.html/" rel="nofollow">this form</a> to report a documentation issue. </p> </div> </div> <!-- pgContentWrap --> </div> </div> <!-- Footer --> <footer id="footer"> <div class="container"> <div class="row"> <div class="col-md-12"> <ul> <li><a href="https://twitter.com/postgresql"><img src="/media/img/atpostgresql.png" alt="@postgresql"></a></li> <li><a href="https://git.postgresql.org/gitweb/?p=postgresql.git"><img src="/media/img/git.png" alt="Git"></a></li> </ul> </div> </div> </div> <!-- Copyright --> <div class="container"> <a href="/about/privacypolicy">Privacy Policy</a> | <a href="/about/policies/coc/">Code of Conduct</a> | <a href="/about/">About PostgreSQL</a> | <a href="/about/contact/">Contact</a><br/> <p>Copyright © 1996-2024 The PostgreSQL Global Development Group</p> </div> </footer> <script src="/media/js/jquery-3.4.1.slim.min.js"></script> <script src="/media/js/popper-1.16.0.min.js"></script> <script src="/media/js/bootstrap-4.4.1.min.js"></script> <script src="/media/js/main.js?18db9df6"></script> </body> </html>