2ndQuadrant’s Passion for PostgreSQL
2ndQuadrant was founded in 2001 by Simon Riggs, a major developer and committer of the PostgreSQL project. The vision was to create a business that bridges the database needs of enterprise users and open source contributions to PostgreSQL. Building on that vision, over the past 15+ years, 2ndQuadrant has widely contributed to the growth and development of PostgreSQL, earning us the prestigious title of Major Sponsors of the community.
The 2ndQuadrant team has since grown to host the largest collective of PostgreSQL experts in a single organization. Our engineers and developers are globally recognized for their expertise in PostgreSQL products and services. We are well represented in the community and many of our experts are major contributors and committers to the PostgreSQL project. Collectively, we host over 500 person-years of PostgreSQL expertise.
Below is a summary of our contributions to open source PostgreSQL over the past years.
PostgreSQL 13 (released September 2020)
- Implement incremental sorting – James Coleman / Alexander Korotkov / Tomas Vondra
- Add system view pg_stat_progress_analyze to report ANALYZE progress – Álvaro Herrera / Tatsuro Yamada / Vinayak Pokale
- Allow partitionwise joins to happen in more cases – Ashutosh Bapat / Etsuro Fujita, Amit Langote / Tom Lane
- Allow BEFORE row-level triggers on partitioned tables – Álvaro Herrera
- Allow use of multiple extended statistics objects in a single query – Tomas Vondra
- Allow use of extended statistics objects for OR clauses and IN/ANY constant lists – Pierre Ducroquet / Tomas Vondra
- Allow setting statistics target for extended statistics – Tomas Vondra
- Improve control of prepared statement parameter logging – Alexey Bashtanov / Álvaro Herrera
- Improve cases where pruning of partitions can happen – Yuzuko Hosoya / Amit Langote / Álvaro Herrera
- Add SQL functions NORMALIZE() to normalize Unicode strings, and IS NORMALIZED to check for normalization – Peter Eisentraut
- Add alternate version of jsonb_setI() with special NULL handling – Andrew Dunstan
- Add function gen_random_uuid() to generate version 4 UUIDs – Peter Eisentraut
- Generate an error if recovery does not reach the specified recovery target – Leif Gunnar Erlandsen / Peter Eisentraut
- Add columns to the pg_stat_replication system view to report how much logical decoding information has been spilled to disk – Tomas Vondra
- Create pg_stat_slru system view to monitor internal SLRU caches – Tomas Vondra
- Add wait events RecoveryConflictSnapshot and RecoveryConflictTablespace to monitor recovery conflicts – Masahiko Sawada
- Allow vacuum commands run by vacuumdb to operate in parallel mode – Masahiko Sawada
- Add CREATE DATABASE LOCALE option – Peter Eisentraut
- Add ALTER TABLE clause DROP EXPRESSION to remove generated properties from columns – Peter Eisentraut
- Allow DER-encoded client certificates – Craig Ringer / Andrew Dunstan
- Allow postgres_fdw to use certificate authentication – Craig Ringer
- Allow function call backtraces of errors to be logged – Peter Eisentraut / Álvaro Herrera
- Add a glossary to the documentation – Corey Huinker / Jürgen Purtz / Roger Harkavy / Álvaro Herrera
- Add pageinspect functions to output t_infomask/t_infomask2 values in human-readable format – Craig Ringer / Masahiko Sawada / Michael Paquier
- Allow control over how much memory is used by logical decoding before it is spilled to disk – Tomas Vondra / Dilip Kumar / Amit Kapila
- Allow specification of passwords to unlock client certificates – Craig Ringer / Andrew Dunstan
- Add the PostgreSQL home page to command-line –help output – Peter Eisentraut
- Add the ability to remove an object’s dependency on an extension – Álvaro Herrera
- Add the backend type to csvlog and optionally log_line_prefix log output – Peter Eisentraut
- Enable Unix-domain sockets support on Windows – Peter Eisentraut
- Change the default minimum TLS version from 1.0 to 1.2 – Peter Eisentraut
- Allow allow_system_table_mods to be changed after server start – Peter Eisentraut
- Disallow non-superusers from modifying system tables when allow_system_table_mods is set – Peter Eisentraut
- Allow WAL receivers use a temporary replication slot if a permanent one is not specified – Peter Eisentraut / Sergei Kornilov
- Add ALTER TYPE options useful for extensions, like TOAST and I/O functions control – Tomas Vondra / Tom Lane
- Add C structure member tg_updatedcols to record updated columns to C triggers – Peter Eisentraut
- Upgrade to use DocBook 4.5 – Peter Eisentraut
- Add build support for MSYS2 – Peter Eisentraut
- Remove support for non-ELF BSD systems – Peter Eisentraut
- Remove support for Python versions 2.5.X and earlier – Peter Eisentraut
- Remove support option –disable-float8-byval – Peter Eisentraut
- Remove configure option –disable-float4-byval – Peter Eisentraut
- Add TLS init hook – Andrew Dunstan
- Allow building with no predefined Unix-domain socket directory – Peter Eisentraut
- Use operating system functions to cleanly erase memory that contains sensitive information – Peter Eisentraut
- Allow non-superusers to connect to postgres_fdw foreign servers without using a password – Craig Ringer
- Make VACUUM buffer counters 64-bits wide to avoid overflow – Álvaro Herrera
* The features listed above have been taken from the Release Notes for PostgreSQL 13 from www.postgresql.org available here.
PostgreSQL 12 (released October 2019)
Version 12 of PostgreSQL, the world’s most advanced open source database, was released on October 3rd, 2019. This release included remarkable performance improvements to its indexing and partitioning capabilities system. Among the most important features presented in this release, PostgreSQL 12 now supports the SQL/JSON path language, which allows execution of complex queries on JSON values using an SQL-standard language.
The important features and enhancements contributed by 2ndQuadrant to PostgreSQL 12 are listed below:
- Move recovery.conf settings into postgresql.conf – Fujii Masao/ Simon Riggs / Abhijit Menon-Sen / Sergei Kornilov.
- Improve performance of many operations on partitioned tables – Amit Langote / David Rowley / Tom Lane / Álvaro Herrera.
- Allow foreign keys to reference partitioned tables – Álvaro Herrera.
- Add partition introspection functions – Michaël Paquier / Álvaro Herrera / Amit Langote.
- Allow CREATE STATISTICS to create most-common-value statistics for multiple columns – Tomas Vondra.
- Inline calls to LEAST and GREATEST to improve optimization – Vik Fearing.
- Speed up keyword lookup – John Naylor / Joerg Sonnenberger / Tom Lane.
- Report progress of CREATE INDEX and REINDEX operations – Álvaro Herrera / Peter Eisentraut.
- Add REINDEX CONCURRENTLY to allow reindexing concurrently – Michaël Paquier / Andreas Karlsson / Peter Eisentraut.
- Add support for generated columns – Peter Eisentraut.
- Allow enumerated values to be added in more transaction types – Andrew Dunstan / Tom Lane / Thomas Munro.
- Allow the creation of collations that report string equality for strings that are not byte-wise equal – Peter Eisentraut.
- Add EXPLAIN option SETTINGS to output non-default optimizer settings – Tomas Vondra.
- Add colorization to the output of command-line utilities – Peter Eisentraut.
- Show the manual page URL in psql’s help output – Peter Eisentraut.
- Allow pg_upgrade to use the file system cloning feature – Peter Eisentraut.
- Add –exclude-database option to pg_dumpall – Andrew Dunstan.
- Add CREATE ACCESS METHOD command to create new table types – Andres Freund / Haribabu Kommi / Álvaro Herrera / Alexander Korotkov / Dmitry Dolgov.
A detailed list of 2ndQuadrant’s contributions to PostgreSQL 12 is available here.
* The features listed above have been taken from the Release Notes for PostgreSQL 12 from www.postgresql.org available here.
PostgreSQL 11 (released October 2018)
Version 11 of PostgreSQL was released in October 2018. This release presented important improvements in partitioning and parallelism, two critical areas for any relational database system. Partitioning in PostgreSQL 11 supports unique indexes and foreign keys, and allows the creation of equivalent indexes. This version also includes several improvements in parallelism, present in PostgreSQL since version 9.6.
The most important features and enhancements contributed to this major PostgreSQL release by 2ndQuadrant are listed below:
- Implementation of SQL procedures, including transaction control. Transactions can be started and committed in PL/pgSQL, PL/Perl, PL/Python and PL/Tcl procedures, as well as via SPI – Peter Eisentraut
- Allow ALTER TABLE to add a column with a non-null default without a table rewrite – Andrew Dunstan/ Serge Rielau
- Enable index creation on partitioned tables, with automatic propagation to partitions – Álvaro Herrera
- Making partition elimination faster and improve its applicability – David Rowley / Amit Langote / Beena Emerson / Dilip Kumar
- Replicate TRUNCATE activity when using logical replication – Simon Riggs / Marco Nenciarini / Peter Eisentraut
- Reduce WAL retention to span one checkpoint rather than two – Simon Riggs
- Allow replication slots to be advanced programmatically, alongside consumption by subscribers – Petr Jelínek
- Add server setting ssl_passphrase_command to allow supplying of the passphrase for SSL key files – Peter Eisentraut
- Add storage parameter toast_tuple_target to control the minimum length before TOAST storage will be considered for new rows – Simon Riggs
- Add SHA-2 family of hash functions – Peter Eisentraut
- Add a generational memory allocator which is optimized for serial allocation/deallocation – Tomas Vondra
- Allow UNIQUE indexes on partitioned tables if the partition key guarantees uniqueness – Álvaro Herrera / Amit Langote
- Allow foreign keys on partitioned tables – Álvaro Herrera
A detailed list of 2ndQuadrant’s contributions to PostgreSQL 11 is available here.
*The features listed above have been taken from the Release Notes for PostgreSQL 11 from www.postgresql.org available here.
PostgreSQL 10 (released October 2017)
On October 2017, version 10 was released, presenting significant enhancements and introducing important new features to achieve faster data access, management and analysis. This major release also marks the change in the notation used to scheme versions to a two-digit format.
The features and enhancements contributed by 2ndQuadrant to PostgreSQL 10 are listed below:
- Native Logical Replication – Petr Jelinek
- Optimization using multi-column statistics – Tomas Vondra
- IDENTITY columns and Sequence improvements – Peter Eisentraut
- ICU support for better national language support – Peter Eisentraut
- BRIN index improvements – Álvaro Herrera
- Improvements in JSONB and XML handling – Andrew Dunstan /Alvaro Herrera / Pavel Stehule
- Improvements to Money datatypes – Peter Eisentraut
- Improvements to server startup/shutdown – Peter Eisentraut
- Allow parallel backup with pg_dump from a standby server – Petr Jelinek
- VACUUM speed enhancements – Álvaro Herrera
- Replication speed enhancements – Simon Riggs / David Rowley
- New test infrastructure for Replication & Recovery – Craig Ringer
A detailed list of 2ndQuadrant’s contributions to PostgreSQL 10 is available here.
*The features listed above have been taken from the Release Notes for PostgreSQL 10 from available here.
PostgreSQL 9.6 (released September 2016)
PostgreSQL version 9.6 was released on September 2016, including a long awaited feature: parallel execution of large queries. David Rowley and Simon Riggs contributed to this effort alongside with many other developers to develop this robust feature. The team at 2ndQuadrant has continued to other several major improvements and new features in this release, listed below:
- Improved performance of short-lived prepared transactions – Simon Riggs / Stas Kelvich / Pavan Deolasee
- Improved performance by moving buffer content locks into the buffer descriptors – Simon Riggs / Andres Freund
- Reducing the lock strength needed by ALTER TABLE when setting fillfactor and autovacuum-related relation options – Simon Riggs / Fabrízio de Royes Mello
- Ability to use an index-only scan with a partial index when the index’s predicate involves column(s) not stored in the index – Tomas Vondra / Kyotaro Horiguchi
- Improved planner’s estimate of the number of distinct values in a query result – Tomas Vondra
- Using foreign key relationships to infer selectivity for join predicates – Tomas Vondra / David Rowley
- Improved ANALYZE’s estimates for columns with many nulls – Tomas Vondra / Alex Shulgin
- Adding function pg_current_xlog_flush_location() to expose the current transaction log flush location, and adding log_line_prefix option %n to print the time as a Unix epoch, within milliseconds – Tomas Vondra / Jeff Davis
- Adding –with-systemd configure switch to enable calling sd_notify() at server start and stop – Peter Eisentraut
- Merging the archive and hot_standby values of the wal_level configuration parameter into a single value replica, adding syslog_sequence_numbers – Peter Eisentraut
- syslog_split_messages configuration parameters to provide more control over message format when logging to syslog – Peter Eisentraut
- Letting pg_basebackup use a replication slot defined for WAL streaming. After the base backup completes – Peter Eisentraut
- Selecting the same slot for regular streaming replication allows seamless startup of the new standby server – Peter Eisentraut
- Including the table name in object tags for object types that are only uniquely named per-table in pg_dump – Peter Eisentraut
A complete list of 2ndQuadrant’s contributions to the PostgreSQL 9.6 is available here.
*The features listed above have been taken from the Release Notes for PostgreSQL 9.6 from www.postgresql.org available here.