summaryrefslogtreecommitdiffstats
path: root/doc/src/sgml/html/release-15-5.html
diff options
context:
space:
mode:
Diffstat (limited to 'doc/src/sgml/html/release-15-5.html')
-rw-r--r--doc/src/sgml/html/release-15-5.html468
1 files changed, 468 insertions, 0 deletions
diff --git a/doc/src/sgml/html/release-15-5.html b/doc/src/sgml/html/release-15-5.html
new file mode 100644
index 0000000..2f887fd
--- /dev/null
+++ b/doc/src/sgml/html/release-15-5.html
@@ -0,0 +1,468 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>E.1. Release 15.5</title><link rel="stylesheet" type="text/css" href="stylesheet.css" /><link rev="made" href="pgsql-docs@lists.postgresql.org" /><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot" /><link rel="prev" href="release.html" title="Appendix E. Release Notes" /><link rel="next" href="release-15-4.html" title="E.2. Release 15.4" /></head><body id="docContent" class="container-fluid col-10"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="5" align="center">E.1. Release 15.5</th></tr><tr><td width="10%" align="left"><a accesskey="p" href="release.html" title="Appendix E. Release Notes">Prev</a> </td><td width="10%" align="left"><a accesskey="u" href="release.html" title="Appendix E. Release Notes">Up</a></td><th width="60%" align="center">Appendix E. Release Notes</th><td width="10%" align="right"><a accesskey="h" href="index.html" title="PostgreSQL 15.5 Documentation">Home</a></td><td width="10%" align="right"> <a accesskey="n" href="release-15-4.html" title="E.2. Release 15.4">Next</a></td></tr></table><hr /></div><div class="sect1" id="RELEASE-15-5"><div class="titlepage"><div><div><h2 class="title" style="clear: both">E.1. Release 15.5</h2></div></div></div><div class="toc"><dl class="toc"><dt><span class="sect2"><a href="release-15-5.html#id-1.11.6.5.4">E.1.1. Migration to Version 15.5</a></span></dt><dt><span class="sect2"><a href="release-15-5.html#id-1.11.6.5.5">E.1.2. Changes</a></span></dt></dl></div><p><strong>Release date: </strong>2023-11-09</p><p>
+ This release contains a variety of fixes from 15.4.
+ For information about new features in major release 15, see
+ <a class="xref" href="release-15.html" title="E.6. Release 15">Section E.6</a>.
+ </p><div class="sect2" id="id-1.11.6.5.4"><div class="titlepage"><div><div><h3 class="title">E.1.1. Migration to Version 15.5</h3></div></div></div><p>
+ A dump/restore is not required for those running 15.X.
+ </p><p>
+ However, several mistakes have been discovered that could lead to
+ certain types of indexes yielding wrong search results or being
+ unnecessarily inefficient. It is advisable
+ to <code class="command">REINDEX</code> potentially-affected indexes after
+ installing this update. See the fourth through seventh changelog
+ entries below.
+ </p><p>
+ Also, if you are upgrading from a version earlier than 15.4,
+ see <a class="xref" href="release-15-4.html" title="E.2. Release 15.4">Section E.2</a>.
+ </p></div><div class="sect2" id="id-1.11.6.5.5"><div class="titlepage"><div><div><h3 class="title">E.1.2. Changes</h3></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>
+ Fix handling of unknown-type arguments
+ in <code class="literal">DISTINCT</code> <code class="type">"any"</code> aggregate
+ functions (Tom Lane)
+ </p><p>
+ This error led to a <code class="type">text</code>-type value being interpreted
+ as an <code class="type">unknown</code>-type value (that is, a zero-terminated
+ string) at runtime. This could result in disclosure of server
+ memory following the <code class="type">text</code> value.
+ </p><p>
+ The <span class="productname">PostgreSQL</span> Project thanks Jingzhou Fu
+ for reporting this problem.
+ (CVE-2023-5868)
+ </p></li><li class="listitem"><p>
+ Detect integer overflow while computing new array dimensions
+ (Tom Lane)
+ </p><p>
+ When assigning new elements to array subscripts that are outside the
+ current array bounds, an undetected integer overflow could occur in
+ edge cases. Memory stomps that are potentially exploitable for
+ arbitrary code execution are possible, and so is disclosure of
+ server memory.
+ </p><p>
+ The <span class="productname">PostgreSQL</span> Project thanks Pedro
+ Gallegos for reporting this problem.
+ (CVE-2023-5869)
+ </p></li><li class="listitem"><p>
+ Prevent the <code class="literal">pg_signal_backend</code> role from
+ signalling background workers and autovacuum processes
+ (Noah Misch, Jelte Fennema-Nio)
+ </p><p>
+ The documentation says that <code class="literal">pg_signal_backend</code>
+ cannot issue signals to superuser-owned processes. It was able to
+ signal these background processes, though, because they advertise a
+ role OID of zero. Treat that as indicating superuser ownership.
+ The security implications of cancelling one of these process types
+ are fairly small so far as the core code goes (we'll just start
+ another one), but extensions might add background workers that are
+ more vulnerable.
+ </p><p>
+ Also ensure that the <code class="varname">is_superuser</code> parameter is
+ set correctly in such processes. No specific security consequences
+ are known for that oversight, but it might be significant for some
+ extensions.
+ </p><p>
+ The <span class="productname">PostgreSQL</span> Project thanks
+ Hemanth Sandrana and Mahendrakar Srinivasarao
+ for reporting this problem.
+ (CVE-2023-5870)
+ </p></li><li class="listitem"><p>
+ Fix misbehavior during recursive page split in GiST index build
+ (Heikki Linnakangas)
+ </p><p>
+ Fix a case where the location of a page downlink was incorrectly
+ tracked, and introduce some logic to allow recovering from such
+ situations rather than silently doing the wrong thing. This error
+ could result in incorrect answers from subsequent index searches.
+ It may be advisable to reindex all GiST indexes after installing
+ this update.
+ </p></li><li class="listitem"><p>
+ Prevent de-duplication of btree index entries
+ for <code class="type">interval</code> columns (Noah Misch)
+ </p><p>
+ There are <code class="type">interval</code> values that are distinguishable but
+ compare equal, for example <code class="literal">24:00:00</code>
+ and <code class="literal">1 day</code>. This breaks assumptions made by btree
+ de-duplication, so <code class="type">interval</code> columns need to be excluded
+ from de-duplication. This oversight can cause incorrect results
+ from index-only scans. Moreover, after
+ updating <span class="application">amcheck</span> will report an error for
+ almost all such indexes. Users should reindex any btree indexes
+ on <code class="type">interval</code> columns.
+ </p></li><li class="listitem"><p>
+ Process <code class="type">date</code> values more sanely in
+ BRIN <code class="literal">datetime_minmax_multi_ops</code> indexes
+ (Tomas Vondra)
+ </p><p>
+ The distance calculation for dates was backward, causing poor
+ decisions about which entries to merge. The index still produces
+ correct results, but is much less efficient than it should be.
+ Reindexing BRIN <code class="literal">minmax_multi</code> indexes
+ on <code class="type">date</code> columns is advisable.
+ </p></li><li class="listitem"><p>
+ Process large <code class="type">timestamp</code> and <code class="type">timestamptz</code>
+ values more sanely in
+ BRIN <code class="literal">datetime_minmax_multi_ops</code> indexes
+ (Tomas Vondra)
+ </p><p>
+ Infinities were mistakenly treated as having distance zero rather
+ than a large distance from other values, causing poor decisions
+ about which entries to merge. Also, finite-but-very-large values
+ (near the endpoints of the representable timestamp range) could
+ result in internal overflows, again causing poor decisions. The
+ index still produces correct results, but is much less efficient
+ than it should be. Reindexing BRIN <code class="literal">minmax_multi</code>
+ indexes on <code class="type">timestamp</code> and <code class="type">timestamptz</code>
+ columns is advisable if the column contains, or has contained,
+ infinities or large finite values.
+ </p></li><li class="listitem"><p>
+ Avoid calculation overflows in
+ BRIN <code class="literal">interval_minmax_multi_ops</code> indexes with
+ extreme interval values (Tomas Vondra)
+ </p><p>
+ This bug might have caused unexpected failures while trying to
+ insert large interval values into such an index.
+ </p></li><li class="listitem"><p>
+ Fix partition step generation and runtime partition pruning for
+ hash-partitioned tables with multiple partition keys (David Rowley)
+ </p><p>
+ Some cases involving an <code class="literal">IS NULL</code> condition on one
+ of the partition keys could result in a crash.
+ </p></li><li class="listitem"><p>
+ Fix inconsistent rechecking of concurrently-updated rows
+ during <code class="command">MERGE</code> (Dean Rasheed)
+ </p><p>
+ In <code class="literal">READ COMMITTED</code> mode, an update that finds that
+ its target row was just updated by a concurrent transaction will
+ recheck the query's <code class="literal">WHERE</code> conditions on the
+ updated row. <code class="command">MERGE</code> failed to ensure that the
+ proper rows of other joined tables were used during this recheck,
+ possibly resulting in incorrect decisions about whether the
+ newly-updated row should be updated again
+ by <code class="command">MERGE</code>.
+ </p></li><li class="listitem"><p>
+ Correctly identify the target table in an
+ inherited <code class="command">UPDATE</code>/<code class="command">DELETE</code>/<code class="command">MERGE</code>
+ even when the parent table is excluded by constraints (Amit Langote,
+ Tom Lane)
+ </p><p>
+ If the initially-named table is excluded by constraints, but not all
+ its inheritance descendants are, the first non-excluded descendant
+ was identified as the primary target table. This would lead to
+ firing statement-level triggers associated with that table, rather
+ than the initially-named table as should happen. In v16, the same
+ oversight could also lead to <span class="quote">“<span class="quote">invalid perminfoindex 0 in RTE
+ with relid NNNN</span>”</span> errors.
+ </p></li><li class="listitem"><p>
+ Fix edge case in btree mark/restore processing of ScalarArrayOpExpr
+ clauses (Peter Geoghegan)
+ </p><p>
+ When restoring an indexscan to a previously marked position, the
+ code could miss required setup steps if the scan had advanced
+ exactly to the end of the matches for a ScalarArrayOpExpr (that is,
+ an <code class="literal">indexcol = ANY(ARRAY[])</code>) clause. This could
+ result in missing some rows that should have been fetched.
+ </p></li><li class="listitem"><p>
+ Fix intra-query memory leak in Memoize execution
+ (Orlov Aleksej, David Rowley)
+ </p></li><li class="listitem"><p>
+ Fix intra-query memory leak when a set-returning function repeatedly
+ returns zero rows (Tom Lane)
+ </p></li><li class="listitem"><p>
+ Don't crash if <code class="function">cursor_to_xmlschema()</code> is applied
+ to a non-data-returning Portal (Boyu Yang)
+ </p></li><li class="listitem"><p>
+ Throw the intended error if <code class="function">pgrowlocks()</code> is
+ applied to a partitioned table (David Rowley)
+ </p><p>
+ Previously, a not-on-point complaint <span class="quote">“<span class="quote">only heap AM is
+ supported</span>”</span> would be raised.
+ </p></li><li class="listitem"><p>
+ Handle invalid indexes more cleanly in assorted SQL functions
+ (Noah Misch)
+ </p><p>
+ Report an error if <code class="function">pgstatindex()</code>,
+ <code class="function">pgstatginindex()</code>,
+ <code class="function">pgstathashindex()</code>,
+ or <code class="function">pgstattuple()</code> is applied to an invalid
+ index. If <code class="function">brin_desummarize_range()</code>,
+ <code class="function">brin_summarize_new_values()</code>,
+ <code class="function">brin_summarize_range()</code>,
+ or <code class="function">gin_clean_pending_list()</code> is applied to an
+ invalid index, do nothing except to report a debug-level message.
+ Formerly these functions attempted to process the index, and might
+ fail in strange ways depending on what the failed <code class="command">CREATE
+ INDEX</code> had left behind.
+ </p></li><li class="listitem"><p>
+ Fix <code class="function">pg_stat_reset_single_table_counters()</code> to do
+ the right thing for a shared catalog (Masahiro Ikeda)
+ </p><p>
+ Previously the reset would be ineffective.
+ </p></li><li class="listitem"><p>
+ Avoid premature memory allocation failure with long inputs
+ to <code class="function">to_tsvector()</code> (Tom Lane)
+ </p></li><li class="listitem"><p>
+ Fix over-allocation of the constructed <code class="type">tsvector</code>
+ in <code class="function">tsvectorrecv()</code> (Denis Erokhin)
+ </p><p>
+ If the incoming vector includes position data, the binary receive
+ function left wasted space (roughly equal to the size of the
+ position data) in the finished <code class="type">tsvector</code>. In extreme
+ cases this could lead to <span class="quote">“<span class="quote">maximum total lexeme length
+ exceeded</span>”</span> failures for vectors that were under the length
+ limit when emitted. In any case it could lead to wasted space
+ on-disk.
+ </p></li><li class="listitem"><p>
+ Fix incorrect coding in <code class="function">gtsvector_picksplit()</code>
+ (Alexander Lakhin)
+ </p><p>
+ This could lead to poor page-split decisions in GiST indexes
+ on <code class="type">tsvector</code> columns.
+ </p></li><li class="listitem"><p>
+ Improve checks for corrupt PGLZ compressed data (Flavien Guedez)
+ </p></li><li class="listitem"><p>
+ In <code class="command">COPY FROM</code>, fail cleanly when an unsupported
+ encoding conversion is needed (Tom Lane)
+ </p><p>
+ Recent refactoring accidentally removed the intended error check for
+ this, such that it ended in <span class="quote">“<span class="quote">cache lookup failed for function
+ 0</span>”</span> instead of a useful error message.
+ </p></li><li class="listitem"><p>
+ Avoid crash in <code class="command">EXPLAIN</code> if a parameter marked to
+ be displayed by <code class="command">EXPLAIN</code> has a NULL boot-time
+ value (Xing Guo, Aleksander Alekseev, Tom Lane)
+ </p><p>
+ No built-in parameter fits this description, but an extension could
+ define such a parameter.
+ </p></li><li class="listitem"><p>
+ Ensure we have a snapshot while dropping <code class="literal">ON COMMIT
+ DROP</code> temp tables (Tom Lane)
+ </p><p>
+ This prevents possible misbehavior if any catalog entries for the
+ temp tables have fields wide enough to require toasting (such as a
+ very complex <code class="literal">CHECK</code> condition).
+ </p></li><li class="listitem"><p>
+ Avoid improper response to shutdown signals in child processes
+ just forked by <code class="function">system()</code> (Nathan Bossart)
+ </p><p>
+ This fix avoids a race condition in which a child process that has
+ been forked off by <code class="function">system()</code>, but hasn't yet
+ exec'd the intended child program, might receive and act on a signal
+ intended for the parent server process. That would lead to
+ duplicate cleanup actions being performed, which will not end well.
+ </p></li><li class="listitem"><p>
+ Cope with torn reads of <code class="filename">pg_control</code> in frontend
+ programs (Thomas Munro)
+ </p><p>
+ On some file systems, reading <code class="filename">pg_control</code> may
+ not be an atomic action when the server concurrently writes that
+ file. This is detectable via a bad CRC. Retry a few times to see
+ if the file becomes valid before we report error.
+ </p></li><li class="listitem"><p>
+ Avoid torn reads of <code class="filename">pg_control</code> in relevant SQL
+ functions (Thomas Munro)
+ </p><p>
+ Acquire the appropriate lock before
+ reading <code class="filename">pg_control</code>, to ensure we get a
+ consistent view of that file.
+ </p></li><li class="listitem"><p>
+ Avoid integer overflow when computing size of backend activity
+ string array (Jakub Wartak)
+ </p><p>
+ On 64-bit machines we will allow values
+ of <code class="varname">track_activity_query_size</code> large enough to
+ cause 32-bit overflow when multiplied by the allowed number of
+ connections. The code actually allocating the per-backend local
+ array was careless about this though, and allocated the array
+ incorrectly.
+ </p></li><li class="listitem"><p>
+ Fix briefly showing inconsistent progress statistics
+ for <code class="command">ANALYZE</code> on inherited tables
+ (Heikki Linnakangas)
+ </p><p>
+ The block-level counters should be reset to zero at the same time we
+ update the current-relation field.
+ </p></li><li class="listitem"><p>
+ Fix the background writer to report any WAL writes it makes to the
+ statistics counters (Nazir Bilal Yavuz)
+ </p></li><li class="listitem"><p>
+ Fix confusion about forced-flush behavior
+ in <code class="function">pgstat_report_wal()</code>
+ (Ryoga Yoshida, Michael Paquier)
+ </p><p>
+ This could result in some statistics about WAL I/O being forgotten
+ in a shutdown.
+ </p></li><li class="listitem"><p>
+ Track the dependencies of cached <code class="command">CALL</code> statements,
+ and re-plan them when needed (Tom Lane)
+ </p><p>
+ DDL commands, such as replacement of a function that has been
+ inlined into a <code class="command">CALL</code> argument, can create the need
+ to re-plan a <code class="command">CALL</code> that has been cached by
+ PL/pgSQL. That was not happening, leading to misbehavior or strange
+ errors such as <span class="quote">“<span class="quote">cache lookup failed</span>”</span>.
+ </p></li><li class="listitem"><p>
+ Avoid a possible pfree-a-NULL-pointer crash after an error in
+ OpenSSL connection setup (Sergey Shinderuk)
+ </p></li><li class="listitem"><p>
+ Track nesting depth correctly when
+ inspecting <code class="type">RECORD</code>-type Vars from outer query levels
+ (Richard Guo)
+ </p><p>
+ This oversight could lead to assertion failures, core dumps,
+ or <span class="quote">“<span class="quote">bogus varno</span>”</span> errors.
+ </p></li><li class="listitem"><p>
+ Track hash function and negator function dependencies of
+ ScalarArrayOpExpr plan nodes (David Rowley)
+ </p><p>
+ In most cases this oversight was harmless, since these functions
+ would be unlikely to disappear while the node's original operator
+ remains present.
+ </p></li><li class="listitem"><p>
+ Fix error-handling bug in <code class="type">RECORD</code> type cache management
+ (Thomas Munro)
+ </p><p>
+ An out-of-memory error occurring at just the wrong point could leave
+ behind inconsistent state that would lead to an infinite loop.
+ </p></li><li class="listitem"><p>
+ Fix assertion failure when logical decoding is retried in the same
+ session after an error (Hou Zhijie)
+ </p></li><li class="listitem"><p>
+ Treat out-of-memory failures as fatal while reading WAL
+ (Michael Paquier)
+ </p><p>
+ Previously this would be treated as a bogus-data condition, leading
+ to the conclusion that we'd reached the end of WAL, which is
+ incorrect and could lead to inconsistent WAL replay.
+ </p></li><li class="listitem"><p>
+ Fix possible recovery failure due to trying to allocate memory based
+ on a bogus WAL record length field (Thomas Munro, Michael Paquier)
+ </p></li><li class="listitem"><p>
+ Fix race condition in database dropping that could lead to the
+ autovacuum launcher getting stuck (Andres Freund, Will Mortensen,
+ Jacob Speidel)
+ </p><p>
+ The race could lead to a statistics entry for the removed database
+ remaining present, confusing the launcher's selection of which
+ database to process.
+ </p></li><li class="listitem"><p>
+ Fix datatype size confusion in logical tape management
+ (Ranier Vilela)
+ </p><p>
+ Integer overflow was possible on platforms where long is wider than
+ int, although it would take a multiple-terabyte temporary file to
+ cause a problem.
+ </p></li><li class="listitem"><p>
+ Avoid unintended close of syslogger process's stdin
+ (Heikki Linnakangas)
+ </p></li><li class="listitem"><p>
+ Avoid doing plan cache revalidation of utility statements
+ that do not receive interesting processing during parse analysis
+ (Tom Lane)
+ </p><p>
+ Aside from saving a few cycles, this prevents failure after a cache
+ invalidation for statements that must not set a snapshot, such
+ as <code class="command">SET TRANSACTION ISOLATION LEVEL</code>.
+ </p></li><li class="listitem"><p>
+ Keep by-reference <code class="structfield">attmissingval</code> values in
+ a long-lived context while they are being used (Andrew Dunstan)
+ </p><p>
+ This avoids possible use of dangling pointers when a tuple slot
+ outlives the tuple descriptor with which its value was constructed.
+ </p></li><li class="listitem"><p>
+ Recalculate the effective value of <code class="varname">search_path</code>
+ after <code class="command">ALTER ROLE</code> (Jeff Davis)
+ </p><p>
+ This ensures that after renaming a role, the meaning of the special
+ string <code class="literal">$user</code> is re-determined.
+ </p></li><li class="listitem"><p>
+ Fix <span class="quote">“<span class="quote">could not duplicate handle</span>”</span> error occurring on
+ Windows when <code class="varname">min_dynamic_shared_memory</code> is set
+ above zero (Thomas Munro)
+ </p></li><li class="listitem"><p>
+ Fix order of operations in <code class="function">GenericXLogFinish</code>
+ (Jeff Davis)
+ </p><p>
+ This code violated the conditions required for crash safety by
+ writing WAL before marking changed buffers dirty. No core code uses
+ this function, but extensions do (<code class="filename">contrib/bloom</code>
+ does, for example).
+ </p></li><li class="listitem"><p>
+ Remove incorrect assertion in PL/Python exception handling
+ (Alexander Lakhin)
+ </p></li><li class="listitem"><p>
+ Fix assertion failure in <span class="application">pg_dump</span> when
+ it's asked to dump the <code class="literal">pg_catalog</code> schema (Peter
+ Eisentraut)
+ </p></li><li class="listitem"><p>
+ Fix <span class="application">pg_restore</span> so that selective restores
+ will include both table-level and column-level ACLs for selected
+ tables (Euler Taveira, Tom Lane)
+ </p><p>
+ Formerly, only the table-level ACL would get restored if both types
+ were present.
+ </p></li><li class="listitem"><p>
+ Add logic to <span class="application">pg_upgrade</span> to check for use
+ of <code class="type">abstime</code>, <code class="type">reltime</code>,
+ and <code class="type">tinterval</code> data types (Álvaro Herrera)
+ </p><p>
+ These obsolete data types were removed
+ in <span class="productname">PostgreSQL</span> version 12, so check to
+ make sure they aren't present in an older database before claiming
+ it can be upgraded.
+ </p></li><li class="listitem"><p>
+ Avoid generating invalid temporary slot names
+ in <span class="application">pg_basebackup</span> (Jelte Fennema)
+ </p><p>
+ This has only been seen to occur when the server connection runs
+ through <span class="application">pgbouncer</span>.
+ </p></li><li class="listitem"><p>
+ Avoid false <span class="quote">“<span class="quote">too many client connections</span>”</span> errors
+ in <span class="application">pgbench</span> on Windows (Noah Misch)
+ </p></li><li class="listitem"><p>
+ In <code class="filename">contrib/amcheck</code>, do not report interrupted
+ page deletion as corruption (Noah Misch)
+ </p><p>
+ This fix prevents false-positive reports of <span class="quote">“<span class="quote">the first child
+ of leftmost target page is not leftmost of its
+ level</span>”</span>, <span class="quote">“<span class="quote">block NNNN is not leftmost</span>”</span>
+ or <span class="quote">“<span class="quote">left link/right link pair in index XXXX not in
+ agreement</span>”</span>. They appeared
+ if <span class="application">amcheck</span> ran after an unfinished btree
+ index page deletion and before <code class="command">VACUUM</code> had cleaned
+ things up.
+ </p></li><li class="listitem"><p>
+ Fix failure of <code class="filename">contrib/btree_gin</code> indexes
+ on <code class="type">interval</code> columns,
+ when an indexscan using the <code class="literal">&lt;</code>
+ or <code class="literal">&lt;=</code> operator is performed (Dean Rasheed)
+ </p><p>
+ Such an indexscan failed to return all the entries it should.
+ </p></li><li class="listitem"><p>
+ Add support for LLVM 16 and 17 (Thomas Munro, Dmitry Dolgov)
+ </p></li><li class="listitem"><p>
+ Suppress assorted build-time warnings on
+ recent <span class="productname">macOS</span> (Tom Lane)
+ </p><p>
+ <span class="productname">Xcode 15</span> (released
+ with <span class="productname">macOS Sonoma</span>) changed the linker's
+ behavior in a way that causes many duplicate-library warnings while
+ building <span class="productname">PostgreSQL</span>. These were
+ harmless, but they're annoying so avoid citing the same libraries
+ twice. Also remove use of the <code class="option">-multiply_defined
+ suppress</code> linker switch, which apparently has been a no-op
+ for a long time, and is now actively complained of.
+ </p></li><li class="listitem"><p>
+ When building <code class="filename">contrib/unaccent</code>'s rules file,
+ fall back to using <code class="literal">python</code>
+ if <code class="literal">--with-python</code> was not given and make
+ variable <code class="literal">PYTHON</code> was not set (Japin Li)
+ </p></li><li class="listitem"><p>
+ Remove <code class="literal">PHOT</code> (Phoenix Islands Time) from the
+ default timezone abbreviations list (Tom Lane)
+ </p><p>
+ Presence of this abbreviation in the default list can cause failures
+ on recent Debian and Ubuntu releases, as they no longer install the
+ underlying tzdb entry by default. Since this is a made-up
+ abbreviation for a zone with a total human population of about two
+ dozen, it seems unlikely that anyone will miss it. If someone does,
+ they can put it back via a custom abbreviations file.
+ </p></li></ul></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="release.html" title="Appendix E. Release Notes">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="release.html" title="Appendix E. Release Notes">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="release-15-4.html" title="E.2. Release 15.4">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Appendix E. Release Notes </td><td width="20%" align="center"><a accesskey="h" href="index.html" title="PostgreSQL 15.5 Documentation">Home</a></td><td width="40%" align="right" valign="top"> E.2. Release 15.4</td></tr></table></div></body></html> \ No newline at end of file