summaryrefslogtreecommitdiffstats
path: root/doc/src/sgml/html/release-15-3.html
diff options
context:
space:
mode:
Diffstat (limited to 'doc/src/sgml/html/release-15-3.html')
-rw-r--r--doc/src/sgml/html/release-15-3.html603
1 files changed, 603 insertions, 0 deletions
diff --git a/doc/src/sgml/html/release-15-3.html b/doc/src/sgml/html/release-15-3.html
new file mode 100644
index 0000000..f4f0e9d
--- /dev/null
+++ b/doc/src/sgml/html/release-15-3.html
@@ -0,0 +1,603 @@
+<?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.2. Release 15.3</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-15-4.html" title="E.1. Release 15.4" /><link rel="next" href="release-15-2.html" title="E.3. Release 15.2" /></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.2. Release 15.3</th></tr><tr><td width="10%" align="left"><a accesskey="p" href="release-15-4.html" title="E.1. Release 15.4">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.4 Documentation">Home</a></td><td width="10%" align="right"> <a accesskey="n" href="release-15-2.html" title="E.3. Release 15.2">Next</a></td></tr></table><hr /></div><div class="sect1" id="RELEASE-15-3"><div class="titlepage"><div><div><h2 class="title" style="clear: both">E.2. Release 15.3</h2></div></div></div><div class="toc"><dl class="toc"><dt><span class="sect2"><a href="release-15-3.html#id-1.11.6.6.4">E.2.1. Migration to Version 15.3</a></span></dt><dt><span class="sect2"><a href="release-15-3.html#id-1.11.6.6.5">E.2.2. Changes</a></span></dt></dl></div><p><strong>Release date: </strong>2023-05-11</p><p>
+ This release contains a variety of fixes from 15.2.
+ For information about new features in major release 15, see
+ <a class="xref" href="release-15.html" title="E.5. Release 15">Section E.5</a>.
+ </p><div class="sect2" id="id-1.11.6.6.4"><div class="titlepage"><div><div><h3 class="title">E.2.1. Migration to Version 15.3</h3></div></div></div><p>
+ A dump/restore is not required for those running 15.X.
+ </p><p>
+ However, if you are upgrading from a version earlier than 15.1,
+ see <a class="xref" href="release-15-1.html" title="E.4. Release 15.1">Section E.4</a>.
+ </p></div><div class="sect2" id="id-1.11.6.6.5"><div class="titlepage"><div><div><h3 class="title">E.2.2. Changes</h3></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>
+ Prevent <code class="command">CREATE SCHEMA</code> from defeating changes
+ in <code class="varname">search_path</code> (Alexander Lakhin)
+ </p><p>
+ Within a <code class="command">CREATE SCHEMA</code> command, objects in the
+ prevailing <code class="varname">search_path</code>, as well as those in the
+ newly-created schema, would be visible even within a called
+ function or script that attempted to set a
+ secure <code class="varname">search_path</code>. This could allow any user
+ having permission to create a schema to hijack the privileges of a
+ security definer function or extension script.
+ </p><p>
+ The <span class="productname">PostgreSQL</span> Project thanks
+ Alexander Lakhin for reporting this problem.
+ (CVE-2023-2454)
+ </p></li><li class="listitem"><p>
+ Enforce row-level security policies correctly after inlining a
+ set-returning function (Stephen Frost, Tom Lane)
+ </p><p>
+ If a set-returning SQL-language function refers to a table having
+ row-level security policies, and it can be inlined into a calling
+ query, those RLS policies would not get enforced properly in some
+ cases involving re-using a cached plan under a different role.
+ This could allow a user to see or modify rows that should have been
+ invisible.
+ </p><p>
+ The <span class="productname">PostgreSQL</span> Project thanks
+ Wolfgang Walther for reporting this problem.
+ (CVE-2023-2455)
+ </p></li><li class="listitem"><p>
+ Fix potential corruption of the template (source) database after
+ <code class="command">CREATE DATABASE</code> with the <code class="literal">STRATEGY
+ WAL_LOG</code> option (Nathan Bossart, Ryo Matsumura)
+ </p><p>
+ Improper buffer handling created a risk that any later modification
+ of the template's <code class="structname">pg_class</code> catalog would be
+ lost.
+ </p></li><li class="listitem"><p>
+ Fix memory leakage and unnecessary disk reads
+ during <code class="command">CREATE DATABASE</code> with the <code class="literal">STRATEGY
+ WAL_LOG</code> option (Andres Freund)
+ </p></li><li class="listitem"><p>
+ Avoid crash when the new schema name is omitted
+ in <code class="command">CREATE SCHEMA</code> (Michael Paquier)
+ </p><p>
+ The SQL standard allows writing <code class="literal">CREATE SCHEMA AUTHORIZATION
+ <em class="replaceable"><code>owner_name</code></em></code>, with the schema
+ name defaulting to <em class="replaceable"><code>owner_name</code></em>. However
+ some code paths expected the schema name to be present and would
+ fail.
+ </p></li><li class="listitem"><p>
+ Fix various planner failures with <code class="command">MERGE</code>
+ commands (Tom Lane)
+ </p><p>
+ Planning could fail with errors like <span class="quote">“<span class="quote">variable not found in
+ subplan target list</span>”</span> or <span class="quote">“<span class="quote">PlaceHolderVar found where not
+ expected</span>”</span>.
+ </p></li><li class="listitem"><p>
+ Fix the row count reported by <code class="command">MERGE</code> for some
+ corner cases (Dean Rasheed)
+ </p><p>
+ The row count reported in the command tag counted rows that actually
+ hadn't been modified due to a <code class="literal">BEFORE ROW</code> trigger
+ returning NULL. This is inconsistent with what happens in
+ plain <code class="command">UPDATE</code> or <code class="command">DELETE</code>, so
+ change it to not count such rows. Also, avoid counting a row twice
+ when <code class="command">MERGE</code> moves it into a different partition of
+ a partitioned table.
+ </p></li><li class="listitem"><p>
+ Fix <code class="command">MERGE</code> problems with concurrent updates
+ (Dean Rasheed, Álvaro Herrera)
+ </p><p>
+ Some cases misbehaved if a row to be updated or deleted
+ by <code class="command">MERGE</code> had just been updated by a concurrent
+ transaction. This could lead to a crash, or the wrong merge action
+ being executed, or no action at all.
+ </p></li><li class="listitem"><p>
+ Add support for decompiling <code class="command">MERGE</code>
+ commands (Álvaro Herrera)
+ </p><p>
+ This was overlooked when <code class="command">MERGE</code> was added, but
+ it's essential support for <code class="command">MERGE</code> in new-style SQL
+ functions.
+ </p></li><li class="listitem"><p>
+ Fix enabling/disabling of foreign-key triggers in partitioned tables
+ (Tom Lane)
+ </p><p>
+ <code class="command">ALTER TABLE ... ENABLE/DISABLE TRIGGER</code> failed if
+ applied to a partitioned table's foreign-key enforcement triggers,
+ because it tried to locate the clone triggers for the partitions by
+ name, and they do not have the same name. Locate them by
+ parent-trigger OID instead.
+ </p></li><li class="listitem"><p>
+ Disallow altering composite types that are stored in indexes
+ (Tom Lane)
+ </p><p>
+ <code class="command">ALTER TYPE</code> disallows non-binary-compatible
+ modifications of composite types if they are stored in any table
+ columns. (Perhaps that will be allowed someday, but it hasn't
+ happened yet; the locking implications of rewriting many tables are
+ daunting.) We overlooked the possibility that an index might
+ contain a composite type that doesn't also appear in its table.
+ </p></li><li class="listitem"><p>
+ Disallow system columns as elements of foreign keys (Tom Lane)
+ </p><p>
+ Since the removal of OID as a system column, there is no plausible
+ use-case for this, and various bits of code no longer support it.
+ Disallow it rather than trying to fix all the cases.
+ </p></li><li class="listitem"><p>
+ Ensure that <code class="command">COPY TO</code> from an RLS-enabled parent
+ table does not copy any rows from child tables (Antonin Houska)
+ </p><p>
+ The documentation is quite clear that <code class="command">COPY TO</code>
+ copies rows from only the named table, not any inheritance children
+ it may have. However, if row-level security was enabled on the table
+ then this stopped being true.
+ </p></li><li class="listitem"><p>
+ Avoid possible crash when <code class="function">array_position()</code>
+ or <code class="function">array_positions()</code> is passed an empty array
+ (Tom Lane)
+ </p></li><li class="listitem"><p>
+ Fix possible out-of-bounds fetch in <code class="function">to_char()</code>
+ (Tom Lane)
+ </p><p>
+ With bad luck this could have resulted in a server crash.
+ </p></li><li class="listitem"><p>
+ Avoid buffer overread in <code class="function">translate()</code> function
+ (Daniil Anisimov)
+ </p><p>
+ When using the deletion feature, the function might fetch the byte
+ just after the input string, creating a small risk of crash.
+ </p></li><li class="listitem"><p>
+ Adjust text-search-related character classification logic to
+ correctly detect whether the prevailing locale
+ is <code class="literal">C</code> (Jeff Davis)
+ </p><p>
+ This code got confused if the database's default collation uses ICU.
+ </p></li><li class="listitem"><p>
+ Avoid possible crash on empty input for type <code class="type">interval</code>
+ (Tom Lane)
+ </p></li><li class="listitem"><p>
+ Re-allow exponential notation in ISO-8601 interval fields
+ (Tom Lane)
+ </p><p>
+ Interval input like <code class="literal">P0.1e10D</code> isn't officially
+ sanctioned by ISO-8601, but we accepted it for a long time before
+ version 15, so re-allow it.
+ </p></li><li class="listitem"><p>
+ Fix error cursor setting for parse errors in JSON string literals
+ (Tom Lane)
+ </p><p>
+ Most cases in which a syntax error is detected in a string literal
+ within a JSON value failed to set the error cursor appropriately.
+ This led at least to an unhelpful error message (pointing to the
+ token before the string, rather than the actual trouble spot), and
+ could even result in a crash in v14 and later.
+ </p></li><li class="listitem"><p>
+ Fix data corruption due to <code class="varname">vacuum_defer_cleanup_age</code>
+ being larger than the current 64-bit xid (Andres Freund)
+ </p><p>
+ In v14 and later with non-default settings
+ of <code class="varname">vacuum_defer_cleanup_age</code>, it was possible to
+ compute a very large vacuum cleanup horizon xid, leading to vacuum
+ removing rows that are still live. v12 and v13 have a lesser form
+ of the same problem affecting only GiST indexes, which could lead to
+ index pages getting recycled too early.
+ </p></li><li class="listitem"><p>
+ Fix parser's failure to detect some cases of improperly-nested
+ aggregates (Tom Lane)
+ </p><p>
+ This oversight could lead to executor failures for queries that
+ should have been rejected as invalid.
+ </p></li><li class="listitem"><p>
+ Fix data structure corruption during parsing of
+ serial <code class="literal">SEQUENCE NAME</code> options (David Rowley)
+ </p><p>
+ This can lead to trouble if an event trigger captures the corrupted
+ parse tree.
+ </p></li><li class="listitem"><p>
+ Correctly update plan nodes' parallel-safety markings when moving
+ initplans from one node to another (Tom Lane)
+ </p><p>
+ This planner oversight could lead to <span class="quote">“<span class="quote">subplan was not
+ initialized</span>”</span> errors at runtime.
+ </p></li><li class="listitem"><p>
+ Avoid failure with PlaceHolderVars in extended-statistics code
+ (Tom Lane)
+ </p><p>
+ Use of dependency-type extended statistics could fail with
+ <span class="quote">“<span class="quote">PlaceHolderVar found where not expected</span>”</span>.
+ </p></li><li class="listitem"><p>
+ Fix incorrect tests for whether a qual clause applied to a subquery
+ can be transformed into a window aggregate <span class="quote">“<span class="quote">run
+ condition</span>”</span> within the subquery (David Rowley)
+ </p><p>
+ A SubPlan within such a clause would cause assertion failures or
+ incorrect answers, as would some other unusual cases.
+ </p></li><li class="listitem"><p>
+ Disable the inverse-transition optimization for window aggregates
+ when the call contains sub-SELECTs (David Rowley)
+ </p><p>
+ This optimization requires that the aggregate's argument expressions
+ have repeatable results, which might not hold for a sub-SELECT.
+ </p></li><li class="listitem"><p>
+ Fix oversights in execution of nested <code class="literal">ARRAY[]</code>
+ constructs (Alexander Lakhin, Tom Lane)
+ </p><p>
+ Correctly detect overflow of the total space needed for the result
+ array, avoiding a possible crash due to undersized output
+ allocation. Also ensure that any trailing padding space in the
+ result array is zeroed; while leaving garbage there is harmless for
+ most purposes, it can result in odd behavior later.
+ </p></li><li class="listitem"><p>
+ Prevent crash when updating a field within an
+ array-of-domain-over-composite-type column (Dmitry Dolgov)
+ </p></li><li class="listitem"><p>
+ Fix partition pruning logic for partitioning on boolean columns
+ (David Rowley)
+ </p><p>
+ Pruning with a condition like <code class="literal">boolcol IS NOT TRUE</code>
+ was done incorrectly, leading to possibly not returning rows in
+ which <code class="literal">boolcol</code> is NULL. Also, the rather unlikely
+ case of partitioning on <code class="literal">NOT boolcol</code> was handled
+ incorrectly.
+ </p></li><li class="listitem"><p>
+ Fix race condition in per-batch cleanup during parallel hash join
+ (Thomas Munro, Melanie Plageman)
+ </p><p>
+ A crash was possible given unlucky timing and
+ <code class="varname">parallel_leader_participation</code>
+ = <code class="literal">off</code> (which is not the default).
+ </p></li><li class="listitem"><p>
+ Recalculate <code class="literal">GENERATED</code> columns after an
+ EvalPlanQual check (Tom Lane)
+ </p><p>
+ In <code class="literal">READ COMMITTED</code> isolation mode, the effects of
+ a row update might need to get reapplied to a newer version of the
+ row than the query found originally. If so, we need to recompute
+ any <code class="literal">GENERATED</code> columns, in case they depend on
+ columns that were changed by the concurrent update.
+ </p></li><li class="listitem"><p>
+ Fix memory leak in Memoize plan execution (David Rowley)
+ </p></li><li class="listitem"><p>
+ Fix buffer refcount leak when using batched inserts for a foreign
+ table included in a partitioned tree (Alexander Pyhalov)
+ </p></li><li class="listitem"><p>
+ Restore support for
+ sub-millisecond <code class="varname">vacuum_cost_delay</code> settings
+ (Thomas Munro)
+ </p></li><li class="listitem"><p>
+ Don't balance vacuum cost delay when a table has a
+ per-relation <code class="varname">vacuum_cost_delay</code> setting of zero
+ (Masahiko Sawada)
+ </p><p>
+ Delay balancing is supposed to be disabled whenever autovacuum is
+ processing a table with a
+ per-relation <code class="varname">vacuum_cost_delay</code> setting, but this
+ was done only for positive settings, not zero.
+ </p></li><li class="listitem"><p>
+ Fix corner-case crashes when columns have been added to the end of a
+ view (Tom Lane)
+ </p></li><li class="listitem"><p>
+ Repair rare failure of MULTIEXPR_SUBLINK subplans in partitioned
+ updates (Andres Freund, Tom Lane)
+ </p><p>
+ Use of the syntax <code class="literal">INSERT ... ON CONFLICT DO UPDATE SET (c1,
+ ...) = (SELECT ...)</code> with a partitioned target table could
+ result in failure if any child table is dissimilar from the parent
+ (for example, different physical column order).
+ This typically manifested as failure of consistency checks in the
+ executor; but a crash or incorrect data updates are also possible.
+ </p></li><li class="listitem"><p>
+ Fix handling of <code class="literal">DEFAULT</code> markers within a
+ multi-row <code class="literal">INSERT ... VALUES</code> query on a view that
+ has a <code class="literal">DO ALSO INSERT ... SELECT</code> rule (Dean
+ Rasheed)
+ </p><p>
+ Such cases typically failed with <span class="quote">“<span class="quote">unrecognized node
+ type</span>”</span> errors or assertion failures.
+ </p></li><li class="listitem"><p>
+ Support references to <code class="literal">OLD</code>
+ and <code class="literal">NEW</code> within subqueries in rule actions
+ (Dean Rasheed, Tom Lane)
+ </p><p>
+ Such references are really lateral references, but the server could
+ crash if the subquery wasn't explicitly marked
+ with <code class="literal">LATERAL</code>. Arrange to do that implicitly when
+ necessary.
+ </p></li><li class="listitem"><p>
+ When decompiling a rule or SQL function body
+ containing <code class="command">INSERT</code>/<code class="command">UPDATE</code>/<code class="command">DELETE</code>
+ within <code class="command">WITH</code>, take care to print the correct alias
+ for the target table (Tom Lane)
+ </p></li><li class="listitem"><p>
+ Fix glitches in <code class="literal">SERIALIZABLE READ ONLY</code>
+ optimization (Thomas Munro)
+ </p><p>
+ Transactions already marked as <span class="quote">“<span class="quote">doomed</span>”</span> confused the
+ safe-snapshot optimization for <code class="literal">SERIALIZABLE READ
+ ONLY</code> transactions. The optimization was unnecessarily
+ skipped in some cases. In other cases an assertion failure occurred
+ (but there was no problem in non-assert builds).
+ </p></li><li class="listitem"><p>
+ Avoid leaking cache callback slots in
+ the <code class="literal">pgoutput</code> logical decoding plugin (Shi Yu)
+ </p><p>
+ Multiple cycles of starting up and shutting down the plugin within a
+ single session would eventually lead to an <span class="quote">“<span class="quote">out of
+ relcache_callback_list slots</span>”</span> error.
+ </p></li><li class="listitem"><p>
+ Avoid unnecessary calls to custom validators for index operator
+ class options (Alexander Korotkov)
+ </p><p>
+ This change fixes some cases where an unexpected error was thrown.
+ </p></li><li class="listitem"><p>
+ Avoid useless work while scanning a multi-column BRIN index with
+ multiple scan keys (Tomas Vondra)
+ </p><p>
+ The existing code effectively considered only the last scan key
+ while deciding whether a range matched, thus usually scanning more
+ of the index than it needed to.
+ </p></li><li class="listitem"><p>
+ Fix netmask handling in BRIN inet_minmax_multi_ops opclass
+ (Tomas Vondra)
+ </p><p>
+ This error triggered an assertion failure in assert-enabled builds,
+ but is mostly harmless in production builds.
+ </p></li><li class="listitem"><p>
+ Fix dereference of dangling pointer during buffering build of a GiST
+ index (Alexander Lakhin)
+ </p><p>
+ This error seems to usually be harmless in production builds, as the
+ fetched value is noncritical; but in principle it could cause a
+ server crash.
+ </p></li><li class="listitem"><p>
+ Ignore dropped columns and generated columns during logical
+ replication of an update or delete action (Onder Kalaci, Shi Yu)
+ </p><p>
+ Replication with the <code class="literal">REPLICA IDENTITY FULL</code> option
+ failed if the table contained such columns.
+ </p></li><li class="listitem"><p>
+ Correct the name of the wait event for SLRU buffer I/O for commit
+ timestamps (Alexander Lakhin)
+ </p><p>
+ This wait event is named <code class="literal">CommitTsBuffer</code> according
+ to the documentation, but the code had it
+ as <code class="literal">CommitTSBuffer</code>. Change the code to match the
+ documentation, as that way is more consistent with the naming of
+ related wait events.
+ </p></li><li class="listitem"><p>
+ Re-activate reporting of wait event <code class="literal">SLRUFlushSync</code>
+ (Thomas Munro)
+ </p><p>
+ Reporting of this type of wait was accidentally removed in code
+ refactoring.
+ </p></li><li class="listitem"><p>
+ Avoid possible underflow when calculating how many WAL segments to
+ keep (Kyotaro Horiguchi)
+ </p><p>
+ This could result in not honoring <code class="varname">wal_keep_size</code>
+ accurately.
+ </p></li><li class="listitem"><p>
+ Disable startup progress reporting overhead in standby mode
+ (Bharath Rupireddy)
+ </p><p>
+ In standby mode, we don't actually report progress of recovery,
+ but we were doing work to track it anyway.
+ </p></li><li class="listitem"><p>
+ Support RSA-PSS certificates with SCRAM-SHA-256 channel binding
+ (Jacob Champion, Heikki Linnakangas)
+ </p><p>
+ This feature requires building with OpenSSL 1.1.1 or newer. Both
+ the server and <span class="application">libpq</span> are affected.
+ </p></li><li class="listitem"><p>
+ Avoid race condition with process ID tracking on Windows (Thomas Munro)
+ </p><p>
+ The operating system could recycle a PID before the postmaster
+ observed that that child process was gone. This could lead to
+ tracking more than one child with the same PID, resulting in
+ confusion.
+ </p></li><li class="listitem"><p>
+ Fix <code class="function">list_copy_head()</code> to work correctly on an
+ empty List (David Rowley)
+ </p><p>
+ This case is not known to be reached by any
+ core <span class="productname">PostgreSQL</span> code, but extensions
+ might rely on it working.
+ </p></li><li class="listitem"><p>
+ Add missing cases to <code class="function">SPI_result_code_string()</code>
+ (Dean Rasheed)
+ </p></li><li class="listitem"><p>
+ Fix erroneous Valgrind markings
+ in <code class="function">AllocSetRealloc()</code> (Karina Litskevich)
+ </p><p>
+ In the unusual case where the size of a large (&gt;8kB) palloc chunk
+ is decreased, a Valgrind-aware build would mismark the defined-ness
+ state of the memory released from the chunk, possibly causing
+ incorrect results during Valgrind testing.
+ </p></li><li class="listitem"><p>
+ Fix assertion failure for <code class="command">MERGE</code> into a
+ partitioned table with row-level security enabled (Dean Rasheed)
+ </p></li><li class="listitem"><p>
+ Avoid assertion failure when decoding a transactional logical
+ replication message (Tomas Vondra)
+ </p></li><li class="listitem"><p>
+ Avoid locale sensitivity when processing regular expression escapes
+ (Jeff Davis)
+ </p><p>
+ A backslash followed by a non-ASCII character could sometimes cause
+ an assertion failure, depending on the prevailing locale.
+ </p></li><li class="listitem"><p>
+ Avoid trying to write an empty WAL record
+ in <code class="function">log_newpage_range()</code> when the last few pages
+ in the specified range are empty (Matthias van de Meent)
+ </p><p>
+ It is not entirely clear whether this case is reachable in released
+ branches, but if it is then an assertion failure could occur.
+ </p></li><li class="listitem"><p>
+ Fix session-lifespan memory leakage in <span class="application">plpgsql</span>
+ <code class="literal">DO</code> blocks that use cast expressions
+ (Ajit Awekar, Tom Lane)
+ </p></li><li class="listitem"><p>
+ Tighten array dimensionality checks when converting Perl
+ list structures to multi-dimensional SQL arrays (Tom Lane)
+ </p><p>
+ <span class="application">plperl</span> could misbehave when the nesting
+ of sub-lists is inconsistent so that the data does not represent a
+ rectangular array of values. Such cases now produce errors, but
+ previously they could result in a crash or garbage output.
+ </p></li><li class="listitem"><p>
+ Tighten array dimensionality checks when converting Python
+ list structures to multi-dimensional SQL arrays (Tom Lane)
+ </p><p>
+ <span class="application">plpython</span> could misbehave when dealing
+ with empty sub-lists, or when the nesting of sub-lists is
+ inconsistent so that the data does not represent a rectangular array
+ of values. The former should result in an empty output array, and
+ the latter in an error. But some cases resulted in a crash, and
+ others in unexpected output.
+ </p></li><li class="listitem"><p>
+ Fix unwinding of exception stack
+ in <span class="application">plpython</span> (Xing Guo)
+ </p><p>
+ Some rare failure cases could return without cleaning up the PG_TRY
+ exception stack, risking a crash if another error was raised before
+ the next stack level was unwound.
+ </p></li><li class="listitem"><p>
+ Fix inconsistent GSS-encryption error handling
+ in <span class="application">libpq</span>'s
+ <code class="function">PQconnectPoll()</code>
+ (Michael Paquier)
+ </p><p>
+ With <code class="option">gssencmode</code> set to <code class="literal">require</code>,
+ the connection was not marked dead after a GSS initialization
+ failure. Make it fail immediately, as the equivalent case for TLS
+ encryption has long done.
+ </p></li><li class="listitem"><p>
+ Fix possible data corruption in <span class="application">ecpg</span>
+ programs built with the <code class="option">-C ORACLE</code> option
+ (Kyotaro Horiguchi)
+ </p><p>
+ When <code class="function">ecpg_get_data()</code> is called
+ with <code class="varname">varcharsize</code> set to zero, it could write a
+ terminating zero character into the last byte of the preceding
+ field, truncating the data in that field.
+ </p></li><li class="listitem"><p>
+ Fix <span class="application">pg_dump</span> so that partitioned tables
+ that are hash-partitioned on an enum-type column can be restored
+ successfully (Tom Lane)
+ </p><p>
+ Since the hash codes for enum values depend on the OIDs assigned to
+ the enum, they are typically different after a dump and restore,
+ meaning that rows often need to go into a different partition than
+ they were in originally. Users can work around that by specifying
+ the <code class="option">--load-via-partition-root</code> option; but since
+ there is very little chance of success without that,
+ teach <span class="application">pg_dump</span> to apply it automatically
+ to such tables.
+ </p><p>
+ Also, fix <span class="application">pg_restore</span> to not try
+ to <code class="command">TRUNCATE</code> target tables before restoring into
+ them when <code class="option">--load-via-partition-root</code> mode is used.
+ This avoids a hazard of deadlocks and lost data.
+ </p></li><li class="listitem"><p>
+ Correctly detect non-seekable files on Windows
+ (Juan José Santamaría Flecha, Michael Paquier, Daniel Watzinger)
+ </p><p>
+ This bug led to misbehavior when <span class="application">pg_dump</span>
+ writes to a pipe or <span class="application">pg_restore</span> reads from
+ one.
+ </p></li><li class="listitem"><p>
+ In <span class="application">pgbench</span>'s <span class="quote">“<span class="quote">prepared</span>”</span>
+ mode, prepare all the commands in a pipeline before starting the
+ pipeline (Álvaro Herrera)
+ </p><p>
+ This avoids a failure when a pgbench script tries to
+ start a serializable transaction inside a pipeline.
+ </p></li><li class="listitem"><p>
+ In <code class="filename">contrib/amcheck</code>'s heap checking code, deal
+ correctly with tuples having zero xmin or xmax (Robert Haas)
+ </p></li><li class="listitem"><p>
+ In <code class="filename">contrib/amcheck</code>, deal sanely with xids that
+ appear to be before epoch zero (Andres Freund)
+ </p><p>
+ In cases of corruption we might see a wrapped-around 32-bit xid that
+ appears to be before the first xid epoch. Promoting such a value to
+ 64-bit form produced a value far in the future, resulting in wrong
+ reports. Return FirstNormalFullTransactionId in such cases so that
+ things work reasonably sanely.
+ </p></li><li class="listitem"><p>
+ In <code class="filename">contrib/basebackup_to_shell</code>, properly detect
+ failure to open a pipe (Robert Haas)
+ </p></li><li class="listitem"><p>
+ In <code class="filename">contrib/hstore_plpython</code>, avoid crashing if
+ the Python value to be transformed isn't a mapping (Dmitry Dolgov,
+ Tom Lane)
+ </p><p>
+ This should give an error, but Python 3 changed some APIs in a way
+ that caused the check to misbehave, allowing a crash to ensue.
+ </p></li><li class="listitem"><p>
+ Require the <code class="literal">siglen</code> option of a GiST index on
+ an <code class="type">ltree</code> column, if specified, to be a multiple of 4
+ (Alexander Korotkov)
+ </p><p>
+ Other values result in misaligned accesses to index content, which
+ is harmless on Intel-compatible hardware but can cause a crash on
+ some other architectures.
+ </p></li><li class="listitem"><p>
+ In <code class="filename">contrib/pageinspect</code>, add defenses against
+ incorrect input for the <code class="function">gist_page_items()</code> function
+ (Dmitry Koval)
+ </p></li><li class="listitem"><p>
+ Fix misbehavior in <code class="filename">contrib/pg_trgm</code> with an
+ unsatisfiable regular expression (Tom Lane)
+ </p><p>
+ A regex such as <code class="literal">$foo</code> is legal but unsatisfiable;
+ the regex compiler recognizes that and produces an empty NFA graph.
+ Attempting to optimize such a graph into a pg_trgm GIN or GiST index
+ qualification resulted in accessing off the end of a work array,
+ possibly leading to crashes.
+ </p></li><li class="listitem"><p>
+ Fix handling of escape sequences
+ in <code class="filename">contrib/postgres_fdw</code>'s
+ <code class="varname">application_name</code> parameter (Kyotaro Horiguchi,
+ Michael Paquier)
+ </p><p>
+ The code to expand these could fail if executed in a background
+ process, as for example during auto-analyze of a foreign table.
+ </p></li><li class="listitem"><p>
+ In <code class="filename">contrib/pg_walinspect</code>, limit memory usage
+ of <code class="function">pg_get_wal_records_info()</code> (Bharath Rupireddy)
+ </p></li><li class="listitem"><p>
+ Use the <code class="option">--strip-unneeded</code> option when stripping
+ static libraries with
+ GNU-compatible <span class="application">strip</span> (Tom Lane)
+ </p><p>
+ Previously, <code class="literal">make install-strip</code> used
+ the <code class="option">-x</code> option in this case. This change avoids
+ misbehavior of <span class="application">llvm-strip</span>, and gives
+ slightly smaller output as well.
+ </p></li><li class="listitem"><p>
+ Stop recommending auto-download of DTD files for building the
+ documentation, and indeed disable it (Aleksander Alekseev, Peter
+ Eisentraut, Tom Lane)
+ </p><p>
+ It appears no longer possible to build the SGML documentation
+ without a local installation of the DocBook DTD files.
+ Formerly <span class="application">xsltproc</span> could download those
+ files on-the-fly from sourceforge.net; but sourceforge.net now
+ permits only HTTPS access, and no common version
+ of <span class="application">xsltproc</span> supports that. Hence, remove
+ the bits of our documentation suggesting that that's possible or
+ useful, and instead
+ add <span class="application">xsltproc</span>'s <code class="option">--nonet</code>
+ option to the build recipes.
+ </p></li><li class="listitem"><p>
+ When running TAP tests in PGXS builds, use a saner location for the
+ temporary <code class="filename">portlock</code> directory (Peter Eisentraut)
+ </p><p>
+ Place it under <code class="filename">tmp_check</code> in the build
+ directory. With the previous coding, a PGXS build would try to place
+ it in the installation directory, which is not necessarily writable.
+ </p></li><li class="listitem"><p>
+ Update time zone data files to <span class="application">tzdata</span>
+ release 2023c for DST law changes in Egypt, Greenland, Morocco, and
+ Palestine.
+ </p><p>
+ When observing Moscow time, Europe/Kirov and Europe/Volgograd now
+ use the abbreviations MSK/MSD instead of numeric abbreviations,
+ for consistency with other timezones observing Moscow time.
+ Also, America/Yellowknife is no longer distinct from America/Edmonton;
+ this affects some pre-1948 timestamps in that area.
+ </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-15-4.html" title="E.1. Release 15.4">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-2.html" title="E.3. Release 15.2">Next</a></td></tr><tr><td width="40%" align="left" valign="top">E.1. Release 15.4 </td><td width="20%" align="center"><a accesskey="h" href="index.html" title="PostgreSQL 15.4 Documentation">Home</a></td><td width="40%" align="right" valign="top"> E.3. Release 15.2</td></tr></table></div></body></html> \ No newline at end of file