Timeline of PostgreSQL
PostgreSQL’s evolution from Berkeley’s POSTGRES research project in 1986 to a community database with replication, extensibility, document storage, and asynchronous reads in 2025.
- Category
- Engineering & Technology
- Tag
- computing
- Events
- 21 events 1986 – 2025
- Generated
- by gpt-6
1986: Berkeley begins the POSTGRES project
Michael Stonebraker’s team at the University of California, Berkeley began implementing POSTGRES as a successor to Ingres. The research explored richer data types, extensibility, and rules beyond the capabilities of conventional relational systems.
https://en.wikipedia.org/wiki/PostgreSQL1989: POSTGRES reaches external users
The Berkeley team released POSTGRES version 1 to a small group of outside users. The research prototype became a system that others could evaluate and use, beginning the path from university experiment to a wider database community.
https://en.wikipedia.org/wiki/PostgreSQL1995: Postgres95 brings SQL to the project
Andrew Yu and Jolly Chen released Postgres95 after replacing the original POSTQUEL interpreter with support for Structured Query Language (SQL). The release also introduced the psql interactive client and opened a new phase of development outside the original research project.
https://en.wikipedia.org/wiki/PostgreSQL1996: Community developers adopt the PostgreSQL name
A growing group of contributors took responsibility for the Berkeley-derived code and adopted the name PostgreSQL. The name reflected its Structured Query Language support while preserving its connection to POSTGRES.
https://en.wikipedia.org/wiki/PostgreSQL1997: PostgreSQL 6.0 begins the new release line
PostgreSQL 6.0 became the first release under the new name. A distributed contributor community continued improving the inherited database rather than rebuilding it as a proprietary product.
https://en.wikipedia.org/wiki/PostgreSQL1999: Multiversion concurrency reduces reader-writer blocking
PostgreSQL 6.5 introduced multiversion concurrency control. Keeping multiple row versions let transactions read consistent snapshots while other transactions changed data, reducing the need for readers and writers to block one another.
https://en.wikipedia.org/wiki/Multiversion_concurrency_control2000: Foreign keys strengthen relational integrity
PostgreSQL 7.0 added foreign-key constraints. Applications could ask the database to enforce relationships between tables, reducing dependence on application code to prevent references to nonexistent records.
https://en.wikipedia.org/wiki/Foreign_key2001: Write-ahead logging changes crash recovery
PostgreSQL 7.1 introduced write-ahead logging, recording changes in a log before affected data pages were written. Flushing the log at commit instead of every changed data page reduced the performance cost of crash safety and laid a foundation for later backup and replication capabilities.
https://en.wikipedia.org/wiki/Write-ahead_logging2001: PostGIS adds geographic data support
Refractions Research released PostGIS as an extension for PostgreSQL. Geographic objects and spatial operations made the database useful for mapping and location-based applications while demonstrating the value of its extensibility.
https://en.wikipedia.org/wiki/PostGIS2005: PostgreSQL gains native Windows support
PostgreSQL 8.0 added a native Windows server alongside savepoints and point-in-time recovery. Native support expanded deployment options, while recovery from archived logs gave administrators more control over restoring a database.
https://en.wikipedia.org/wiki/PostgreSQL2008: Full-text search enters the core
PostgreSQL 8.3 integrated full-text search previously available through the tsearch2 module. Applications could index and search natural-language documents using database-managed dictionaries, ranking, and text-search data types.
https://en.wikipedia.org/wiki/Full-text_search2009: Recursive and window queries arrive
PostgreSQL 8.4 added recursive common table expressions and window functions. Hierarchical traversal and calculations across related rows could be expressed directly in queries rather than reconstructed with application-side loops.
https://en.wikipedia.org/wiki/PostgreSQL2010: Streaming replication supports readable standbys
PostgreSQL 9.0 introduced streaming replication and hot standby. Log records could be sent continuously to replicas, and standby servers could answer read-only queries while replaying changes from the primary.
https://en.wikipedia.org/wiki/PostgreSQL2011: Extensions gain a managed installation system
PostgreSQL 9.1 introduced a formal extension mechanism, querying through foreign tables, and synchronous replication. Packaging database additions as extensions made installing and updating capabilities such as PostGIS easier to manage.
https://en.wikipedia.org/wiki/PostgreSQL2012: JSON becomes a native data type
PostgreSQL 9.2 added a type for JavaScript Object Notation (JSON) and functions for producing it from relational data. The database could validate stored JSON documents while applications continued to use tables and transactions.
https://en.wikipedia.org/wiki/PostgreSQL2014: JSONB supports indexed document queries
PostgreSQL 9.4 introduced JSONB, a decomposed representation of JavaScript Object Notation documents with indexing support. The release also added logical decoding, exposing database changes for replication and integration tools.
https://en.wikipedia.org/wiki/PostgreSQL2016: Conflict handling and parallel queries arrive
PostgreSQL 9.5 introduced INSERT ON CONFLICT for handling competing inserts. Later in the year, PostgreSQL 9.6 added initial parallel-query support, allowing eligible scans, joins, and aggregations to use multiple worker processes.
https://en.wikipedia.org/wiki/PostgreSQL2017: Logical replication and declarative partitioning ship
PostgreSQL 10 added built-in publication-and-subscription logical replication and declarative table partitioning. These features simplified selective data replication and managing large tables divided into smaller physical pieces.
https://en.wikipedia.org/wiki/PostgreSQL2018: Query execution gains optional compilation
PostgreSQL 11 introduced optional just-in-time compilation using LLVM, along with stored procedures and expanded partitioning support. Compilation could accelerate expression evaluation in suitable long-running queries, with a preparation cost that made it less useful for some short queries.
https://en.wikipedia.org/wiki/PostgreSQL2022: MERGE joins the query language
PostgreSQL 15 introduced the MERGE command, letting one statement conditionally insert, update, or delete rows based on a source relation. The release also improved sorting and logical replication.
https://en.wikipedia.org/wiki/Merge_(SQL)2025: Asynchronous reads reshape storage access
PostgreSQL 18 introduced an asynchronous input/output subsystem for supported operations. The release also added virtual generated columns and preserved planner statistics during upgrades, improving both query execution and the transition between major versions.
https://en.wikipedia.org/wiki/PostgreSQL