summaryrefslogtreecommitdiffstats
path: root/doc/src/sgml/html/release-15.html
blob: 1142ba9d92636de997a472cf820a0b201fbb614e (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
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
<?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.8. Release 15</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-1.html" title="E.7. Release 15.1" /><link rel="next" href="release-prior.html" title="E.9. Prior Releases" /></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.8. Release 15</th></tr><tr><td width="10%" align="left"><a accesskey="p" href="release-15-1.html" title="E.7. Release 15.1">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.7 Documentation">Home</a></td><td width="10%" align="right"> <a accesskey="n" href="release-prior.html" title="E.9. Prior Releases">Next</a></td></tr></table><hr /></div><div class="sect1" id="RELEASE-15"><div class="titlepage"><div><div><h2 class="title" style="clear: both">E.8. Release 15</h2></div></div></div><div class="toc"><dl class="toc"><dt><span class="sect2"><a href="release-15.html#id-1.11.6.12.3">E.8.1. Overview</a></span></dt><dt><span class="sect2"><a href="release-15.html#id-1.11.6.12.4">E.8.2. Migration to Version 15</a></span></dt><dt><span class="sect2"><a href="release-15.html#id-1.11.6.12.5">E.8.3. Changes</a></span></dt><dt><span class="sect2"><a href="release-15.html#RELEASE-15-ACKNOWLEDGEMENTS">E.8.4. Acknowledgments</a></span></dt></dl></div><p><strong>Release date: </strong>2022-10-13</p><div class="sect2" id="id-1.11.6.12.3"><div class="titlepage"><div><div><h3 class="title">E.8.1. Overview</h3></div></div></div><p>
    <span class="productname">PostgreSQL</span> 15 contains many new features
    and enhancements, including:
   </p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>
      Support for the <acronym class="acronym">SQL</acronym>
      <a class="link" href="sql-merge.html" title="MERGE"><code class="command">MERGE</code></a> command.
     </p></li><li class="listitem"><p>
      Selective publication of tables' contents within
      <a class="link" href="logical-replication.html" title="Chapter 31. Logical Replication">logical replication</a>
      publications, through the ability to specify column lists and
      row filter conditions.
     </p></li><li class="listitem"><p>
      More options for compression, including support for Zstandard (zstd)
      compression.  This includes support for performing compression on
      the server side during
      <a class="link" href="app-pgbasebackup.html" title="pg_basebackup"><span class="application">pg_basebackup</span></a>.
     </p></li><li class="listitem"><p>
      Support for structured <a class="link" href="runtime-config-logging.html#GUC-LOG-DESTINATION">server
      log output</a> using the <acronym class="acronym">JSON</acronym> format.
     </p></li><li class="listitem"><p>
      Performance improvements, particularly for in-memory and on-disk
      sorting.
     </p></li></ul></div><p>
    The above items and other new features of
    <span class="productname">PostgreSQL</span> 15 are explained in more detail
    in the sections below.
   </p></div><div class="sect2" id="id-1.11.6.12.4"><div class="titlepage"><div><div><h3 class="title">E.8.2. Migration to Version 15</h3></div></div></div><p>
     A dump/restore using <a class="xref" href="app-pg-dumpall.html" title="pg_dumpall"><span class="refentrytitle"><span class="application">pg_dumpall</span></span></a> or use of
     <a class="xref" href="pgupgrade.html" title="pg_upgrade"><span class="refentrytitle"><span class="application">pg_upgrade</span></span></a> or logical replication is required for
     those wishing to migrate data from any previous release.  See <a class="xref" href="upgrading.html" title="19.6. Upgrading a PostgreSQL Cluster">Section 19.6</a> for general information on migrating to new
     major releases.
    </p><p>
     Version 15 contains a number of changes that may affect compatibility
     with previous releases.  Observe the following incompatibilities:
    </p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>
      Remove <code class="literal">PUBLIC</code> creation permission on the <a class="link" href="ddl-schemas.html#DDL-SCHEMAS-PUBLIC" title="5.9.2. The Public Schema"><code class="literal">public</code> schema</a>
      (Noah Misch)
     </p><p>
      The new default is one of the secure schema usage patterns that <a class="xref" href="ddl-schemas.html#DDL-SCHEMAS-PATTERNS" title="5.9.6. Usage Patterns">Section 5.9.6</a> has recommended since the security
      release for CVE-2018-1058.  The change applies to new database
      clusters and to newly-created databases in existing clusters.
      Upgrading a cluster or restoring a database dump will preserve
      <code class="literal">public</code>'s existing permissions.
     </p><p>
      For existing databases, especially those having multiple users,
      consider revoking <code class="literal">CREATE</code> permission on
      the <code class="literal">public</code> schema to adopt this new default.
      For new databases having no need to defend against insider threats,
      granting <code class="literal">CREATE</code> permission will yield the behavior
      of prior releases.
     </p></li><li class="listitem"><p>
      Change the owner of the <code class="literal">public</code> schema to be the
      new <code class="literal">pg_database_owner</code> role (Noah Misch)
     </p><p>
      This allows each database's owner to have ownership privileges on
      the <code class="literal">public</code> schema within their database.
      Previously it was owned by the bootstrap superuser, so that
      non-superuser database owners could not do anything with it.
     </p><p>
      This change applies to new database clusters and to newly-created
      databases in existing clusters.
      Upgrading a cluster or restoring a database dump will preserve
      <code class="literal">public</code>'s existing ownership specification.
     </p></li><li class="listitem"><p>
      Remove long-deprecated <a class="link" href="continuous-archiving.html#BACKUP-BASE-BACKUP" title="26.3.2. Making a Base Backup">exclusive
      backup mode</a> (David Steele, Nathan Bossart)
     </p><p>
      If the database server stops abruptly while in this mode, the
      server could fail to start.  The non-exclusive backup mode is
      considered superior for all purposes.  Functions
      <code class="function">pg_start_backup()</code>/<code class="function">pg_stop_backup()</code>
      have been renamed to
      <code class="function">pg_backup_start()</code>/<code class="function">pg_backup_stop()</code>,
      and the functions <code class="function">pg_backup_start_time()</code>
      and <code class="function">pg_is_in_backup()</code> have been removed.
     </p></li><li class="listitem"><p>
      Increase <a class="link" href="runtime-config-resource.html#GUC-HASH-MEM-MULTIPLIER"><code class="varname">hash_mem_multiplier</code></a>
      default to 2.0 (Peter Geoghegan)
     </p><p>
      This allows query hash operations to use more
      <a class="link" href="runtime-config-resource.html#GUC-WORK-MEM"><code class="varname">work_mem</code></a>
      memory than other operations.
     </p></li><li class="listitem"><p>
      Remove server-side language <a class="link" href="plpython.html" title="Chapter 46. PL/Python — Python Procedural Language"><code class="literal">plpython2u</code></a> and generic
      Python language <code class="literal">plpythonu</code> (Andres Freund)
     </p><p>
      Python 2.x is no longer supported.  While the original intent of
      <code class="literal">plpythonu</code> was that it could eventually refer
      to <code class="literal">plpython3u</code>, changing it now seems more likely
      to cause problems than solve them, so it's just been removed.
     </p></li><li class="listitem"><p>
      Generate an error if <a class="link" href="functions-textsearch.html#TEXTSEARCH-FUNCTIONS-TABLE" title="Table 9.43. Text Search Functions"><code class="function">array_to_tsvector()</code></a>
      is passed an empty-string array element (Jean-Christophe Arnu)
     </p><p>
      This is prohibited because lexemes should never be empty.  Users of
      previous Postgres releases should verify that no empty lexemes
      are stored because they can lead to dump/restore failures and
      inconsistent results.
     </p></li><li class="listitem"><p>
      Generate an error when <a class="link" href="functions-string.html#FUNCTIONS-STRING-OTHER" title="Table 9.10. Other String Functions and Operators"><code class="function">chr()</code></a>
      is supplied with a negative argument (Peter Eisentraut)
     </p></li><li class="listitem"><p>
      Prevent <a class="link" href="sql-createview.html" title="CREATE VIEW"><code class="command">CREATE OR REPLACE
      VIEW</code></a> from changing the collation of an output column
      (Tom Lane)
     </p></li><li class="listitem"><p>
      Disallow zero-length <a class="link" href="sql-syntax-lexical.html#SQL-SYNTAX-IDENTIFIERS" title="4.1.1. Identifiers and Key Words">Unicode identifiers</a>,
      e.g., <code class="literal">U&amp;""</code>
      (Peter Eisentraut)
     </p><p>
      Non-Unicode zero-length identifiers were already disallowed.
     </p></li><li class="listitem"><p>
      Prevent <a class="link" href="sql-syntax-lexical.html#SQL-SYNTAX-CONSTANTS-NUMERIC" title="4.1.2.6. Numeric Constants">numeric
      literals</a> from having non-numeric trailing characters (Peter
      Eisentraut)
     </p><p>
      Previously, query text like <code class="literal">123abc</code> would be
      interpreted as <code class="literal">123</code> followed
      by a separate token <code class="literal">abc</code>.
     </p></li><li class="listitem"><p>
      Adjust <a class="link" href="datatype-json.html" title="8.14. JSON Types"><acronym class="acronym">JSON</acronym></a>
      numeric literal processing to match the
      <acronym class="acronym">SQL</acronym>/<acronym class="acronym">JSON</acronym>-standard (Peter
      Eisentraut)
     </p><p>
      This accepts numeric formats like <code class="literal">.1</code> and
      <code class="literal">1.</code>, and disallows trailing junk after numeric
      literals, like <code class="literal">1.type()</code>.
     </p></li><li class="listitem"><p>
      When <a class="link" href="datatype-datetime.html" title="8.5. Date/Time Types"><code class="type">interval</code></a>
      input provides a fractional value for a unit greater than months,
      round to the nearest month (Bruce Momjian)
     </p><p>
      For example, convert <code class="literal">1.99 years</code> to <code class="literal">2
      years</code>, not <code class="literal">1 year 11 months</code> as before.
     </p></li><li class="listitem"><p>
      Improve consistency of <code class="type">interval</code> parsing with trailing
      periods (Tom Lane)
     </p><p>
      Numbers with trailing periods were rejected on some platforms.
     </p></li><li class="listitem"><p>
      Mark the <code class="type">interval</code> output
      function as stable, not immutable, since it depends on <a class="link" href="runtime-config-client.html#GUC-INTERVALSTYLE"><code class="varname">IntervalStyle</code></a>
      (Tom Lane)
     </p><p>
      This will, for example, cause creation of indexes relying on the
      text output of <code class="type">interval</code> values to fail.
     </p></li><li class="listitem"><p>
      Detect integer overflow in <a class="link" href="functions-datetime.html#FUNCTIONS-DATETIME-TABLE" title="Table 9.33. Date/Time Functions">interval justification
      functions</a> (Joe Koshakow)
     </p><p>
      The affected functions are <code class="function">justify_interval()</code>,
      <code class="function">justify_hours()</code>, and
      <code class="function">justify_days()</code>.
     </p></li><li class="listitem"><p>
      Change the I/O format of type <code class="type">"char"</code> for non-ASCII
      characters (Tom Lane)
     </p><p>
      Bytes with the high bit set are now output as a backslash and three
      octal digits, to avoid encoding issues.
     </p></li><li class="listitem"><p>
      Remove the default <a class="link" href="sql-createrole.html" title="CREATE ROLE"><code class="literal">ADMIN
      OPTION</code></a> privilege a login role has on its own role
      membership (Robert Haas)
     </p><p>
      Previously, a login role could add/remove members of its own role,
      even without <code class="literal">ADMIN OPTION</code> privilege.
     </p></li><li class="listitem"><p>
      Allow <a class="link" href="logical-replication.html" title="Chapter 31. Logical Replication">logical replication</a>
      to run as the owner of the subscription (Mark Dilger)
     </p><p>
      Because row-level security policies are not checked, only superusers,
      roles with <code class="literal">bypassrls</code>, and table owners can
      replicate into tables with row-level security policies.
     </p></li><li class="listitem"><p>
      Prevent <code class="command">UPDATE</code> and <code class="command">DELETE</code>
      <a class="link" href="logical-replication.html" title="Chapter 31. Logical Replication">logical replication</a>
      operations on tables where the subscription owner does not have
      <code class="command">SELECT</code> permission on the table (Jeff Davis)
     </p><p>
      <code class="command">UPDATE</code> and <code class="command">DELETE</code> commands
      typically involve reading the table as well, so require the
      subscription owner to have table <code class="command">SELECT</code>
      permission.
     </p></li><li class="listitem"><p>
      When <a class="link" href="sql-explain.html" title="EXPLAIN"><code class="command">EXPLAIN</code></a>
      references the session's temporary object schema, refer to it as
      <code class="literal">pg_temp</code> (Amul Sul)
     </p><p>
      Previously the actual schema name was reported, leading to
      inconsistencies across sessions.
     </p></li><li class="listitem"><p>
      Fix <a class="link" href="monitoring-stats.html#MONITORING-PG-STATIO-ALL-TABLES-VIEW" title="28.2.19. pg_statio_all_tables"><code class="structname">pg_statio_all_tables</code></a>
      to sum values for the rare case of <acronym class="acronym">TOAST</acronym> tables
      with multiple indexes (Andrei Zubkov)
     </p><p>
      Previously such cases would show one row for each index.
     </p></li><li class="listitem"><p>
      Disallow setting <a class="link" href="runtime-config-custom.html" title="20.16. Customized Options">custom
      options</a> that match the name of an installed extension, but
      are not one of the extension's declared variables
      (Florin Irion, Tom Lane)
     </p><p>
      This change causes any such pre-existing variables to be deleted
      during extension load, and then prevents new ones from being created
      later in the session.  The intent is to prevent confusion about
      whether a variable is associated with an extension or not.
     </p></li><li class="listitem"><p>
      Remove obsolete server variable
      <code class="varname">stats_temp_directory</code> (Andres Freund, Kyotaro
      Horiguchi)
     </p></li><li class="listitem"><p>
      Improve the algorithm used to compute <a class="link" href="functions-math.html#FUNCTIONS-MATH-RANDOM-TABLE" title="Table 9.6. Random Functions"><code class="function">random()</code></a>
      (Fabien Coelho)
     </p><p>
      This will cause <code class="function">random()</code>'s results to differ
      from what was emitted by prior versions, even for the same seed
      value.
     </p></li><li class="listitem"><p>
      <span class="application">libpq</span>'s <a class="link" href="libpq-async.html#LIBPQ-PQSENDQUERY"><code class="function">PQsendQuery()</code></a>
      function is no longer supported in pipeline mode (Álvaro Herrera)
     </p><p>
      Applications that are using that combination will need to be
      modified to use <code class="function">PQsendQueryParams()</code> instead.
     </p></li><li class="listitem"><p>
      On non-Windows platforms, consult the <code class="envar">HOME</code> environment
      variable to find the user's home directory (Anders Kaseorg)
     </p><p>
      If <code class="envar">HOME</code> is empty or unset, fall back to the previous
      method of checking the <code class="literal">&lt;pwd.h&gt;</code> database.
      This change affects <span class="application">libpq</span> (for example,
      while looking up <code class="filename">~/.pgpass</code>) as well as various
      client application programs.
     </p></li><li class="listitem"><p>
      Remove <a class="link" href="app-pgdump.html" title="pg_dump"><span class="application">pg_dump</span></a>'s
      <code class="option">--no-synchronized-snapshots</code> option (Tom Lane)
     </p><p>
      All still-supported server versions support synchronized snapshots,
      so there's no longer a need for this option.
     </p></li><li class="listitem"><p>
        After an error is detected in <a class="link" href="app-psql.html" title="psql"><span class="application">psql</span></a>'s
        <code class="option">--single-transaction</code> mode, change the
        final <code class="command">COMMIT</code> command
        to <code class="command">ROLLBACK</code> only
        if <code class="varname">ON_ERROR_STOP</code> is set (Michael Paquier)
       </p></li><li class="listitem"><p>
      Avoid unnecessary casting of constants in queries sent by <a class="link" href="postgres-fdw.html" title="F.38. postgres_fdw">postgres_fdw</a> (Dian Fay)
     </p><p>
      When column types are intentionally different between local and
      remote databases, such casts could cause errors.
     </p></li><li class="listitem"><p>
      Remove <a class="link" href="xml2.html" title="F.50. xml2">xml2</a>'s
      <code class="function">xml_is_well_formed()</code> function (Tom Lane)
     </p><p>
      This function has been implemented in the core backend since
      Postgres 9.1.
     </p></li><li class="listitem"><p>
      Allow <a class="link" href="custom-scan.html" title="Chapter 61. Writing a Custom Scan Provider">custom scan providers</a>
      to indicate if they support projections (Sven Klemm)
     </p><p>
      The default is now that custom scan providers are assumed to not
      support projections;  those that do will need to be updated for
      this release.
     </p></li></ul></div></div><div class="sect2" id="id-1.11.6.12.5"><div class="titlepage"><div><div><h3 class="title">E.8.3. Changes</h3></div></div></div><p>
    Below you will find a detailed account of the changes between
    <span class="productname">PostgreSQL</span> 15 and the previous major
    release.
   </p><div class="sect3" id="id-1.11.6.12.5.3"><div class="titlepage"><div><div><h4 class="title">E.8.3.1. Server</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>
       Record and check the collation version of each <a class="link" href="sql-createdatabase.html" title="CREATE DATABASE">database</a> (Peter Eisentraut)
      </p><p>
       This feature is designed to detect collation version
       changes to avoid index corruption.  Function
       <code class="function">pg_database_collation_actual_version()</code>
       reports the underlying operating system collation version, and
       <code class="command">ALTER DATABASE ...  REFRESH</code> sets the recorded
       database collation version to match the operating system collation
       version.
      </p></li><li class="listitem"><p>
       Allow <a class="link" href="locale.html" title="24.1. Locale Support"><acronym class="acronym">ICU</acronym></a>
       collations to be set as the default for clusters and databases
       (Peter Eisentraut)
      </p><p>
       Previously, only <span class="application">libc</span>-based
       collations could be selected at the cluster and database levels.
       <acronym class="acronym">ICU</acronym> collations could only be used via explicit
       <code class="literal">COLLATE</code> clauses.
      </p></li><li class="listitem"><p>
       Add system view <a class="link" href="view-pg-ident-file-mappings.html" title="54.10. pg_ident_file_mappings"><code class="structname">pg_ident_file_mappings</code></a>
       to report <code class="filename">pg_ident.conf</code> information (Julien
       Rouhaud)
      </p></li></ul></div><div class="sect4" id="id-1.11.6.12.5.3.3"><div class="titlepage"><div><div><h5 class="title">E.8.3.1.1. <a class="link" href="ddl-partitioning.html" title="5.11. Table Partitioning">Partitioning</a></h5></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>
        Improve planning time for queries referencing partitioned tables
        (David Rowley)
       </p><p>
        This change helps when only a few of many partitions are relevant.
       </p></li><li class="listitem"><p>
        Allow ordered scans of partitions to avoid sorting in more cases
        (David Rowley)
       </p><p>
        Previously, a partitioned table with a <code class="literal">DEFAULT</code>
        partition or a <code class="literal">LIST</code> partition containing
        multiple values could not be used for ordered partition scans.
        Now they can be used if such partitions are pruned during planning.
       </p></li><li class="listitem"><p>
        Improve foreign key behavior of updates on partitioned tables
        that move rows between partitions (Amit Langote)
       </p><p>
        Previously, such updates ran a delete action on the source
        partition and an insert action on the target partition.
        <span class="productname">PostgreSQL</span> will now run an update action
        on the partition root, providing cleaner semantics.
       </p></li><li class="listitem"><p>
        Allow <a class="link" href="sql-cluster.html" title="CLUSTER"><code class="command">CLUSTER</code></a>
        on partitioned tables (Justin Pryzby)
       </p></li><li class="listitem"><p>
        Fix <a class="link" href="sql-altertable.html" title="ALTER TABLE"><code class="command">ALTER TRIGGER
        RENAME</code></a> on partitioned tables to properly rename
        triggers on all partitions (Arne Roland, Álvaro Herrera)
       </p><p>
        Also prohibit cloned triggers from being renamed.
       </p></li></ul></div></div><div class="sect4" id="id-1.11.6.12.5.3.4"><div class="titlepage"><div><div><h5 class="title">E.8.3.1.2. Indexes</h5></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>
        Allow btree indexes on system and <a class="link" href="storage-toast.html" title="73.2. TOAST"><acronym class="acronym">TOAST</acronym></a>
        tables to efficiently store duplicates (Peter Geoghegan)
       </p><p>
        Previously de-duplication was disabled for these types of indexes.
       </p></li><li class="listitem"><p>
        Improve lookup performance
        of <a class="link" href="gist.html" title="Chapter 68. GiST Indexes"><acronym class="acronym">GiST</acronym></a> indexes
        that were built using sorting (Aliaksandr Kalenik, Sergei
        Shoulbakov, Andrey Borodin)
       </p></li><li class="listitem"><p>
        Allow unique constraints and indexes to treat
        <code class="literal">NULL</code> values as not distinct (Peter Eisentraut)
       </p><p>
        Previously <code class="literal">NULL</code> entries were always treated
        as distinct values, but this can now be changed by creating
        constraints and indexes using <code class="literal">UNIQUE NULLS NOT
        DISTINCT</code>.
       </p></li><li class="listitem"><p>
        Allow the <a class="link" href="functions-string.html#FUNCTIONS-STRING-OTHER" title="Table 9.10. Other String Functions and Operators"><code class="literal">^@</code></a>
        starts-with operator and the <code class="function">starts_with()</code>
        function to use btree indexes if using the C collation (Tom Lane)
       </p><p>
        Previously these could only use <a class="link" href="spgist.html" title="Chapter 69. SP-GiST Indexes"><acronym class="acronym">SP-GiST</acronym></a> indexes.
       </p></li></ul></div></div><div class="sect4" id="id-1.11.6.12.5.3.5"><div class="titlepage"><div><div><h5 class="title">E.8.3.1.3. Optimizer</h5></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>
        Allow <a class="link" href="sql-createstatistics.html" title="CREATE STATISTICS">extended
        statistics</a> to record statistics for a parent with all its
        children (Tomas Vondra, Justin Pryzby)
       </p><p>
        Regular statistics already tracked parent and
        parent-plus-all-children statistics separately.
       </p></li><li class="listitem"><p>
        Add server variable <a class="link" href="runtime-config-query.html#GUC-RECURSIVE-WORKTABLE-FACTOR"><code class="varname">recursive_worktable_factor</code></a>
        to allow the user to specify the expected size of the working
        table of a <a class="link" href="queries-with.html#QUERIES-WITH-RECURSIVE" title="7.8.2. Recursive Queries">recursive
        query</a> (Simon Riggs)
       </p></li></ul></div></div><div class="sect4" id="id-1.11.6.12.5.3.6"><div class="titlepage"><div><div><h5 class="title">E.8.3.1.4. General Performance</h5></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>
        Allow hash lookup for <a class="link" href="functions-subquery.html#FUNCTIONS-SUBQUERY-NOTIN" title="9.23.3. NOT IN"><code class="literal">NOT IN</code></a>
        clauses with many constants (David Rowley, James Coleman)
       </p><p>
        Previously the code always sequentially scanned the list of values.
       </p></li><li class="listitem"><p>
       Allow <code class="command">SELECT DISTINCT</code> to be parallelized
       (David Rowley)
      </p></li><li class="listitem"><p>
        Speed up encoding validation of <acronym class="acronym">UTF</acronym>-8 text
        by processing 16 bytes at a time
        (John Naylor, Heikki Linnakangas)
       </p><p>
        This will improve text-heavy operations like <a class="link" href="sql-copy.html" title="COPY"><code class="command">COPY FROM</code></a>.
       </p></li><li class="listitem"><p>
        Improve performance for sorts that exceed <a class="link" href="runtime-config-resource.html#GUC-WORK-MEM"><code class="varname">work_mem</code></a>
        (Heikki Linnakangas)
       </p><p>
        When the sort data no longer fits in <code class="varname">work_mem</code>,
        switch to a batch sorting algorithm that uses more output streams
        than before.
       </p></li><li class="listitem"><p>
        Improve performance and reduce memory consumption of in-memory
        sorts (Ronan Dunklau, David Rowley, Thomas Munro, John Naylor)
       </p></li><li class="listitem"><p>
        Allow <acronym class="acronym">WAL</acronym> <a class="link" href="runtime-config-wal.html#GUC-FULL-PAGE-WRITES">full page writes</a> to use
        LZ4 and Zstandard compression (Andrey Borodin, Justin Pryzby)
       </p><p>
        This is controlled by the <a class="link" href="runtime-config-wal.html#GUC-WAL-COMPRESSION"><code class="varname">wal_compression</code></a>
        server setting.
       </p></li><li class="listitem"><p>
        Add support for writing <acronym class="acronym">WAL</acronym>
        using <a class="link" href="runtime-config-wal.html#GUC-WAL-SYNC-METHOD">direct I/O</a> on
        macOS (Thomas Munro)
       </p><p>
        This only works if <code class="literal">max_wal_senders = 0</code>
        and <code class="literal">wal_level = minimal</code>.
       </p></li><li class="listitem"><p>
        Allow <a class="link" href="routine-vacuuming.html" title="25.1. Routine Vacuuming">vacuum</a> to be more
        aggressive in setting the oldest frozen and multi transaction id
        (Peter Geoghegan)
       </p></li><li class="listitem"><p>
        Allow a query referencing multiple <a class="link" href="ddl-foreign-data.html" title="5.12. Foreign Data">foreign tables</a> to perform
        parallel foreign table scans in more cases (Andrey Lepikhov,
        Etsuro Fujita)
       </p></li><li class="listitem"><p>
        Improve the performance of <a class="link" href="functions-window.html" title="9.22. Window Functions">window
        functions</a> that use <code class="function">row_number()</code>,
        <code class="function">rank()</code>, <code class="function">dense_rank()</code> and
        <code class="function">count()</code>
        (David Rowley)
       </p></li><li class="listitem"><p>
        Improve the performance of spinlocks on high-core-count ARM64
        systems (Geoffrey Blake)
       </p></li></ul></div></div><div class="sect4" id="id-1.11.6.12.5.3.7"><div class="titlepage"><div><div><h5 class="title">E.8.3.1.5. Monitoring</h5></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>
        Enable default logging of checkpoints and slow autovacuum
        operations (Bharath Rupireddy)
       </p><p>
        This changes the default of <a class="link" href="runtime-config-logging.html#GUC-LOG-CHECKPOINTS"><code class="varname">log_checkpoints</code></a>
        to <code class="literal">on</code> and that of <a class="link" href="runtime-config-logging.html#GUC-LOG-AUTOVACUUM-MIN-DURATION"><code class="varname">log_autovacuum_min_duration</code></a>
        to 10 minutes.  This will cause even an idle server to generate
        some log output, which might cause problems on
        resource-constrained servers without log file rotation.  These
        defaults should be changed in such cases.
       </p></li><li class="listitem"><p>
        Generate progress messages in the server log during slow server
        starts (Nitin Jadhav, Robert Haas)
       </p><p>
        The messages report the cause of the delay.  The time interval for
        notification is controlled by the new server variable <a class="link" href="runtime-config-logging.html#GUC-LOG-STARTUP-PROGRESS-INTERVAL"><code class="varname">log_startup_progress_interval</code></a>.
       </p></li><li class="listitem"><p>
        Store <a class="link" href="monitoring-stats.html" title="28.2. The Cumulative Statistics System">cumulative statistics
        system</a> data in shared memory (Kyotaro Horiguchi, Andres
        Freund, Melanie Plageman)
       </p><p>
        Previously this data was sent to a statistics collector process
        via <acronym class="acronym">UDP</acronym> packets, and could only be read by
        sessions after transferring it via the file system.  There is no
        longer a separate statistics collector process.
       </p></li><li class="listitem"><p>
        Add additional information to <code class="command">VACUUM VERBOSE</code>
        and autovacuum logging messages (Peter Geoghegan)
       </p></li><li class="listitem"><p>
        Add <a class="link" href="sql-explain.html" title="EXPLAIN"><code class="command">EXPLAIN
        (BUFFERS)</code></a> output for temporary file block I/O
        (Masahiko Sawada)
       </p></li><li class="listitem"><p>
        Allow <a class="link" href="runtime-config-logging.html#GUC-LOG-DESTINATION">log output</a> in
        <acronym class="acronym">JSON</acronym> format (Sehrope Sarkuni, Michael Paquier)
       </p><p>
        The new setting is <code class="literal">log_destination = jsonlog</code>.
       </p></li><li class="listitem"><p>
        Allow <a class="link" href="monitoring-stats.html#MONITORING-STATS-FUNCS-TABLE" title="Table 28.34. Additional Statistics Functions"><code class="function">pg_stat_reset_single_table_counters()</code></a>
        to reset the counters of relations shared across all databases
        (Sadhuprasad Patro)
       </p></li><li class="listitem"><p>
        Add <a class="link" href="monitoring-stats.html#WAIT-EVENT-TABLE" title="Table 28.4. Wait Event Types">wait events</a> for local
        shell commands (Fujii Masao)
       </p><p>
        The new wait events are used when calling
        <code class="varname">archive_command</code>,
        <code class="varname">archive_cleanup_command</code>,
        <code class="varname">restore_command</code> and
        <code class="varname">recovery_end_command</code>.
       </p></li></ul></div></div><div class="sect4" id="id-1.11.6.12.5.3.8"><div class="titlepage"><div><div><h5 class="title">E.8.3.1.6. Privileges</h5></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>
        Allow table accesses done by
        a <a class="link" href="sql-createview.html" title="CREATE VIEW">view</a> to optionally be
        controlled by privileges of the view's caller (Christoph Heiss)
       </p><p>
        Previously, view accesses were always treated as being done by the
        view's owner.  That's still the default.
       </p></li><li class="listitem"><p>
        Allow members of the <a class="link" href="predefined-roles.html#PREDEFINED-ROLES-TABLE" title="Table 22.1. Predefined Roles"><code class="literal">pg_write_server_files</code></a>
        predefined role to perform server-side base backups (Dagfinn
        Ilmari Mannsåker)
       </p><p>
        Previously only superusers could perform such backups.
       </p></li><li class="listitem"><p>
        Allow <a class="link" href="sql-grant.html" title="GRANT"><code class="command">GRANT</code></a>
        to grant permissions to change individual server variables via
        <code class="command">SET</code> and <code class="command">ALTER SYSTEM</code>
        (Mark Dilger)
       </p><p>
        The new function <code class="function">has_parameter_privilege()</code>
        reports on this privilege.
       </p></li><li class="listitem"><p>
        Add predefined role <a class="link" href="predefined-roles.html#PREDEFINED-ROLES-TABLE" title="Table 22.1. Predefined Roles"><code class="literal">pg_checkpoint</code></a>
        that allows members to run <code class="command">CHECKPOINT</code>
        (Jeff Davis)
       </p><p>
        Previously checkpoints could only be run by superusers.
       </p></li><li class="listitem"><p>
        Allow members of the <a class="link" href="predefined-roles.html#PREDEFINED-ROLES-TABLE" title="Table 22.1. Predefined Roles"><code class="literal">pg_read_all_stats</code></a>
        predefined role to access the views <a class="link" href="view-pg-backend-memory-contexts.html" title="54.4. pg_backend_memory_contexts"><code class="structname">pg_backend_memory_contexts</code></a>
        and <a class="link" href="view-pg-shmem-allocations.html" title="54.26. pg_shmem_allocations"><code class="structname">pg_shmem_allocations</code></a>
        (Bharath Rupireddy)
       </p><p>
        Previously these views could only be accessed by superusers.
       </p></li><li class="listitem"><p>
        Allow <a class="link" href="sql-grant.html" title="GRANT"><code class="command">GRANT</code></a>
        to grant permissions on <a class="link" href="functions-admin.html#FUNCTIONS-ADMIN-SIGNAL" title="9.27.2. Server Signaling Functions"><code class="function">pg_log_backend_memory_contexts()</code></a>
        (Jeff Davis)
       </p><p>
        Previously this function could only be run by superusers.
       </p></li></ul></div></div><div class="sect4" id="id-1.11.6.12.5.3.9"><div class="titlepage"><div><div><h5 class="title">E.8.3.1.7. Server Configuration</h5></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>
        Add server variable <a class="link" href="runtime-config-preset.html#GUC-SHARED-MEMORY-SIZE"><code class="varname">shared_memory_size</code></a>
        to report the size of allocated shared memory (Nathan Bossart)
       </p></li><li class="listitem"><p>
        Add server variable <a class="link" href="runtime-config-preset.html#GUC-SHARED-MEMORY-SIZE-IN-HUGE-PAGES"><code class="varname">shared_memory_size_in_huge_pages</code></a>
        to report the number of huge memory pages required (Nathan Bossart)
       </p><p>
        This is only supported on Linux.
       </p></li><li class="listitem"><p>
        Honor server variable <a class="link" href="runtime-config-client.html#GUC-SHARED-PRELOAD-LIBRARIES"><code class="varname">shared_preload_libraries</code></a>
        in single-user mode (Jeff Davis)
       </p><p>
        This change supports use
        of <code class="varname">shared_preload_libraries</code> to load custom
        access methods and WAL resource managers, which would be essential
        for database access even in single-user mode.
       </p></li><li class="listitem"><p>
        On Solaris, make the default setting of <a class="link" href="runtime-config-resource.html#GUC-DYNAMIC-SHARED-MEMORY-TYPE"><code class="varname">dynamic_shared_memory_type</code></a>
        be <code class="literal">sysv</code> (Thomas Munro)
       </p><p>
        The previous default choice, <code class="literal">posix</code>, can result
        in spurious failures on this platform.
       </p></li><li class="listitem"><p>
        Allow <a class="link" href="app-postgres.html" title="postgres"><code class="command">postgres
        -C</code></a> to properly report runtime-computed values
        (Nathan Bossart)
       </p><p>
        Previously runtime-computed values <a class="link" href="runtime-config-preset.html#GUC-DATA-CHECKSUMS"><code class="varname">data_checksums</code></a>,
        <a class="link" href="runtime-config-preset.html#GUC-WAL-SEGMENT-SIZE"><code class="varname">wal_segment_size</code></a>,
        and <a class="link" href="runtime-config-preset.html#GUC-DATA-DIRECTORY-MODE"><code class="varname">data_directory_mode</code></a>
        would report values that would not be accurate on the running
        server.  However, this does not work on a running server.
       </p></li></ul></div></div></div><div class="sect3" id="id-1.11.6.12.5.4"><div class="titlepage"><div><div><h4 class="title">E.8.3.2. Streaming Replication and Recovery</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>
       Add support for LZ4 and Zstandard compression of server-side <a class="link" href="continuous-archiving.html#BACKUP-BASE-BACKUP" title="26.3.2. Making a Base Backup">base backups</a> (Jeevan Ladhe,
       Robert Haas)
      </p></li><li class="listitem"><p>
       Run the checkpointer and bgwriter processes during crash recovery
       (Thomas Munro)
      </p><p>
       This helps to speed up long crash recoveries.
      </p></li><li class="listitem"><p>
       Allow <acronym class="acronym">WAL</acronym> processing to pre-fetch needed file
       contents (Thomas Munro)
      </p><p>
       This is controlled by the server variable <a class="link" href="runtime-config-wal.html#GUC-RECOVERY-PREFETCH"><code class="varname">recovery_prefetch</code></a>.
      </p></li><li class="listitem"><p>
       Allow archiving via loadable modules (Nathan Bossart)
      </p><p>
       Previously, archiving was only done by calling shell commands.
       The new server variable <a class="link" href="runtime-config-wal.html#GUC-ARCHIVE-LIBRARY"><code class="varname">archive_library</code></a>
       can be set to specify a library to be called for archiving.
      </p></li><li class="listitem"><p>
       No longer require <a class="link" href="protocol-replication.html" title="55.4. Streaming Replication Protocol"><code class="literal">IDENTIFY_SYSTEM</code></a>
       to be run before <code class="literal">START_REPLICATION</code> (Jeff Davis)
      </p></li></ul></div><div class="sect4" id="id-1.11.6.12.5.4.3"><div class="titlepage"><div><div><h5 class="title">E.8.3.2.1. <a class="link" href="logical-replication.html" title="Chapter 31. Logical Replication">Logical Replication</a></h5></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>
        Allow <a class="link" href="sql-createpublication.html" title="CREATE PUBLICATION">publication</a> of
        all tables in a schema (Vignesh C, Hou Zhijie, Amit Kapila)
       </p><p>
        For example, this syntax is now supported: <code class="literal">CREATE
        PUBLICATION pub1 FOR TABLES IN SCHEMA s1,s2</code>.
        <code class="command">ALTER PUBLICATION</code> supports a similar syntax.
        Tables added later to the listed schemas will also be replicated.
       </p></li><li class="listitem"><p>
        Allow publication content to be filtered using a
        <code class="literal">WHERE</code> clause (Hou Zhijie, Euler Taveira,
        Peter Smith, Ajin Cherian, Tomas Vondra, Amit Kapila)
       </p><p>
        Rows not satisfying the <code class="literal">WHERE</code> clause are not
        published.
       </p></li><li class="listitem"><p>
        Allow publication content to
        be restricted to specific columns (Tomas Vondra, Álvaro Herrera,
        Rahila Syed)
       </p></li><li class="listitem"><p>
        Allow skipping of transactions on a subscriber using <a class="link" href="sql-altersubscription.html" title="ALTER SUBSCRIPTION"><code class="command">ALTER SUBSCRIPTION
        ... SKIP</code></a> (Masahiko Sawada)
       </p></li><li class="listitem"><p>
        Add support for prepared (two-phase) transactions to logical
        replication (Peter Smith, Ajin Cherian, Amit Kapila, Nikhil
        Sontakke, Stas Kelvich)
       </p><p>
        The new <a class="link" href="protocol-replication.html" title="55.4. Streaming Replication Protocol"><code class="literal">CREATE_REPLICATION_SLOT</code></a>
        option is called <code class="literal">TWO_PHASE</code>.
        <span class="application">pg_recvlogical</span> now supports a new
        <code class="option">--two-phase</code> option during slot creation.
       </p></li><li class="listitem"><p>
        Prevent logical replication of empty transactions (Ajin Cherian,
        Hou Zhijie, Euler Taveira)
       </p><p>
        Previously, publishers would send empty transactions to
        subscribers if subscribed tables were not modified.
       </p></li><li class="listitem"><p>
        Add <acronym class="acronym">SQL</acronym> functions to monitor the directory
        contents of logical replication slots (Bharath Rupireddy)
       </p><p>
        The new functions are <a class="link" href="functions-admin.html#FUNCTIONS-ADMIN-GENFILE-TABLE" title="Table 9.99. Generic File Access Functions"><code class="function">pg_ls_logicalsnapdir()</code></a>,
        <code class="function">pg_ls_logicalmapdir()</code>, and
        <code class="function">pg_ls_replslotdir()</code>.  They can be run by
        members of the predefined <code class="literal">pg_monitor</code> role.
       </p></li><li class="listitem"><p>
        Allow subscribers to stop the application of logical replication changes on error
        (Osumi Takamichi, Mark Dilger)
       </p><p>
        This is enabled with the subscriber option <a class="link" href="sql-createsubscription.html" title="CREATE SUBSCRIPTION"><code class="literal">disable_on_error</code></a>
        and avoids possible infinite error loops during stream application.
       </p></li><li class="listitem"><p>
        Adjust subscriber server variables to match the publisher so
        datetime and float8 values are interpreted consistently (Japin Li)
       </p><p>
        Some publishers might be relying on inconsistent behavior.
       </p></li><li class="listitem"><p>
        Add system view <a class="link" href="monitoring-stats.html#MONITORING-PG-STAT-SUBSCRIPTION-STATS" title="28.2.9. pg_stat_subscription_stats"><code class="structname">pg_stat_subscription_stats</code></a>
        to report on subscriber activity (Masahiko Sawada)
       </p><p>
        The new function <a class="link" href="monitoring-stats.html#MONITORING-STATS-FUNCTIONS" title="28.2.24. Statistics Functions"><code class="function">pg_stat_reset_subscription_stats()</code></a>
        allows resetting these statistics counters.
       </p></li><li class="listitem"><p>
        Suppress duplicate entries in the <a class="link" href="view-pg-publication-tables.html" title="54.17. pg_publication_tables"><code class="structname">pg_publication_tables</code></a>
        system view (Hou Zhijie)
       </p><p>
        In some cases a partition could appear more than once.
       </p></li></ul></div></div></div><div class="sect3" id="id-1.11.6.12.5.5"><div class="titlepage"><div><div><h4 class="title">E.8.3.3. Utility Commands</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>
       Add <acronym class="acronym">SQL</acronym> <a class="link" href="sql-merge.html" title="MERGE"><code class="command">MERGE</code></a>
       command to adjust one table to match another (Simon Riggs, Pavan
       Deolasee, Álvaro Herrera, Amit Langote)
      </p><p>
       This is similar to <code class="command">INSERT ... ON CONFLICT</code>
       but more batch-oriented.
      </p></li><li class="listitem"><p>
       Add support for <code class="literal">HEADER</code> option in <a class="link" href="sql-copy.html" title="COPY"><code class="command">COPY</code></a> text format
       (Rémi Lapeyre)
      </p><p>
       The new option causes the column names to be output, and optionally
       verified on input.
      </p></li><li class="listitem"><p>
       Add new <acronym class="acronym">WAL</acronym>-logged method for <a class="link" href="sql-createdatabase.html" title="CREATE DATABASE">database creation</a> (Dilip Kumar)
      </p><p>
       This is the new default method for copying the template database,
       as it avoids the need for checkpoints during database creation.
       However, it might be slow if the template database is large, so
       the old method is still available.
      </p></li><li class="listitem"><p>
       Allow <a class="link" href="sql-createdatabase.html" title="CREATE DATABASE"><code class="command">CREATE
       DATABASE</code></a> to set the database <acronym class="acronym">OID</acronym>
       (Shruthi Gowda, Antonin Houska)
      </p></li><li class="listitem"><p>
       Prevent <a class="link" href="sql-dropdatabase.html" title="DROP DATABASE"><code class="command">DROP
       DATABASE</code></a>, <a class="link" href="sql-droptablespace.html" title="DROP TABLESPACE"><code class="command">DROP
       TABLESPACE</code></a>, and <a class="link" href="sql-alterdatabase.html" title="ALTER DATABASE"><code class="command">ALTER DATABASE SET
       TABLESPACE</code></a> from occasionally failing during
       concurrent use on Windows (Thomas Munro)
      </p></li><li class="listitem"><p>
       Allow foreign key <a class="link" href="ddl-constraints.html#DDL-CONSTRAINTS-FK" title="5.4.5. Foreign Keys"><code class="literal">ON
       DELETE SET</code></a> actions to affect only specified columns
       (Paul Martinez)
      </p><p>
       Previously, all of the columns in the foreign key were always
       affected.
      </p></li><li class="listitem"><p>
       Allow <a class="link" href="sql-altertable.html" title="ALTER TABLE"><code class="command">ALTER
       TABLE</code></a> to modify a table's <code class="literal">ACCESS
       METHOD</code> (Justin Pryzby, Jeff Davis)
      </p></li><li class="listitem"><p>
       Properly call object access hooks when <a class="link" href="sql-altertable.html" title="ALTER TABLE"><code class="command">ALTER TABLE</code></a>
       causes table rewrites (Michael Paquier)
      </p></li><li class="listitem"><p>
       Allow creation of unlogged <a class="link" href="sql-createsequence.html" title="CREATE SEQUENCE">sequences</a> (Peter Eisentraut)
      </p></li><li class="listitem"><p>
       Track dependencies on individual columns in the results of
       functions returning composite types (Tom Lane)
      </p><p>
       Previously, if a view or rule contained a reference to a specific
       column within the result of a composite-returning function, that
       was not noted as a dependency; the view or rule was only considered
       to depend on the composite type as a whole.  This meant that
       dropping the individual column would be allowed, causing problems
       in later use of the view or rule.  The column-level dependency is
       now also noted, so that dropping such a column will be rejected
       unless the view is changed or dropped.
      </p></li></ul></div></div><div class="sect3" id="id-1.11.6.12.5.6"><div class="titlepage"><div><div><h4 class="title">E.8.3.4. Data Types</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>
       Allow the scale of
       a <a class="link" href="datatype-numeric.html" title="8.1. Numeric Types"><code class="type">numeric</code></a>
       value to be negative, or greater than its precision (Dean Rasheed,
       Tom Lane)
      </p><p>
       This allows rounding of values to the left of the decimal point,
       e.g., <code class="literal">'1234'::numeric(4, -2)</code> returns 1200.
      </p></li><li class="listitem"><p>
       Improve overflow detection when casting values to <a class="link" href="datatype-datetime.html" title="8.5. Date/Time Types">interval</a> (Joe Koshakow)
      </p></li><li class="listitem"><p>
      Change the I/O format of type <code class="type">"char"</code> for non-ASCII
      characters (Tom Lane)
     </p></li><li class="listitem"><p>
       Update the display width information of modern Unicode characters,
       like emojis (Jacob Champion)
      </p><p>
       Also update from Unicode 5.0 to 14.0.0.  There is now an automated
       way to keep Postgres updated with Unicode releases.
      </p></li></ul></div></div><div class="sect3" id="id-1.11.6.12.5.7"><div class="titlepage"><div><div><h4 class="title">E.8.3.5. Functions</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>
       Add multirange input to <a class="link" href="functions-aggregate.html#FUNCTIONS-AGGREGATE-TABLE" title="Table 9.58. General-Purpose Aggregate Functions"><code class="function">range_agg()</code></a>
       (Paul Jungwirth)
      </p></li><li class="listitem"><p>
       Add <a class="link" href="tutorial-agg.html" title="2.7. Aggregate Functions"><code class="function">MIN()</code></a>
       and <code class="function">MAX()</code> aggregates for the <a class="link" href="datatype-numeric.html#DATATYPE-INT" title="8.1.1. Integer Types"><code class="type">xid8</code></a> data type (Ken Kato)
      </p></li><li class="listitem"><p>
       Add regular expression functions for compatibility with other
       relational systems (Gilles Darold, Tom Lane)
      </p><p>
       The new functions are <a class="link" href="functions-string.html#FUNCTIONS-STRING-OTHER" title="Table 9.10. Other String Functions and Operators"><code class="function">regexp_count()</code></a>,
       <code class="function">regexp_instr()</code>,
       <code class="function">regexp_like()</code>, and
       <code class="function">regexp_substr()</code>.  Some new optional arguments
       were also added to <code class="function">regexp_replace()</code>.
      </p></li><li class="listitem"><p>
       Add the ability to compute the distance between <a class="link" href="datatype-geometric.html#DATATYPE-POLYGON" title="8.8.6. Polygons"><code class="type">polygons</code></a> (Tom Lane)
      </p></li><li class="listitem"><p>
       Add <a class="link" href="functions-formatting.html#FUNCTIONS-FORMATTING-TABLE" title="Table 9.26. Formatting Functions"><code class="function">to_char()</code></a>
       format codes <code class="literal">of</code>, <code class="literal">tzh</code>, and
       <code class="literal">tzm</code> (Nitin Jadhav)
      </p><p>
       The upper-case equivalents of these were already supported.
      </p></li><li class="listitem"><p>
       When applying <a class="link" href="functions-datetime.html#FUNCTIONS-DATETIME-ZONECONVERT" title="9.9.4. AT TIME ZONE"><code class="literal">AT
       TIME ZONE</code></a> to a <code class="type">time with time zone</code>
       value, use the transaction start time rather than wall clock time
       to determine whether DST applies (Aleksander Alekseev, Tom Lane)
      </p><p>
       This allows the conversion to be considered stable rather than
       volatile, and it saves a kernel call per invocation.
      </p></li><li class="listitem"><p>
       Ignore NULL array elements in <a class="link" href="functions-textsearch.html#TEXTSEARCH-FUNCTIONS-TABLE" title="Table 9.43. Text Search Functions"><code class="function">ts_delete()</code></a> and
       <code class="function">setweight()</code> functions with array arguments
       (Jean-Christophe Arnu)
      </p><p>
       These functions effectively ignore empty-string array elements
       (since those could never match a valid lexeme).  It seems
       consistent to let them ignore NULL elements too, instead of
       failing.
      </p></li><li class="listitem"><p>
       Add support for petabyte units to <a class="link" href="functions-admin.html#FUNCTIONS-ADMIN-DBSIZE" title="Table 9.94. Database Object Size Functions"><code class="function">pg_size_pretty()</code></a>
       and <code class="function">pg_size_bytes()</code> (David Christensen)
      </p></li><li class="listitem"><p>
       Change <a class="link" href="functions-event-triggers.html#PG-EVENT-TRIGGER-DDL-COMMAND-END-FUNCTIONS" title="9.29.1. Capturing Changes at Command End"><code class="function">pg_event_trigger_ddl_commands()</code></a>
       to output references to other sessions' temporary schemas using the
       actual schema name (Tom Lane)
      </p><p>
       Previously this function reported all temporary schemas as
       <code class="literal">pg_temp</code>, but it's misleading to use that for any
       but the current session's temporary schema.
      </p></li></ul></div></div><div class="sect3" id="id-1.11.6.12.5.8"><div class="titlepage"><div><div><h4 class="title">E.8.3.6. <a class="link" href="plpgsql.html" title="Chapter 43. PL/pgSQL — SQL Procedural Language">PL/pgSQL</a></h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>
       Fix enforcement of PL/pgSQL variable <code class="literal">CONSTANT</code>
       markings (Tom Lane)
      </p><p>
       Previously, a variable could be used as a <a class="link" href="plpgsql-control-structures.html#PLPGSQL-STATEMENTS-CALLING-PROCEDURE" title="43.6.3. Calling a Procedure"><code class="command">CALL</code></a>
       output parameter or refcursor <code class="command">OPEN</code> variable
       despite being marked <code class="literal">CONSTANT</code>.
      </p></li></ul></div></div><div class="sect3" id="id-1.11.6.12.5.9"><div class="titlepage"><div><div><h4 class="title">E.8.3.7. <a class="link" href="libpq.html" title="Chapter 34. libpq — C Library">libpq</a></h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>
       Allow <acronym class="acronym">IP</acronym> address matching against a server
       certificate's Subject Alternative Name (Jacob Champion)
      </p></li><li class="listitem"><p>
       Allow <code class="function">PQsslAttribute()</code> to report the
       <acronym class="acronym">SSL</acronym> library type without requiring a libpq
       connection (Jacob Champion)
      </p></li><li class="listitem"><p>
       Change query cancellations sent by the client to use the same
       <acronym class="acronym">TCP</acronym> settings as normal client connections
       (Jelte Fennema)
      </p><p>
       This allows configured <acronym class="acronym">TCP</acronym> timeouts to apply
       to query cancel connections.
      </p></li><li class="listitem"><p>
       Prevent libpq event callback failures from forcing an error result
       (Tom Lane)
      </p></li></ul></div></div><div class="sect3" id="id-1.11.6.12.5.10"><div class="titlepage"><div><div><h4 class="title">E.8.3.8. Client Applications</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>
       Allow <a class="link" href="pgbench.html" title="pgbench"><span class="application">pgbench</span></a> to
       retry after serialization and deadlock failures (Yugo Nagata,
       Marina Polyakova)
      </p></li></ul></div><div class="sect4" id="id-1.11.6.12.5.10.3"><div class="titlepage"><div><div><h5 class="title">E.8.3.8.1. <a class="xref" href="app-psql.html" title="psql"><span class="refentrytitle"><span class="application">psql</span></span></a></h5></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>
        Improve performance
        of <span class="application">psql</span>'s <code class="command">\copy</code>
        command, by sending data in larger chunks (Heikki Linnakangas)
       </p></li><li class="listitem"><p>
        Add <code class="command">\dconfig</code> command to report server variables
        (Mark Dilger, Tom Lane)
       </p><p>
        This is similar to the server-side <code class="command">SHOW</code>
        command, but it can process patterns to show multiple variables
        conveniently.
       </p></li><li class="listitem"><p>
        Add <code class="command">\getenv</code> command
        to assign the value of an environment variable to a
        <span class="application">psql</span> variable (Tom Lane)
       </p></li><li class="listitem"><p>
        Add <code class="literal">+</code> option to the
        <code class="literal">\lo_list</code> and <code class="literal">\dl</code> commands to
        show large-object privileges (Pavel Luzanov)
       </p></li><li class="listitem"><p>
        Add a pager option for the <code class="command">\watch</code>
        command (Pavel Stehule, Thomas Munro)
       </p><p>
        This is only supported on Unix and is controlled by the
        <code class="envar">PSQL_WATCH_PAGER</code> environment variable.
       </p></li><li class="listitem"><p>
        Make <span class="application">psql</span> include intra-query double-hyphen
        comments in queries sent to the server (Tom Lane, Greg Nancarrow)
       </p><p>
        Previously such comments were removed from the query
        before being sent.  Double-hyphen comments that are before any
        query text are not sent, and are not recorded as separate
        <span class="application">psql</span> history entries.
       </p></li><li class="listitem"><p>
        Adjust <span class="application">psql</span> so
        that <span class="application">Readline</span>'s
        meta-<code class="literal">#</code> command will insert a double-hyphen
        comment marker (Tom Lane)
       </p><p>
        Previously a pound marker was inserted, unless the user had taken
        the trouble to configure a non-default comment marker.
       </p></li><li class="listitem"><p>
        Make <span class="application">psql</span> output all results when multiple
        queries are passed to the server at once (Fabien Coelho)
       </p><p>
        Previously, only the last query result was displayed.  The old
        behavior can be restored by setting
        the <code class="literal">SHOW_ALL_RESULTS</code> <span class="application">psql</span>
        variable to <code class="literal">off</code>.
       </p></li><li class="listitem"><p>
        After an error is detected
        in <code class="option">--single-transaction</code> mode, change the
        final <code class="command">COMMIT</code> command
        to <code class="command">ROLLBACK</code> only
        if <code class="varname">ON_ERROR_STOP</code> is set (Michael Paquier)
       </p><p>
        Previously, detection of an error in a <code class="option">-c</code> command
        or <code class="option">-f</code> script file would lead to
        issuing <code class="command">ROLLBACK</code> at the end, regardless of the
        value of <code class="varname">ON_ERROR_STOP</code>.
       </p></li><li class="listitem"><p>
        Improve <span class="application">psql</span>'s tab completion (Shinya
        Kato, Dagfinn Ilmari Mannsåker, Peter Smith, Koyu Tanigawa,
        Ken Kato, David Fetter, Haiying Tang, Peter Eisentraut, Álvaro
        Herrera, Tom Lane, Masahiko Sawada)
       </p></li><li class="listitem"><p>
        Limit support of <span class="application">psql</span>'s backslash
        commands to servers running <span class="productname">PostgreSQL</span>
        9.2 or later (Tom Lane)
       </p><p>
        Remove code that was only used when running with an older server.
        Commands that do not require any version-specific adjustments
        compared to 9.2 will still work.
       </p></li></ul></div></div><div class="sect4" id="id-1.11.6.12.5.10.4"><div class="titlepage"><div><div><h5 class="title">E.8.3.8.2. <a class="link" href="app-pgdump.html" title="pg_dump"><span class="application">pg_dump</span></a></h5></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>
        Make <span class="application">pg_dump</span> dump
        <code class="literal">public</code> schema ownership changes and security
        labels (Noah Misch)
       </p></li><li class="listitem"><p>
        Improve performance of dumping databases with many objects
        (Tom Lane)
       </p><p>
        This will also improve the performance of <a class="link" href="pgupgrade.html" title="pg_upgrade"><span class="application">pg_upgrade</span></a>.
       </p></li><li class="listitem"><p>
        Improve parallel <span class="application">pg_dump</span>'s performance
        for tables with large <acronym class="acronym">TOAST</acronym> tables (Tom Lane)
       </p></li><li class="listitem"><p>
        Add dump/restore option <code class="option">--no-table-access-method</code>
        to force restore to only use the default table access method
        (Justin Pryzby)
       </p></li><li class="listitem"><p>
        Limit support of <span class="application">pg_dump</span> and <a class="link" href="app-pg-dumpall.html" title="pg_dumpall"><span class="application">pg_dumpall</span></a>
        to servers running <span class="productname">PostgreSQL</span> 9.2 or
        later (Tom Lane)
       </p></li></ul></div></div></div><div class="sect3" id="id-1.11.6.12.5.11"><div class="titlepage"><div><div><h4 class="title">E.8.3.9. Server Applications</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>
       Add new <a class="link" href="app-pgbasebackup.html" title="pg_basebackup"><span class="application">pg_basebackup</span></a>
       option <code class="option">--target</code> to control the base backup location
       (Robert Haas)
      </p><p>
       The new options are <code class="literal">server</code> to write the
       backup locally and <code class="literal">blackhole</code> to discard the
       backup (for testing).
      </p></li><li class="listitem"><p>
       Allow <span class="application">pg_basebackup</span> to do server-side
       gzip, LZ4, and Zstandard compression and client-side LZ4 and
       Zstandard compression of base backup files (Dipesh Pandit,
       Jeevan Ladhe)
      </p><p>
       Client-side <code class="literal">gzip</code> compression was already
       supported.
      </p></li><li class="listitem"><p>
       Allow <span class="application">pg_basebackup</span> to compress on
       the server side and decompress on the client side before storage
       (Dipesh Pandit)
      </p><p>
       This is accomplished by specifying compression on the server side
       and plain output format.
      </p></li><li class="listitem"><p>
       Allow <span class="application">pg_basebackup</span>'s
       <code class="option">--compress</code> option to control the compression
       location (server or client), compression method, and compression
       options (Michael Paquier, Robert Haas)
      </p></li><li class="listitem"><p>
       Add the LZ4 compression method to <a class="link" href="app-pgreceivewal.html" title="pg_receivewal"><span class="application">pg_receivewal</span></a>
       (Georgios Kokolatos)
      </p><p>
       This is enabled via <code class="literal">--compress=lz4</code> and requires
       binaries to be built using <code class="option">--with-lz4</code>.
      </p></li><li class="listitem"><p>
       Add additional capabilities to
       <span class="application">pg_receivewal</span>'s
       <code class="option">--compress</code> option (Georgios Kokolatos)
      </p></li><li class="listitem"><p>
       Improve <span class="application">pg_receivewal</span>'s ability to
       restart at the proper <acronym class="acronym">WAL</acronym> location (Ronan
       Dunklau)
      </p><p>
       Previously, <span class="application">pg_receivewal</span> would start
       based on the <acronym class="acronym">WAL</acronym> file stored in the local archive
       directory, or at the sending server's current <acronym class="acronym">WAL</acronym>
       flush location.  With this change, if the sending server is running
       Postgres 15 or later, the local archive directory is empty, and
       a replication slot is specified, the replication slot's restart
       point will be used.
      </p></li><li class="listitem"><p>
       Add <a class="link" href="app-pgrewind.html" title="pg_rewind"><span class="application">pg_rewind</span></a>
       option <code class="option">--config-file</code> to simplify use when server
       configuration files are stored outside the data directory (Gunnar
       Bluth)
      </p></li></ul></div><div class="sect4" id="id-1.11.6.12.5.11.3"><div class="titlepage"><div><div><h5 class="title">E.8.3.9.1. <a class="link" href="pgupgrade.html" title="pg_upgrade"><span class="application">pg_upgrade</span></a></h5></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>
        Store <span class="application">pg_upgrade</span>'s log and
        temporary files in a subdirectory of the new cluster called
        <code class="filename">pg_upgrade_output.d</code> (Justin Pryzby)
       </p><p>
        Previously such files were left in the current directory,
        requiring manual cleanup.  Now they are automatically removed on
        successful completion of <span class="application">pg_upgrade</span>.
       </p></li><li class="listitem"><p>
        Disable default status reporting during
        <span class="application">pg_upgrade</span> operation if the output is
        not a terminal (Andres Freund)
       </p><p>
        The status reporting output can be enabled for non-tty usage by
        using <code class="option">--verbose</code>.
       </p></li><li class="listitem"><p>
        Make <span class="application">pg_upgrade</span> report all databases
        with invalid connection settings (Jeevan Ladhe)
       </p><p>
        Previously only the first database with an invalid connection
        setting was reported.
       </p></li><li class="listitem"><p>
        Make <span class="application">pg_upgrade</span> preserve tablespace
        and database OIDs, as well as relation relfilenode numbers
        (Shruthi Gowda, Antonin Houska)
       </p></li><li class="listitem"><p>
        Add a <code class="option">--no-sync</code> option to
        <span class="application">pg_upgrade</span> (Michael Paquier)
       </p><p>
        This is recommended only for testing.
       </p></li><li class="listitem"><p>
        Limit support of <span class="application">pg_upgrade</span> to old
        servers running <span class="productname">PostgreSQL</span> 9.2 or later
        (Tom Lane)
       </p></li></ul></div></div><div class="sect4" id="id-1.11.6.12.5.11.4"><div class="titlepage"><div><div><h5 class="title">E.8.3.9.2. <a class="link" href="pgwaldump.html" title="pg_waldump"><span class="application">pg_waldump</span></a></h5></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>
        Allow <span class="application">pg_waldump</span> output to be filtered by
        relation file node, block number, fork number, and full page images
        (David Christensen, Thomas Munro)
       </p></li><li class="listitem"><p>
        Make <span class="application">pg_waldump</span> report statistics
        before an interrupted exit (Bharath Rupireddy)
       </p><p>
        For example, issuing a control-C in a terminal running
        <code class="command">pg_waldump --stats --follow</code> will report the
        current statistics before exiting.  This does not work on Windows.
       </p></li><li class="listitem"><p>
        Improve descriptions of some transaction <acronym class="acronym">WAL</acronym>
        records reported by <span class="application">pg_waldump</span>
        (Masahiko Sawada, Michael Paquier)
       </p></li><li class="listitem"><p>
        Allow <span class="application">pg_waldump</span> to dump information
        about multiple resource managers (Heikki Linnakangas)
       </p><p>
        This is enabled by specifying the <code class="option">--rmgr</code> option
        multiple times.
       </p></li></ul></div></div></div><div class="sect3" id="id-1.11.6.12.5.12"><div class="titlepage"><div><div><h4 class="title">E.8.3.10. Documentation</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>
       Add documentation for <a class="link" href="functions-info.html#FUNCTIONS-INFO-CATALOG-TABLE" title="Table 9.71. System Catalog Information Functions"><code class="function">pg_encoding_to_char()</code></a>
       and <code class="function">pg_char_to_encoding()</code> (Ian Lawrence
       Barwick)
      </p></li><li class="listitem"><p>
       Document the <a class="link" href="functions-string.html#FUNCTIONS-STRING-OTHER" title="Table 9.10. Other String Functions and Operators"><code class="literal">^@</code></a>
       starts-with operator (Tom Lane)
      </p></li></ul></div></div><div class="sect3" id="id-1.11.6.12.5.13"><div class="titlepage"><div><div><h4 class="title">E.8.3.11. Source Code</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>
       Add support for continuous integration testing using cirrus-ci
       (Andres Freund, Thomas Munro, Melanie Plageman)
      </p></li><li class="listitem"><p>
       Add configure option <a class="link" href="install-procedure.html#CONFIGURE-OPTIONS-FEATURES" title="17.4.1.2. PostgreSQL Features"><code class="option">--with-zstd</code></a>
       to enable Zstandard builds (Jeevan Ladhe, Robert Haas, Michael
       Paquier)
      </p></li><li class="listitem"><p>
       Add an ABI identifier field to the magic block in loadable
       libraries, allowing
       non-community <span class="productname">PostgreSQL</span> distributions
       to identify libraries that are not compatible with other builds
       (Peter Eisentraut)
      </p><p>
       An ABI field mismatch will generate an error at load time.
      </p></li><li class="listitem"><p>
       Create a new <a class="link" href="catalog-pg-type.html" title="53.64. pg_type"><code class="structfield">pg_type.typcategory</code></a>
       value for <code class="type">"char"</code> (Tom Lane)
      </p><p>
       Some other internal-use-only types have also been assigned to this
       category.
      </p></li><li class="listitem"><p>
       Add new protocol message <a class="link" href="protocol-replication.html#PROTOCOL-REPLICATION-BASE-BACKUP"><code class="literal">TARGET</code></a>
       to specify a new <code class="command">COPY</code> method to be used for base
       backups (Robert Haas)
      </p><p>
       <a class="link" href="app-pgbasebackup.html" title="pg_basebackup"><span class="application">pg_basebackup</span></a>
       now uses this method.
      </p></li><li class="listitem"><p>
       Add new protocol message <a class="link" href="protocol-replication.html#PROTOCOL-REPLICATION-BASE-BACKUP"><code class="literal">COMPRESSION</code></a>
       and <code class="literal">COMPRESSION_DETAIL</code> to specify the compression
       method and options (Robert Haas)
      </p></li><li class="listitem"><p>
       Remove server support for old <code class="literal">BASE_BACKUP</code>
       command syntax and base backup protocol (Robert Haas)
      </p></li><li class="listitem"><p>
       Add support for extensions to set custom backup targets (Robert
       Haas)
      </p></li><li class="listitem"><p>
       Allow extensions to define custom <acronym class="acronym">WAL</acronym>
       resource managers (Jeff Davis)
      </p></li><li class="listitem"><p>
       Add function <a class="link" href="functions-info.html#FUNCTIONS-INFO-CATALOG-TABLE" title="Table 9.71. System Catalog Information Functions"><code class="function">pg_settings_get_flags()</code></a>
       to get the flags of server variables (Justin Pryzby)
      </p></li><li class="listitem"><p>
       On Windows, export all the server's global variables using
       <code class="literal">PGDLLIMPORT</code> markers (Robert Haas)
      </p><p>
       Previously, only specific variables were accessible to extensions
       on Windows.
      </p></li><li class="listitem"><p>
       Require GNU <span class="application">make</span> version 3.81 or later
       to build <span class="productname">PostgreSQL</span> (Tom Lane)
      </p></li><li class="listitem"><p>
       Require OpenSSL to build the <a class="link" href="pgcrypto.html" title="F.28. pgcrypto"><span class="application">pgcrypto</span></a>
       extension (Peter Eisentraut)
      </p></li><li class="listitem"><p>
       Require <span class="application">Perl</span>
       version 5.8.3 or later (Dagfinn Ilmari Mannsåker)
      </p></li><li class="listitem"><p>
       Require <span class="application">Python</span>
       version 3.2 or later (Andres Freund)
      </p></li></ul></div></div><div class="sect3" id="id-1.11.6.12.5.14"><div class="titlepage"><div><div><h4 class="title">E.8.3.12. Additional Modules</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>
       Allow <a class="link" href="amcheck.html" title="F.2. amcheck"><span class="application">amcheck</span></a> to
       check sequences (Mark Dilger)
      </p></li><li class="listitem"><p>
       Improve <span class="application">amcheck</span> sanity checks for
       <acronym class="acronym">TOAST</acronym> tables (Mark Dilger)
      </p></li><li class="listitem"><p>
       Add new module <span class="application"><a class="link" href="basebackup-to-shell.html" title="F.5. basebackup_to_shell">basebackup_to_shell</a></span>
       as an example of a custom backup target (Robert Haas)
      </p></li><li class="listitem"><p>
       Add new module <a class="link" href="basic-archive.html" title="F.6. basic_archive"><span class="application">basic_archive</span></a>
       as an example of performing archiving via a library (Nathan Bossart)
      </p></li><li class="listitem"><p>
       Allow <a class="link" href="btree-gist.html" title="F.9. btree_gist"><span class="application">btree_gist</span></a>
       indexes on boolean columns (Emre Hasegeli)
      </p><p>
       These can be used for exclusion constraints.
      </p></li><li class="listitem"><p>
       Fix <a class="link" href="pageinspect.html" title="F.25. pageinspect"><span class="application">pageinspect</span></a>'s
       <code class="function">page_header()</code> to handle 32-kilobyte page sizes
       (Quan Zongliang)
      </p><p>
       Previously, improper negative values could be returned in certain
       cases.
      </p></li><li class="listitem"><p>
       Add counters for temporary file block I/O to <a class="link" href="pgstatstatements.html" title="F.32. pg_stat_statements"><span class="application">pg_stat_statements</span></a>
       (Masahiko Sawada)
      </p></li><li class="listitem"><p>
       Add <acronym class="acronym">JIT</acronym> counters to pg_stat_statements (Magnus
       Hagander)
      </p></li><li class="listitem"><p>
       Add new module <a class="link" href="pgwalinspect.html" title="F.37. pg_walinspect"><span class="application">pg_walinspect</span></a>
       (Bharath Rupireddy)
      </p><p>
       This gives <acronym class="acronym">SQL</acronym>-level output similar to <a class="link" href="pgwaldump.html" title="pg_waldump"><span class="application">pg_waldump</span></a>.
      </p></li><li class="listitem"><p>
       Indicate the permissive/enforcing state in <a class="link" href="sepgsql.html" title="F.40. sepgsql"><span class="application">sepgsql</span></a> log
       messages (Dave Page)
      </p></li></ul></div><div class="sect4" id="id-1.11.6.12.5.14.3"><div class="titlepage"><div><div><h5 class="title">E.8.3.12.1. <a class="link" href="postgres-fdw.html" title="F.38. postgres_fdw"><span class="application">postgres_fdw</span></a></h5></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>
        Allow postgres_fdw to push down <code class="literal">CASE</code> expressions
        (Alexander Pyhalov)
       </p></li><li class="listitem"><p>
        Add server variable
        <code class="varname">postgres_fdw.application_name</code> to control the
        application name of postgres_fdw connections (Hayato Kuroda)
       </p><p>
        Previously the remote session's <a class="link" href="runtime-config-logging.html#GUC-APPLICATION-NAME"><code class="varname">application_name</code></a>
        could only be set on the remote server or via a
        <span class="application">postgres_fdw</span> connection specification.
        <code class="varname">postgres_fdw.application_name</code> supports some
        escape sequences for customization, making it easier to tell such
        connections apart on the remote server.
       </p></li><li class="listitem"><p>
        Allow parallel commit on <span class="application">postgres_fdw</span>
        servers (Etsuro Fujita)
       </p><p>
        This is enabled with the <code class="literal">CREATE SERVER</code> option
        <code class="literal">parallel_commit</code>.
       </p></li></ul></div></div></div></div><div class="sect2" id="RELEASE-15-ACKNOWLEDGEMENTS"><div class="titlepage"><div><div><h3 class="title">E.8.4. Acknowledgments</h3></div></div></div><p>
    The following individuals (in alphabetical order) have contributed
    to this release as patch authors, committers, reviewers, testers,
    or reporters of issues.
   </p><table border="0" summary="Simple list" class="simplelist"><tr><td>Abhijit Menon-Sen</td></tr><tr><td>Adam Brusselback</td></tr><tr><td>Adam Mackler</td></tr><tr><td>Adrian Ho</td></tr><tr><td>Ahsan Hadi</td></tr><tr><td>Ajin Cherian</td></tr><tr><td>Alastair McKinley</td></tr><tr><td>Aleksander Alekseev</td></tr><tr><td>Ales Zeleny</td></tr><tr><td>Alex Kingsborough</td></tr><tr><td>Alex Kozhemyakin</td></tr><tr><td>Alexander Korotkov</td></tr><tr><td>Alexander Kukushkin</td></tr><tr><td>Alexander Lakhin</td></tr><tr><td>Alexander Nawratil</td></tr><tr><td>Alexander Pyhalov</td></tr><tr><td>Alexey Borzov</td></tr><tr><td>Alexey Ermakov</td></tr><tr><td>Aliaksandr Kalenik</td></tr><tr><td>Álvaro Herrera</td></tr><tr><td>Amit Kapila</td></tr><tr><td>Amit Khandekar</td></tr><tr><td>Amit Langote</td></tr><tr><td>Amul Sul</td></tr><tr><td>Anastasia Lubennikova</td></tr><tr><td>Anders Kaseorg</td></tr><tr><td>Andreas Dijkman</td></tr><tr><td>Andreas Grob</td></tr><tr><td>Andreas Seltenreich</td></tr><tr><td>Andrei Zubkov</td></tr><tr><td>Andres Freund</td></tr><tr><td>Andrew Alsup</td></tr><tr><td>Andrew Bille</td></tr><tr><td>Andrew Dunstan</td></tr><tr><td>Andrew Gierth</td></tr><tr><td>Andrew Kesper</td></tr><tr><td>Andrey Borodin</td></tr><tr><td>Andrey Lepikhov</td></tr><tr><td>Andrey Sokolov</td></tr><tr><td>Andy Fan</td></tr><tr><td>Anton Melnikov</td></tr><tr><td>Anton Voloshin</td></tr><tr><td>Antonin Houska</td></tr><tr><td>Arjan van de Ven</td></tr><tr><td>Arne Roland</td></tr><tr><td>Arthur Zakirov</td></tr><tr><td>Ashutosh Bapat</td></tr><tr><td>Ashutosh Sharma</td></tr><tr><td>Ashwin Agrawal</td></tr><tr><td>Asif Rehman</td></tr><tr><td>Asim Praveen</td></tr><tr><td>Atsushi Torikoshi</td></tr><tr><td>Aya Iwata</td></tr><tr><td>Bauyrzhan Sakhariyev</td></tr><tr><td>Benoit Lobréau</td></tr><tr><td>Bernd Dorn</td></tr><tr><td>Bertrand Drouvot</td></tr><tr><td>Bharath Rupireddy</td></tr><tr><td>Björn Harrtell</td></tr><tr><td>Boris Kolpackov</td></tr><tr><td>Boris Korzun</td></tr><tr><td>Brad Nicholson</td></tr><tr><td>Brar Piening</td></tr><tr><td>Bruce Momjian</td></tr><tr><td>Bruno da Silva</td></tr><tr><td>Bryn Llewellyn</td></tr><tr><td>Carl Sopchak</td></tr><tr><td>Cary Huang</td></tr><tr><td>Chapman Flack</td></tr><tr><td>Chen Jiaoqian</td></tr><tr><td>Chris Bandy</td></tr><tr><td>Chris Lowder</td></tr><tr><td>Christian Quest</td></tr><tr><td>Christoph Berg</td></tr><tr><td>Christoph Heiss</td></tr><tr><td>Christophe Pettus</td></tr><tr><td>Christopher Painter-Wakefield</td></tr><tr><td>Claudio Freire</td></tr><tr><td>Clemens Zeidler</td></tr><tr><td>Corey Huinker</td></tr><tr><td>Dag Lem</td></tr><tr><td>Dagfinn Ilmari Mannsåker</td></tr><tr><td>Dan Kubb</td></tr><tr><td>Daniel Cherniy</td></tr><tr><td>Daniel Gustafsson</td></tr><tr><td>Daniel Polski</td></tr><tr><td>Daniel Vérité</td></tr><tr><td>Daniel Westermann</td></tr><tr><td>Daniele Varrazzo</td></tr><tr><td>Daniil Anisimov</td></tr><tr><td>Danny Shemesh</td></tr><tr><td>Darafei Praliaskouski</td></tr><tr><td>Daria Lepikhova</td></tr><tr><td>Dave Cramer</td></tr><tr><td>Dave Page</td></tr><tr><td>David Christensen</td></tr><tr><td>David Fetter</td></tr><tr><td>David G. Johnston</td></tr><tr><td>David Rowley</td></tr><tr><td>David Steele</td></tr><tr><td>David Zhang</td></tr><tr><td>Dean Rasheed</td></tr><tr><td>Dian Fay</td></tr><tr><td>Dilip Kumar</td></tr><tr><td>Dipesh Pandit</td></tr><tr><td>Dmitry Dolgov</td></tr><tr><td>Dmitry Koval</td></tr><tr><td>Dmitry Marakasov</td></tr><tr><td>Dominique Devienne</td></tr><tr><td>Dong Wook</td></tr><tr><td>Drew DeVault</td></tr><tr><td>Eduard Català</td></tr><tr><td>Egor Chindyaskin</td></tr><tr><td>Egor Rogov</td></tr><tr><td>Ekaterina Kiryanova</td></tr><tr><td>Elena Indrupskaya</td></tr><tr><td>Elvis Pranskevichus</td></tr><tr><td>Emmanuel Quincerot</td></tr><tr><td>Emre Hasegeli</td></tr><tr><td>Eric Mutta</td></tr><tr><td>Erica Zhang</td></tr><tr><td>Erik Rijkers</td></tr><tr><td>Erki Eessaar</td></tr><tr><td>Etsuro Fujita</td></tr><tr><td>Euler Taveira</td></tr><tr><td>Fabien Coelho</td></tr><tr><td>Fabrice Chapuis</td></tr><tr><td>Fabrice Fontaine</td></tr><tr><td>Fabrízio de Royes Mello</td></tr><tr><td>Feike Steenbergen</td></tr><tr><td>Filip Gospodinov</td></tr><tr><td>Florin Irion</td></tr><tr><td>Floris Van Nee</td></tr><tr><td>Frédéric Yhuel</td></tr><tr><td>Gabriela Serventi</td></tr><tr><td>Gaurab Dey</td></tr><tr><td>Geoff Winkless</td></tr><tr><td>Geoffrey Blake</td></tr><tr><td>Georgios Kokolatos</td></tr><tr><td>Gilles Darold</td></tr><tr><td>Greg Nancarrow</td></tr><tr><td>Greg Rychlewski</td></tr><tr><td>Greg Sabino Mullane</td></tr><tr><td>Greg Stark</td></tr><tr><td>Gregory Smith</td></tr><tr><td>Guillaume Lelarge</td></tr><tr><td>Gunnar Bluth</td></tr><tr><td>Gurjeet Singh</td></tr><tr><td>Haiyang Wang</td></tr><tr><td>Haiying Tang</td></tr><tr><td>Hannu Krosing</td></tr><tr><td>Hans Buschmann</td></tr><tr><td>Hayato Kuroda</td></tr><tr><td>Heath Lord</td></tr><tr><td>Heikki Linnakangas</td></tr><tr><td>Herwig Goemans</td></tr><tr><td>Himanshu Upadhyaya</td></tr><tr><td>Holly Roberts</td></tr><tr><td>Hou Zhijie</td></tr><tr><td>Hubert Lubaczewski</td></tr><tr><td>Ian Barwick</td></tr><tr><td>Ian Campbell</td></tr><tr><td>Ibrar Ahmed</td></tr><tr><td>Ildus Kurbangaliev</td></tr><tr><td>Ilya Anfimov</td></tr><tr><td>Itamar Gafni</td></tr><tr><td>Jacob Champion</td></tr><tr><td>Jaime Casanova</td></tr><tr><td>Jakub Wartak</td></tr><tr><td>James Coleman</td></tr><tr><td>James Hilliard</td></tr><tr><td>James Inform</td></tr><tr><td>Jan Piotrowski</td></tr><tr><td>Japin Li</td></tr><tr><td>Jason Harvey</td></tr><tr><td>Jason Kim</td></tr><tr><td>Jean-Christophe Arnu</td></tr><tr><td>Jeevan Ladhe</td></tr><tr><td>Jeff Davis</td></tr><tr><td>Jeff Janes</td></tr><tr><td>Jehan-Guillaume de Rorthais</td></tr><tr><td>Jelte Fennema</td></tr><tr><td>Jeremy Evans</td></tr><tr><td>Jeremy Schneider</td></tr><tr><td>Jian Guo</td></tr><tr><td>Jian He</td></tr><tr><td>Jimmy Yih</td></tr><tr><td>Jiri Fejfar</td></tr><tr><td>Jitka Plesníková</td></tr><tr><td>Joe Conway</td></tr><tr><td>Joe Wildish</td></tr><tr><td>Joel Jacobson</td></tr><tr><td>Joey Bodoia</td></tr><tr><td>John Naylor</td></tr><tr><td>Jonathan Katz</td></tr><tr><td>Josef Simanek</td></tr><tr><td>Joseph Koshakow</td></tr><tr><td>Josh Soref</td></tr><tr><td>Joshua Brindle</td></tr><tr><td>Juan José Santamaría Flecha</td></tr><tr><td>Julien Rouhaud</td></tr><tr><td>Julien Roze</td></tr><tr><td>Junwang Zhao</td></tr><tr><td>Jürgen Purtz</td></tr><tr><td>Justin Pryzby</td></tr><tr><td>Ken Kato</td></tr><tr><td>Kevin Burke</td></tr><tr><td>Kevin Grittner</td></tr><tr><td>Kevin Humphreys</td></tr><tr><td>Kevin McKibbin</td></tr><tr><td>Kevin Sweet</td></tr><tr><td>Kevin Zheng</td></tr><tr><td>Klaudie Willis</td></tr><tr><td>Konstantin Knizhnik</td></tr><tr><td>Konstantina Skovola</td></tr><tr><td>Kosei Masumura</td></tr><tr><td>Kotaro Kawamoto</td></tr><tr><td>Koyu Tanigawa</td></tr><tr><td>Kuntal Ghosh</td></tr><tr><td>Kyotaro Horiguchi</td></tr><tr><td>Lars Kanis</td></tr><tr><td>Lauren Fliksteen</td></tr><tr><td>Laurent Hasson</td></tr><tr><td>Laurenz Albe</td></tr><tr><td>Leslie Lemaire</td></tr><tr><td>Liam Bowen</td></tr><tr><td>Lingjie Qiang</td></tr><tr><td>Liu Huailing</td></tr><tr><td>Louis Jachiet</td></tr><tr><td>Lukas Fittl</td></tr><tr><td>Ma Liangzhu</td></tr><tr><td>Maciek Sakrejda</td></tr><tr><td>Magnus Hagander</td></tr><tr><td>Mahendra Singh Thalor</td></tr><tr><td>Maksim Milyutin</td></tr><tr><td>Marc Bachmann</td></tr><tr><td>Marcin Krupowicz</td></tr><tr><td>Marcus Gartner</td></tr><tr><td>Marek Szuba</td></tr><tr><td>Marina Polyakova</td></tr><tr><td>Mario Emmenlauer</td></tr><tr><td>Mark Dilger</td></tr><tr><td>Mark Murawski</td></tr><tr><td>Mark Wong</td></tr><tr><td>Markus Wanner</td></tr><tr><td>Markus Winand</td></tr><tr><td>Martijn van Oosterhout</td></tr><tr><td>Martin Jurca</td></tr><tr><td>Martin Kalcher</td></tr><tr><td>Martín Marqués</td></tr><tr><td>Masahiko Sawada</td></tr><tr><td>Masahiro Ikeda</td></tr><tr><td>Masao Fujii</td></tr><tr><td>Masaya Kawamoto</td></tr><tr><td>Masayuki Hirose</td></tr><tr><td>Matthias van de Meent</td></tr><tr><td>Matthijs van der Vleuten</td></tr><tr><td>Maxim Orlov</td></tr><tr><td>Maxim Yablokov</td></tr><tr><td>Melanie Plageman</td></tr><tr><td>Michael Banck</td></tr><tr><td>Michael Harris</td></tr><tr><td>Michael J. Sullivan</td></tr><tr><td>Michael Meskes</td></tr><tr><td>Michael Mühlbeyer</td></tr><tr><td>Michael Paquier</td></tr><tr><td>Michael Powers</td></tr><tr><td>Mike Fiedler</td></tr><tr><td>Mike Oh</td></tr><tr><td>Mikhail Kulagin</td></tr><tr><td>Miles Delahunty</td></tr><tr><td>Naoki Okano</td></tr><tr><td>Nathan Bossart</td></tr><tr><td>Nathan Long</td></tr><tr><td>Nazir Bilal Yavuz</td></tr><tr><td>Neha Sharma</td></tr><tr><td>Neil Chen</td></tr><tr><td>Nicola Contu</td></tr><tr><td>Nicolas Lutic</td></tr><tr><td>Nikhil Benesch</td></tr><tr><td>Nikhil Shetty</td></tr><tr><td>Nikhil Sontakke</td></tr><tr><td>Nikita Glukhov</td></tr><tr><td>Nikolai Berkoff</td></tr><tr><td>Nikolay Samokhvalov</td></tr><tr><td>Nikolay Shaplov</td></tr><tr><td>Nitin Jadhav</td></tr><tr><td>Noah Misch</td></tr><tr><td>Noboru Saito</td></tr><tr><td>Noriyoshi Shinoda</td></tr><tr><td>Olaf Bohlen</td></tr><tr><td>Olly Betts</td></tr><tr><td>Onder Kalaci</td></tr><tr><td>Oskar Stenberg</td></tr><tr><td>Otto Kekalainen</td></tr><tr><td>Paul Guo</td></tr><tr><td>Paul Jungwirth</td></tr><tr><td>Paul Martinez</td></tr><tr><td>Pavan Deolasee</td></tr><tr><td>Pavel Borisov</td></tr><tr><td>Pavel Luzanov</td></tr><tr><td>Pavel Stehule</td></tr><tr><td>Peter Eisentraut</td></tr><tr><td>Peter Geoghegan</td></tr><tr><td>Peter Slavov</td></tr><tr><td>Peter Smith</td></tr><tr><td>Petr Jelínek</td></tr><tr><td>Phil Florent</td></tr><tr><td>Phil Krylov</td></tr><tr><td>Pierre-Aurélien Georges</td></tr><tr><td>Prabhat Sahu</td></tr><tr><td>Quan Zongliang</td></tr><tr><td>Rachel Heaton</td></tr><tr><td>Rahila Syed</td></tr><tr><td>Rajakavitha Kodhandapani</td></tr><tr><td>Rajkumar Raghuwanshi</td></tr><tr><td>Ranier Vilela</td></tr><tr><td>Rei Kamigishi</td></tr><tr><td>Reid Thompson</td></tr><tr><td>Rémi Lapeyre</td></tr><tr><td>Renan Soares Lopes</td></tr><tr><td>Richard Guo</td></tr><tr><td>Richard Wesley</td></tr><tr><td>RKN Sai Krishna</td></tr><tr><td>Robert Haas</td></tr><tr><td>Robert Treat</td></tr><tr><td>Roberto Mello</td></tr><tr><td>Robins Tharakan</td></tr><tr><td>Roger Mason</td></tr><tr><td>Roman Zharkov</td></tr><tr><td>Ronan Dunklau</td></tr><tr><td>Rui Zhao</td></tr><tr><td>Ryan Kelly</td></tr><tr><td>Ryo Matsumura</td></tr><tr><td>Ryohei Takahashi</td></tr><tr><td>Sadhuprasad Patro</td></tr><tr><td>Sait Talha Nisanci</td></tr><tr><td>Sami Imseih</td></tr><tr><td>Sandeep Thakkar</td></tr><tr><td>Sebastian Kemper</td></tr><tr><td>Sehrope Sarkuni</td></tr><tr><td>Sergei Kornilov</td></tr><tr><td>Sergei Shoulbakov</td></tr><tr><td>Sergey Shinderuk</td></tr><tr><td>Shay Rojansky</td></tr><tr><td>Shenhao Wang</td></tr><tr><td>Shi Yu</td></tr><tr><td>Shinya Kato</td></tr><tr><td>Shruthi Gowda</td></tr><tr><td>Simon Perepelitsa</td></tr><tr><td>Simon Riggs</td></tr><tr><td>Sirisha Chamarthi</td></tr><tr><td>Soumyadeep Chakraborty</td></tr><tr><td>Stan Hu</td></tr><tr><td>Stas Kelvich</td></tr><tr><td>Stefen Hillman</td></tr><tr><td>Stephen Frost</td></tr><tr><td>Steve Chavez</td></tr><tr><td>Sumanta Mukherjee</td></tr><tr><td>Suraj Khamkar</td></tr><tr><td>Suraj Kharage</td></tr><tr><td>Sven Klemm</td></tr><tr><td>Takamichi Osumi</td></tr><tr><td>Takayuki Tsunakawa</td></tr><tr><td>Takeshi Ideriha</td></tr><tr><td>Tatsuhiro Nakamori</td></tr><tr><td>Tatsuhito Kasahara</td></tr><tr><td>Tatsuo Ishii</td></tr><tr><td>Tatsuro Yamada</td></tr><tr><td>Teja Mupparti</td></tr><tr><td>Teodor Sigaev</td></tr><tr><td>Thibaud Walkowiak</td></tr><tr><td>Thom Brown</td></tr><tr><td>Thomas McKay</td></tr><tr><td>Thomas Munro</td></tr><tr><td>Tim McNamara</td></tr><tr><td>Timo Stolz</td></tr><tr><td>Timur Khanjanov</td></tr><tr><td>Tom Lane</td></tr><tr><td>Tomas Barton</td></tr><tr><td>Tomas Vondra</td></tr><tr><td>Tony Reix</td></tr><tr><td>Troy Frericks</td></tr><tr><td>Tushar Ahuja</td></tr><tr><td>Victor Wagner</td></tr><tr><td>Victor Yegorov</td></tr><tr><td>Vignesh C</td></tr><tr><td>Vik Fearing</td></tr><tr><td>Vincas Dargis</td></tr><tr><td>Vitaly Burovoy</td></tr><tr><td>Vitaly Voronov</td></tr><tr><td>Vladimir Sitnikov</td></tr><tr><td>Wang Ke</td></tr><tr><td>Wei Sun</td></tr><tr><td>Wei Wang</td></tr><tr><td>Whale Song</td></tr><tr><td>Will Mortensen</td></tr><tr><td>Wolfgang Walther</td></tr><tr><td>Yanliang Lei</td></tr><tr><td>Yaoguang Chen</td></tr><tr><td>Yogendra Suralkar</td></tr><tr><td>YoungHwan Joo</td></tr><tr><td>Yugo Nagata</td></tr><tr><td>Yukun Wang</td></tr><tr><td>Yura Sokolov</td></tr><tr><td>Yusuke Egashira</td></tr><tr><td>Yuzuko Hosoya</td></tr><tr><td>Zhang Mingli</td></tr><tr><td>Zhang Wenjie</td></tr><tr><td>Zhihong Yu</td></tr><tr><td>Zhiyong Wu</td></tr></table></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="release-15-1.html" title="E.7. Release 15.1">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-prior.html" title="E.9. Prior Releases">Next</a></td></tr><tr><td width="40%" align="left" valign="top">E.7. Release 15.1 </td><td width="20%" align="center"><a accesskey="h" href="index.html" title="PostgreSQL 15.7 Documentation">Home</a></td><td width="40%" align="right" valign="top"> E.9. Prior Releases</td></tr></table></div></body></html>