PostgreSQL
Databases · products/postgresql.yaml · RSS
Latest 18.6 Aug 13, 2026
Latest per track
| Track | Latest | Released |
|---|---|---|
| 18 | 18.6 | Aug 13, 2026 |
| 17 | 17.11 | Aug 13, 2026 |
| 16 | 16.15 | Aug 13, 2026 |
| 15 | 15.19 | Aug 13, 2026 |
| 14 | 14.24 | Aug 13, 2026 |
Lifecycle
| Branch | Latest | Released | End of life |
|---|---|---|---|
| 18 | 18.6 | Sep 25, 2025 | Nov 14, 2030 · maintained |
| 17 | 17.11 | Sep 26, 2024 | Nov 8, 2029 · maintained |
| 16 | 16.15 | Sep 14, 2023 | Nov 9, 2028 · maintained |
| 15 | 15.19 | Oct 13, 2022 | Nov 11, 2027 · maintained |
| 14 | 14.24 | Sep 30, 2021 | Nov 12, 2026 · maintained |
| 13 | 13.23 | Sep 24, 2020 | Nov 13, 2025 · ended |
| 12 | 12.22 | Oct 3, 2019 | Nov 21, 2024 · ended |
| 11 | 11.22 | Oct 18, 2018 | Nov 9, 2023 · ended |
| 10 | 10.23 | Oct 5, 2017 | Nov 10, 2022 · ended |
| 9.6 | 9.6.24 | Sep 29, 2016 | Nov 11, 2021 · ended |
| 9.5 | 9.5.25 | Jan 7, 2016 | Feb 11, 2021 · ended |
| 9.4 | 9.4.26 | Dec 18, 2014 | Feb 13, 2020 · ended |
| 9.3 | 9.3.25 | Sep 9, 2013 | Nov 8, 2018 · ended |
| 9.2 | 9.2.24 | Sep 10, 2012 | Nov 9, 2017 · ended |
| 9.1 | 9.1.24 | Sep 12, 2011 | Oct 27, 2016 · ended |
| 9.0 | 9.0.23 | Sep 20, 2010 | Oct 8, 2015 · ended |
| 8.4 | 8.4.22 | Jul 1, 2009 | Jul 24, 2014 · ended |
| 8.3 | 8.3.23 | Feb 4, 2008 | Feb 7, 2013 · ended |
| 8.2 | 8.2.23 | Dec 5, 2006 | Dec 5, 2011 · ended |
| 8.1 | 8.1.23 | Nov 8, 2005 | Nov 8, 2010 · ended |
| 8.0 | 8.0.26 | Jan 19, 2005 | Oct 1, 2010 · ended |
| 7.4 | 7.4.30 | Nov 17, 2003 | Oct 1, 2010 · ended |
| 7.3 | 7.3.21 | Nov 27, 2002 | Nov 27, 2007 · ended |
| 7.2 | 7.2.8 | Feb 4, 2002 | Feb 4, 2007 · ended |
| 7.1 | 7.1.3 | Apr 13, 2001 | Apr 13, 2006 · ended |
| 7.0 | 7.0.3 | May 8, 2000 | May 8, 2005 · ended |
| 6.5 | 6.5.3 | Jun 9, 1999 | Jun 9, 2004 · ended |
| 6.4 | 6.4.2 | Oct 30, 1998 | Oct 30, 2003 · ended |
| 6.3 | 6.3.2 | Mar 1, 1998 | Mar 1, 2003 · ended |
Recent releases
securityRestrict logical decoding output plugins to the set specified by a new server parameter output_plugin_libraries (Jacob Champion) Previously, a replication user could select any loadable library for logical decoding, allowing exploits of various sorts. To allow locking this down without breaking…
securityFix contrib/pgcrypto's PGP encryption to detect unsupported ciphers (Daniel Gustafsson) Previously, if OpenSSL rejected the requested cipher (for example, because it is running in FIPS mode, or the legacy provider hasn't been loaded), pgcrypto failed to notice the failure and simply XOR'd the…
securityFix psql to skip in-line data following a scripted COPY ... FROM STDIN command, even if the COPY fails before sending PGRES_COPY_IN (Tom Lane) Previously, if a COPY command failed at startup (for instance, because the target table doesn't exist) psql would not realize that and would proceed to…
securityPrevent unbounded recursion while processing startup packets (Michael Paquier) A malicious client could crash the connected backend by alternating rejected SSL and GSS encryption requests indefinitely. The PostgreSQL Project thanks Calif.io (in collaboration with Claude and Anthropic Research) for…
securityFix assorted integer overflows in memory-allocation calculations (Tom Lane, Nathan Bossart, Heikki Linnakangas) Various places were incautious about the possibility of integer overflow in calculations of how much memory to allocate. Overflow would lead to allocating a too-small buffer which the…
securityProperly quote subscription names in pg_createsubscriber (Nathan Bossart) The given subscription name was inserted into SQL commands without quoting, so that SQL injection could be achieved in the (perhaps unlikely) case that the subscription name comes from an untrusted source. The PostgreSQL…
securityAvoid incorrect complaint of invalid encoding when substring() is applied to “toasted” data (Noah Misch) The fix for CVE-2026-2006 was too aggressive and could raise an error about an incomplete character in cases that are actually valid.
securityFix oversight in the fix for CVE-2026-2007 (Zsolt Parragi) If the “bounds” array needed to be expanded, because the input contained more trigrams than the initial guess, generate_trgm_only didn't return the modified array pointer to its caller. That would lead to incorrect output from…
securityGuard against unexpected dimensions of oidvector/int2vector (Tom Lane) These data types are expected to be 1-dimensional arrays containing no nulls, but there are cast pathways that permit violating those expectations. Add checks to some functions that were depending on those expectations without…
securityHarden selectivity estimators against being attached to operators that accept unexpected data types (Tom Lane) contrib/intarray contained a selectivity estimation function that could be abused for arbitrary code execution, because it did not check that its input was of the expected data type.…
securityFix buffer overrun in contrib/pgcrypto's PGP decryption functions (Michael Paquier) Decrypting a crafted message with an overlength session key caused a buffer overrun, with consequences as bad as arbitrary code execution. The PostgreSQL Project thanks Team Xint Code, as part of zeroday.cloud, for…
securityCheck for CREATE privileges on the schema in CREATE STATISTICS (Jelte Fennema-Nio) This omission allowed table owners to create statistics in any schema, potentially leading to unexpected naming conflicts. The PostgreSQL Project thanks Jelte Fennema-Nio for reporting this problem. (CVE-2025-12817)
securityAvoid integer overflow in allocation-size calculations within libpq (Jacob Champion) Several places in libpq were not sufficiently careful about computing the required size of a memory allocation. Sufficiently large inputs could cause integer overflow, resulting in an undersized buffer, which…
breakingRemove faulty assertion in btree index cleanup (Peter Geoghegan)
breakingRemove non-functional support for rule privileges in GRANT/REVOKE (Fujii Masao) These have been non-functional since PostgreSQL 8.2.
breakingRemove column pg_backend_memory_contexts.parent (Melih Mutlu) This is no longer needed since pg_backend_memory_contexts.path was added.
breakingAdd pg_stat_io columns to report I/O activity in bytes (Nazir Bilal Yavuz) The new columns are read_bytes, write_bytes, and extend_bytes. The op_bytes column, which always equaled BLCKSZ, has been removed.
securityRestrict logical decoding output plugins to the set specified by a new server parameter output_plugin_libraries (Jacob Champion) Previously, a replication user could select any loadable library for logical decoding, allowing exploits of various sorts. To allow locking this down without breaking…
securityFix contrib/pgcrypto's PGP encryption to detect unsupported ciphers (Daniel Gustafsson) Previously, if OpenSSL rejected the requested cipher (for example, because it is running in FIPS mode, or the legacy provider hasn't been loaded), pgcrypto failed to notice the failure and simply XOR'd the…
securityFix psql to skip in-line data following a scripted COPY ... FROM STDIN command, even if the COPY fails before sending PGRES_COPY_IN (Tom Lane) Previously, if a COPY command failed at startup (for instance, because the target table doesn't exist) psql would not realize that and would proceed to…
securityPrevent unbounded recursion while processing startup packets (Michael Paquier) A malicious client could crash the connected backend by alternating rejected SSL and GSS encryption requests indefinitely. The PostgreSQL Project thanks Calif.io (in collaboration with Claude and Anthropic Research) for…
securityFix assorted integer overflows in memory-allocation calculations (Tom Lane, Nathan Bossart, Heikki Linnakangas) Various places were incautious about the possibility of integer overflow in calculations of how much memory to allocate. Overflow would lead to allocating a too-small buffer which the…
securityProperly quote subscription names in pg_createsubscriber (Nathan Bossart) The given subscription name was inserted into SQL commands without quoting, so that SQL injection could be achieved in the (perhaps unlikely) case that the subscription name comes from an untrusted source. The PostgreSQL…
securityAvoid incorrect complaint of invalid encoding when substring() is applied to “toasted” data (Noah Misch) The fix for CVE-2026-2006 was too aggressive and could raise an error about an incomplete character in cases that are actually valid.
securityGuard against unexpected dimensions of oidvector/int2vector (Tom Lane) These data types are expected to be 1-dimensional arrays containing no nulls, but there are cast pathways that permit violating those expectations. Add checks to some functions that were depending on those expectations without…
securityHarden selectivity estimators against being attached to operators that accept unexpected data types (Tom Lane) contrib/intarray contained a selectivity estimation function that could be abused for arbitrary code execution, because it did not check that its input was of the expected data type.…
securityFix buffer overrun in contrib/pgcrypto's PGP decryption functions (Michael Paquier) Decrypting a crafted message with an overlength session key caused a buffer overrun, with consequences as bad as arbitrary code execution. The PostgreSQL Project thanks Team Xint Code, as part of zeroday.cloud, for…
securityCheck for CREATE privileges on the schema in CREATE STATISTICS (Jelte Fennema-Nio) This omission allowed table owners to create statistics in any schema, potentially leading to unexpected naming conflicts. The PostgreSQL Project thanks Jelte Fennema-Nio for reporting this problem. (CVE-2025-12817)
securityAvoid integer overflow in allocation-size calculations within libpq (Jacob Champion) Several places in libpq were not sufficiently careful about computing the required size of a memory allocation. Sufficiently large inputs could cause integer overflow, resulting in an undersized buffer, which…
breakingRemove faulty assertion in btree index cleanup (Peter Geoghegan)
securityTighten security checks in planner estimation functions (Dean Rasheed) The fix for CVE-2017-7484, plus followup fixes, intended to prevent leaky functions from being applied to statistics data for columns that the calling user does not have permission to read. Two gaps in that protection have been…
securityPrevent pg_dump scripts from being used to attack the user running the restore (Nathan Bossart) Since dump/restore operations typically involve running SQL commands as superuser, the target database installation must trust the source server. However, it does not follow that the operating system…
securityConvert newlines to spaces in names included in comments in pg_dump output (Noah Misch) Object names containing newlines offered the ability to inject arbitrary SQL commands into the output script. (Without the preceding fix, injection of psql meta-commands would also be possible this way.)…
securityAvoid one-byte buffer overread when examining invalidly-encoded strings that are claimed to be in GB18030 encoding (Noah Misch, Andres Freund) While unlikely, a SIGSEGV crash could occur if an incomplete multibyte character appeared at the end of memory. This was possible both in the server and in…
breakingRemove incorrect assertion in pgstat_report_stat() (Michael Paquier)
securityImprove behavior of libpq's quoting functions (Andres Freund, Tom Lane) The changes made for CVE-2025-1094 had one serious oversight: PQescapeLiteral() and PQescapeIdentifier() failed to honor their string length parameter, instead always reading to the input string's trailing null. This resulted…
securityHarden PQescapeString and allied functions against invalidly-encoded input strings (Andres Freund, Noah Misch) Data-quoting functions supplied by libpq now fully check the encoding validity of their input. If invalid characters are detected, they report an error if possible. For the ones that lack…
securityFix cases where an operator family member operator or support procedure could become a dangling reference (Tom Lane) In some cases a data type could be dropped while references to its OID still remain in pg_amop or pg_amproc. While that caused no immediate issues, an attempt to drop the owning…
securityUse SQL-standard function bodies in the declarations of contrib/earthdistance's SQL-language functions (Tom Lane, Ronan Dunklau) This change allows their references to contrib/cube to be resolved during extension creation, reducing the risk of search-path-based failures and possible attacks. In…
Security advisories
8.1 CVE-2026-6464 Untrusted data inclusion in PostgreSQL psql COPY may allow a server administrator to elicit execution of data lines as psql commands, via error injection. If the "COPY FROM STDIN" or "\copy FROM S…
3.8 CVE-2026-6469 Incorrect ownership assignment in PostgreSQL ALTER TABLE ALTER TYPE command reassigns ownership of dependent statistics objects to the current user. This wrongly allows the table owner to run DROP…
4.3 CVE-2026-6470 Missing authorization in PostgreSQL DDL commands allows an object creator to achieve denial of service against ALTER and DROP of the type, via creating a dependency on the type. Many DDL operation…
7.2 CVE-2026-6471 Missing authorization in PostgreSQL logical decoding allows a non-superuser holding REPLICATION privilege to dlopen any file visible to the operating system account running the server, via the choi…
8.8 CVE-2026-18408 Untrusted data inclusion in pg_dump in PostgreSQL allows a malicious superuser of the origin server to inject arbitrary code for restore-time execution as the client operating system account runnin…
8.8 CVE-2026-19385 Heap buffer overflow in PostgreSQL pg_dump of long function transform lists allows an object creator to execute arbitrary code as the operating system user running pg_dump, via a crafted transform…
4.3 CVE-2026-18024 Buffer over-read in PostgreSQL ascii() SQL function allows a user to disclose up to 3 bytes after the end of a specific allocation, via a crafted text value. This is the same class of defect that…
8.8 CVE-2026-15742 Integer wraparound in PostgreSQL fuzzystrmatch allows a user to direct writes to a huge range of addresses, executing arbitrary code as the operating system user running the database, via extreme i…
8.8 CVE-2026-16238 Type confusion in PostgreSQL pg_restore_attribute_stats() allows an object creator to execute arbitrary code as the operating system user running the database, via conflation of range and multirang…
8.8 CVE-2026-16239 Type confusion in PostgreSQL "portal"/cursor lifecycle allows a user to execute arbitrary code as the operating system user running the database, via re-creation of a cursor or other portal with di…
3.8 CVE-2026-16241 Integer underflow in PostgreSQL ECPG allows a database server administrator to achieve temporary denial of service against the ECPG client via sending a bytea value lacking the mandatory prefix. T…
8.8 CVE-2026-14677 Integer wraparound in PostgreSQL 32-bit builds of pltcl and plperl allows an object creator to cause the server to undersize an allocation and write out-of-bounds via crafted function bodies. This…
4.3 CVE-2026-14678 Buffer over-read in PostgreSQL pg_trgm index picksplit function reads past end of a heap buffer. This might allow a table maintainer to infer limited memory values, via the lossy signal of index s…
8.2 CVE-2026-14679 Stack buffer overflow in PostgreSQL argument name matching allows an object creator to achieve unknown impacts via OUT parameter count. The attack can write only 0x0 and 0x1 bytes. Versions befor…
8.8 CVE-2026-14680 Type confusion with PostgreSQL "internal" data type arguments allows any user to execute arbitrary code as the operating system user running the database, via calls to functions with that argument…
4.2 CVE-2026-14681 Improper enforcement of message integrity in PostgreSQL GSSAPI support allows a user to negotiate GSSAPI contrary to pg_hba.conf rules, via initial direct TLS connection. Despite a pg_hba.conf tha…
8.8 CVE-2026-15741 SQL injection in PostgreSQL EXTRACT() deparse allows an object owner to execute arbitrary SQL as a superuser via a hostile object definition. Attacks affect expression deparse consumers broadly, i…
8.1 CVE-2026-14668 Type confusion regarding input of PostgreSQL ctid data type selectivity estimator allows an object creator to view a calculation derived from the value of an arbitrary 4-byte span of memory, via a…
8.8 CVE-2026-14669 Heap buffer overflow in PostgreSQL to_char(timestamptz) allows the party choosing the timezone to execute arbitrary code as the operating system user running the database, via a long POSIX timezone…
8.8 CVE-2026-14670 Heap buffer overflow in PostgreSQL plperl return of a tied hash allows the function owner to execute arbitrary code as the operating system user running the database, via a crafted function body.…