summaryrefslogtreecommitdiffstats
path: root/doc/src/sgml/html/release-15-5.html
blob: 2f887fde9221f0fe353348beaa0c4553ad335e0d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
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>