git.postgresql.org Git - users/rhaas/postgres.git/atom log Robert Haas's development tree. http://waps.l3s.uni-hannover.de/gitweb/static/queryCache.html?p=users/rhaas/postgres.git Robert Haas /static/favicon.png /static/git-logo.png 2025-11-04T19:31:43Z gitweb Fix snapshot handling bug in recent BRIN fix 2025-11-04T19:31:43Z Álvaro Herrera alvherre@kurilemu.de Álvaro Herrera alvherre@kurilemu.de 2025-11-04T19:31:43Z http://waps.l3s.uni-hannover.de/gitweb/static/queryCache.html?p=users/rhaas/postgres.git;a=commitdiff;h=0a3d27bfe0fb229253aa95feccd0360530b7edd8
Fix snapshot handling bug in recent BRIN fix

Commit a95e3d84c0e0 added ActiveSnapshot push+pop when processing
work-items (BRIN autosummarization), but forgot to handle the case of
a transaction failing during the run, which drops the snapshot untimely.
Fix by making the pop conditional on an element being actually there.

Author: Álvaro Herrera <alvherre@kurilemu.de>
Backpatch-through: 13
Discussion: https://postgr.es/m/202511041648.nofajnuddmwk@alvherre.pgsql
  • [DBH] src/backend/postmaster/autovacuum.c
Trim TIDs during parallel GIN builds more eagerly 2025-11-04T18:30:17Z Tomas Vondra tomas.vondra@postgresql.org Tomas Vondra tomas.vondra@postgresql.org 2025-11-04T18:30:17Z http://waps.l3s.uni-hannover.de/gitweb/static/queryCache.html?p=users/rhaas/postgres.git;a=commitdiff;h=1213cb475391640508d2495b2b560329897d152c
Trim TIDs during parallel GIN builds more eagerly

The parallel GIN builds perform "freezing" of TID lists when merging
chunks built earlier. This means determining what part of the list can
no longer change, depending on the last received chunk. The frozen part
can be evicted from memory and written out.

The code attempted to freeze items right before merging the old and new
TID list, after already attempting to trim the current buffer. That
means part of the data may get frozen based on the new TID list, but
will be trimmed later (on next loop). This increases memory usage.

This inverts the order, so that we freeze data first (before trimming).
The benefits are likely relatively small, but it's also virtually free
with no other downsides.

Discussion: https://postgr.es/m/CAHLJuCWDwn-PE2BMZE4Kux7x5wWt_6RoWtA0mUQffEDLeZ6sfA@mail.gmail.com
  • [DBH] src/backend/access/gin/gininsert.c
psql: Add tab completion for COPY ... PROGRAM. 2025-11-04T18:51:39Z Masahiko Sawada msawada@postgresql.org Masahiko Sawada msawada@postgresql.org 2025-11-04T18:51:39Z http://waps.l3s.uni-hannover.de/gitweb/static/queryCache.html?p=users/rhaas/postgres.git;a=commitdiff;h=6d2ff1de4d0b66eb0288e21021c3741b9df1df0d
psql: Add tab completion for COPY ... PROGRAM.

This commit adds tab completion support for COPY TO PROGRAM and COPY
FROM PROGRAM syntax in psql.

Author: Yugo Nagata <nagata@sraoss.co.jp>
Reviewed-by: Masahiko Sawada <sawada.mshk@gmail.com>
Discussion: https://postgr.es/m/20250605100835.b396f9d656df1018f65a4556@sraoss.co.jp
  • [DBH] src/bin/psql/tab-complete.in.c
psql: Improve tab completion for COPY ... STDIN/STDOUT. 2025-11-04T18:40:58Z Masahiko Sawada msawada@postgresql.org Masahiko Sawada msawada@postgresql.org 2025-11-04T18:40:58Z http://waps.l3s.uni-hannover.de/gitweb/static/queryCache.html?p=users/rhaas/postgres.git;a=commitdiff;h=02fd47dbfade9b86ae4c34b5b01e10abb6dc45dc
psql: Improve tab completion for COPY ... STDIN/STDOUT.

This commit enhances tab completion for both COPY FROM and COPY TO
commands to suggest STDIN and STDOUT, respectively.

To make suggesting both file names and keywords easier, it introduces
a new COMPLETE_WITH_FILES_PLUS() macro.

Author: Yugo Nagata <nagata@sraoss.co.jp>
Reviewed-by: Masahiko Sawada <sawada.mshk@gmail.com>
Discussion: https://postgr.es/m/20250605100835.b396f9d656df1018f65a4556@sraoss.co.jp
  • [DBH] src/bin/psql/tab-complete.in.c
ci: debian: Switch to Debian Trixie release 2025-11-04T18:25:22Z Andres Freund andres@anarazel.de Andres Freund andres@anarazel.de 2025-11-04T18:25:22Z http://waps.l3s.uni-hannover.de/gitweb/static/queryCache.html?p=users/rhaas/postgres.git;a=commitdiff;h=be9efd4929b0f4843cdde38866421c4d486b45e3
ci: debian: Switch to Debian Trixie release

Debian Trixie CI images are generated now [1], so use them with the
following changes:

- detect_stack_use_after_return=0 option is added to the ASAN_OPTIONS
  because ASAN uses a "shadow stack" to track stack variable lifetimes
  and this confuses Postgres' stack depth check [2].

- Perl is updated to the newer version (perl5.40-i386-linux-gnu).

- LLVM-14 is no longer default installation, no need to force using
  LLVM-16.

- Switch MinGW CC/CXX to x86_64-w64-mingw32ucrt-* to fix build failure
  from missing _iswctype_l in mingw-w64 v12 headers.

[1] https://github.com/anarazel/pg-vm-images/commit/35a144793f
[2] https://postgr.es/m/20240130212304.q66rquj5es4375ab%40awork3.anarazel.de

Author: Nazir Bilal Yavuz <byavuz81@gmail.com>
Discussion: https://postgr.es/m/CAN55FZ1_B1usTskAv+AYt1bA7abVd9YH6XrUUSbr-2Z0d5Wd8w@mail.gmail.com
Backpatch: 15-, where CI support was added
  • [DBH] .cirrus.tasks.yml
Limit the size of TID lists during parallel GIN build 2025-11-04T17:46:37Z Tomas Vondra tomas.vondra@postgresql.org Tomas Vondra tomas.vondra@postgresql.org 2025-11-04T17:46:37Z http://waps.l3s.uni-hannover.de/gitweb/static/queryCache.html?p=users/rhaas/postgres.git;a=commitdiff;h=c98dffcb7c7010d216dc16d22cb594ef7d65fde1
Limit the size of TID lists during parallel GIN build

When building intermediate TID lists during parallel GIN builds, split
the sorted lists into smaller chunks, to limit the amount of memory
needed when merging the chunks later.

The leader may need to keep in memory up to one chunk per worker, and
possibly one extra chunk (before evicting some of the data). The code
processing item pointers uses regular palloc/repalloc calls, which means
it's subject to the MaxAllocSize (1GB) limit.

We could fix this by allowing huge allocations, but that'd require
changes in many places without much benefit. Larger chunks do not
actually improve performance, so the memory usage would be wasted.

Fixed by limiting the chunk size to not hit MaxAllocSize. Each worker
gets a fair share.

This requires remembering the number of participating workers, in a
place that can be accessed from the callback. Luckily, the bs_worker_id
field in GinBuildState was unused, so repurpose that.

Report by Greg Smith, investigation and fix by me. Batchpatched to 18,
where parallel GIN builds were introduced.

Reported-by: Gregory Smith <gregsmithpgsql@gmail.com>
Discussion: https://postgr.es/m/CAHLJuCWDwn-PE2BMZE4Kux7x5wWt_6RoWtA0mUQffEDLeZ6sfA@mail.gmail.com
Backpatch-through: 18
  • [DBH] src/backend/access/gin/gininsert.c
Remove redundant memset() introduced by a0942f4. 2025-11-04T17:46:00Z Jeff Davis jdavis@postgresql.org Jeff Davis jdavis@postgresql.org 2025-11-04T17:46:00Z http://waps.l3s.uni-hannover.de/gitweb/static/queryCache.html?p=users/rhaas/postgres.git;a=commitdiff;h=4bfaea11d2d686a06487c2e33297bf17f12732d7
Remove redundant memset() introduced by a0942f4.

Reported-by: Chao Li <li.evan.chao@gmail.com>
Discussion: https://postgr.es/m/CAEoWx2kAkNaDa01O0nKsQmkfEmxsDvm09SU=f1T0CV8ew3qJEA@mail.gmail.com
  • [DBH] src/backend/access/common/heaptuple.c
Allow "SET list_guc TO NULL" to specify setting the GUC to empty. 2025-11-04T17:37:40Z Tom Lane tgl@sss.pgh.pa.us Tom Lane tgl@sss.pgh.pa.us 2025-11-04T17:37:40Z http://waps.l3s.uni-hannover.de/gitweb/static/queryCache.html?p=users/rhaas/postgres.git;a=commitdiff;h=ff4597acd4c3d957373335034e1ac16b6584c3e6
Allow "SET list_guc TO NULL" to specify setting the GUC to empty.

We have never had a SET syntax that allows setting a GUC_LIST_INPUT
parameter to be an empty list.  A locution such as
	SET search_path = '';
doesn't mean that; it means setting the GUC to contain a single item
that is an empty string.  (For search_path the net effect is much the
same, because search_path ignores invalid schema names and '' must be
invalid.)  This is confusing, not least because configuration-file
entries and the set_config() function can easily produce empty-list
values.

We considered making the empty-string syntax do this, but that would
foreclose ever allowing empty-string items to be valid in list GUCs.
While there isn't any obvious use-case for that today, it feels like
the kind of restriction that might hurt someday.  Instead, let's
accept the forbidden-up-to-now value NULL and treat that as meaning an
empty list.  (An objection to this could be "what if we someday want
to allow NULL as a GUC value?".  That seems unlikely though, and even
if we did allow it for scalar GUCs, we could continue to treat it as
meaning an empty list for list GUCs.)

Author: Tom Lane <tgl@sss.pgh.pa.us>
Reviewed-by: Andrei Klychkov <andrew.a.klychkov@gmail.com>
Reviewed-by: Jim Jones <jim.jones@uni-muenster.de>
Discussion: https://postgr.es/m/CA+mfrmwsBmYsJayWjc8bJmicxc3phZcHHY=yW5aYe=P-1d_4bg@mail.gmail.com
  • [DBH] doc/src/sgml/ref/alter_system.sgml
  • [DBH] doc/src/sgml/ref/set.sgml
  • [DBH] src/backend/parser/gram.y
  • [DBH] src/backend/utils/adt/ruleutils.c
  • [DBH] src/backend/utils/adt/varlena.c
  • [DBH] src/backend/utils/misc/guc_funcs.c
  • [DBH] src/bin/pg_dump/dumputils.c
  • [DBH] src/bin/pg_dump/pg_dump.c
  • [DBH] src/test/regress/expected/guc.out
  • [DBH] src/test/regress/expected/rules.out
  • [DBH] src/test/regress/sql/guc.sql
  • [DBH] src/test/regress/sql/rules.sql
Have psql's "\? variables" show csv_fieldsep 2025-11-04T16:30:44Z Álvaro Herrera alvherre@kurilemu.de Álvaro Herrera alvherre@kurilemu.de 2025-11-04T16:30:44Z http://waps.l3s.uni-hannover.de/gitweb/static/queryCache.html?p=users/rhaas/postgres.git;a=commitdiff;h=93b7ab5b4beee2f0cdef9d57d934e3a57638f5ca
Have psql's "\? variables" show csv_fieldsep

Accidental omission in commit aa2ba50c2c13.  There are too many lists of
these variables ...

Discussion: https://postgr.es/m/202511031738.eqaeaedpx5cr@alvherre.pgsql
  • [DBH] src/bin/psql/help.c
Tighten check for generated column in partition key expression 2025-11-04T13:31:57Z Peter Eisentraut peter@eisentraut.org Peter Eisentraut peter@eisentraut.org 2025-11-04T13:31:57Z http://waps.l3s.uni-hannover.de/gitweb/static/queryCache.html?p=users/rhaas/postgres.git;a=commitdiff;h=040cc5f3c782839ed30816671c5b5f36df0d2398
Tighten check for generated column in partition key expression

A generated column may end up being part of the partition key
expression, if it's specified as an expression e.g. "(<generated
column name>)" or if the partition key expression contains a whole-row
reference, even though we do not allow a generated column to be part
of partition key expression.  Fix this hole.

Co-authored-by: jian he <jian.universality@gmail.com>
Co-authored-by: Ashutosh Bapat <ashutosh.bapat.oss@gmail.com>
Reviewed-by: Fujii Masao <masao.fujii@oss.nttdata.com>
Discussion: https://www.postgresql.org/message-id/flat/CACJufxF%3DWDGthXSAQr9thYUsfx_1_t9E6N8tE3B8EqXcVoVfQw%40mail.gmail.com
  • [DBH] src/backend/commands/tablecmds.c
  • [DBH] src/test/regress/expected/generated_stored.out
  • [DBH] src/test/regress/expected/generated_virtual.out
  • [DBH] src/test/regress/sql/generated_stored.sql
  • [DBH] src/test/regress/sql/generated_virtual.sql
BRIN autosummarization may need a snapshot 2025-11-04T12:23:26Z Álvaro Herrera alvherre@kurilemu.de Álvaro Herrera alvherre@kurilemu.de 2025-11-04T12:23:26Z http://waps.l3s.uni-hannover.de/gitweb/static/queryCache.html?p=users/rhaas/postgres.git;a=commitdiff;h=a95e3d84c0e0ffd1e27c185dd69d053e43f2f8b5
BRIN autosummarization may need a snapshot

It's possible to define BRIN indexes on functions that require a
snapshot to run, but the autosummarization feature introduced by commit
7526e10224f0 fails to provide one.  This causes autovacuum to leave a
BRIN placeholder tuple behind after a failed work-item execution, making
such indexes less efficient.  Repair by obtaining a snapshot prior to
running the task, and add a test to verify this behavior.

Author: Álvaro Herrera <alvherre@kurilemu.de>
Reported-by: Giovanni Fabris <giovanni.fabris@icon.it>
Reported-by: Arthur Nascimento <tureba@gmail.com>
Backpatch-through: 13
Discussion: https://postgr.es/m/202511031106.h4fwyuyui6fz@alvherre.pgsql
  • [DBH] src/backend/postmaster/autovacuum.c
  • [DBH] src/test/modules/brin/t/01_workitems.pl
Error message stylistic correction 2025-11-04T10:59:17Z Peter Eisentraut peter@eisentraut.org Peter Eisentraut peter@eisentraut.org 2025-11-04T10:59:17Z http://waps.l3s.uni-hannover.de/gitweb/static/queryCache.html?p=users/rhaas/postgres.git;a=commitdiff;h=c09a06918dff9a1651ed12a24eb03712331b234b
Error message stylistic correction

Fixup for commit ef5e60a9d35: The inconsistent use of articles was a
bit awkward.
  • [DBH] src/backend/parser/parse_expr.c
  • [DBH] src/test/regress/expected/collate.icu.utf8.out
libpq: Improve error handling in passwordFromFile() 2025-11-04T11:12:48Z Michael Paquier michael@paquier.xyz Michael Paquier michael@paquier.xyz 2025-11-04T11:12:48Z http://waps.l3s.uni-hannover.de/gitweb/static/queryCache.html?p=users/rhaas/postgres.git;a=commitdiff;h=861af9261035cec7408040d646cba92959ba6f13
libpq: Improve error handling in passwordFromFile()

Previously, passwordFromFile() returned NULL for valid cases (like no
matching password found) and actual errors (two out-of-memory paths).
This made it impossible for its sole caller, pqConnectOptions2(), to
distinguish between these scenarios and fail the connection
appropriately should an out-of-memory error occur.

This patch extends passwordFromFile() to be able to detect both valid
and failure cases, with an error string given back to the caller of the
function.

Out-of-memory failures unlikely happen in the field, so no backpatch is
done.

Author: Joshua Shanks <jjshanks@gmail.com>
Discussion: https://postgr.es/m/CAOxqWDfihFRmhNVdfu8epYTXQRxkCHSOrg+=-ij2c_X3gW=o3g@mail.gmail.com
  • [DBH] src/interfaces/libpq/fe-connect.c
Use USECS_PER_SEC from datatype/timestamp.h 2025-11-04T09:07:54Z Álvaro Herrera alvherre@kurilemu.de Álvaro Herrera alvherre@kurilemu.de 2025-11-04T09:07:54Z http://waps.l3s.uni-hannover.de/gitweb/static/queryCache.html?p=users/rhaas/postgres.git;a=commitdiff;h=ad1581d7feaeb1d78a0858703dac1bcb52f600d8
Use USECS_PER_SEC from datatype/timestamp.h

We had two places defining their own constants for this.

Author: Álvaro Herrera <alvherre@kurilemu.de>
Reviewed-by: Peter Smith <smithpb2250@gmail.com>
Discussion: https://postgr.es/m/202510311750.mxiykx3tp4mx@alvherre.pgsql
  • [DBH] src/bin/pg_basebackup/pg_createsubscriber.c
  • [DBH] src/bin/pg_ctl/pg_ctl.c
Add assertion check for WAL receiver state during stream-archive transition 2025-11-04T04:14:46Z Michael Paquier michael@paquier.xyz Michael Paquier michael@paquier.xyz 2025-11-04T04:14:46Z http://waps.l3s.uni-hannover.de/gitweb/static/queryCache.html?p=users/rhaas/postgres.git;a=commitdiff;h=65f4976189b6cbe9aa93fc5f4b1eb7a2040b6301
Add assertion check for WAL receiver state during stream-archive transition

When the startup process switches from streaming to archive as WAL
source, we avoid calling ShutdownWalRcv() if the WAL receiver is not
streaming, based on WalRcvStreaming().  WALRCV_STOPPING is a state set
by ShutdownWalRcv(), called only by the startup process, meaning that it
should not be possible to reach this state while in
WaitForWALToBecomeAvailable().

This commit adds an assertion to make sure that a WAL receiver is never
in a WALRCV_STOPPING state should the startup process attempt to reset
InstallXLogFileSegmentActive.

Idea suggested by Noah Misch.

Author: Xuneng Zhou <xunengzhou@gmail.com>
Discussion: https://postgr.es/m/19093-c4fff49a608f82a0@postgresql.org
  • [DBH] src/backend/access/transam/xlogrecovery.c
Add WalRcvGetState() to retrieve the state of a WAL receiver 2025-11-04T03:57:36Z Michael Paquier michael@paquier.xyz Michael Paquier michael@paquier.xyz 2025-11-04T03:57:36Z http://waps.l3s.uni-hannover.de/gitweb/static/queryCache.html?p=users/rhaas/postgres.git;a=commitdiff;h=e0ca61e7c4d55c34d67a3cc6fa0bdea2f41d2cf2
Add WalRcvGetState() to retrieve the state of a WAL receiver

This has come up as useful as an alternative of WalRcvStreaming(), to be
able to do sanity checks based on the state of a WAL receiver.  This
will be used in a follow-up commit.

Author: Xuneng Zhou <xunengzhou@gmail.com>
Discussion: https://postgr.es/m/19093-c4fff49a608f82a0@postgresql.org
  • [DBH] src/backend/replication/walreceiverfuncs.c
  • [DBH] src/include/replication/walreceiver.h
Fix unconditional WAL receiver shutdown during stream-archive transition 2025-11-04T01:47:38Z Michael Paquier michael@paquier.xyz Michael Paquier michael@paquier.xyz 2025-11-04T01:47:38Z http://waps.l3s.uni-hannover.de/gitweb/static/queryCache.html?p=users/rhaas/postgres.git;a=commitdiff;h=17b2d5ec759c0d26b29def7e57f51d0515ddca1f
Fix unconditional WAL receiver shutdown during stream-archive transition

Commit b4f584f9d2a1 (affecting v15~, later backpatched down to 13 as of
3635a0a35aaf) introduced an unconditional WAL receiver shutdown when
switching from streaming to archive WAL sources.  This causes problems
during a timeline switch, when a WAL receiver enters WALRCV_WAITING
state but remains alive, waiting for instructions.

The unconditional shutdown can break some monitoring scenarios as the
WAL receiver gets repeatedly terminated and re-spawned, causing
pg_stat_wal_receiver.status to show a "streaming" instead of "waiting"
status, masking the fact that the WAL receiver is waiting for a new TLI
and a new LSN to be able to continue streaming.

This commit changes the WAL receiver behavior so as the shutdown becomes
conditional, with InstallXLogFileSegmentActive being always reset to
prevent the regression fixed by b4f584f9d2a1: only terminate the WAL
receiver when it is actively streaming (WALRCV_STREAMING,
WALRCV_STARTING, or WALRCV_RESTARTING).  When in WALRCV_WAITING state,
just reset InstallXLogFileSegmentActive flag to allow archive
restoration without killing the process.  WALRCV_STOPPED and
WALRCV_STOPPING are not reachable states in this code path.  For the
latter, the startup process is the one in charge of setting
WALRCV_STOPPING via ShutdownWalRcv(), waiting for the WAL receiver to
reach a WALRCV_STOPPED state after switching walRcvState, so
WaitForWALToBecomeAvailable() cannot be reached while a WAL receiver is
in a WALRCV_STOPPING state.

A regression test is added to check that a WAL receiver is not stopped
on timeline jump, that fails when the fix of this commit is reverted.

Reported-by: Ryan Bird <ryanzxg@gmail.com>
Author: Xuneng Zhou <xunengzhou@gmail.com>
Reviewed-by: Noah Misch <noah@leadboat.com>
Reviewed-by: Michael Paquier <michael@paquier.xyz>
Discussion: https://postgr.es/m/19093-c4fff49a608f82a0@postgresql.org
Backpatch-through: 13
  • [DBH] src/backend/access/transam/xlog.c
  • [DBH] src/backend/access/transam/xlogrecovery.c
  • [DBH] src/include/access/xlog.h
  • [DBH] src/test/recovery/t/004_timeline_switch.pl
Doc: cover index CONCURRENTLY causing errors in INSERT ... ON CONFLICT. 2025-11-03T20:57:09Z Noah Misch noah@leadboat.com Noah Misch noah@leadboat.com 2025-11-03T20:57:09Z http://waps.l3s.uni-hannover.de/gitweb/static/queryCache.html?p=users/rhaas/postgres.git;a=commitdiff;h=8b18ed6dfbb8b3e4483801b513fea6b429140569
Doc: cover index CONCURRENTLY causing errors in INSERT ... ON CONFLICT.

Author: Mikhail Nikalayeu <mihailnikalayeu@gmail.com>
Reviewed-by: Noah Misch <noah@leadboat.com>
Discussion: https://postgr.es/m/CANtu0ojXmqjmEzp-=aJSxjsdE76iAsRgHBoK0QtYHimb_mEfsg@mail.gmail.com
Backpatch-through: 13
  • [DBH] doc/src/sgml/ref/insert.sgml
  • [DBH] src/backend/optimizer/util/plancat.c
Fix outdated comment of COPY in gram.y. 2025-11-03T18:34:49Z Masahiko Sawada msawada@postgresql.org Masahiko Sawada msawada@postgresql.org 2025-11-03T18:34:49Z http://waps.l3s.uni-hannover.de/gitweb/static/queryCache.html?p=users/rhaas/postgres.git;a=commitdiff;h=e7ccb247b38fff342c13aa7bdf61ce5ab45b2a85
Fix outdated comment of COPY in gram.y.

Author: ChangAo Chen <cca5507@qq.com>
Discussion: https://postgr.es/m/tencent_392C0E92EC52432D0A336B9D52E66426F009@qq.com
  • [DBH] src/backend/parser/gram.y
Add \pset options for boolean value display 2025-11-03T16:40:39Z Álvaro Herrera alvherre@kurilemu.de Álvaro Herrera alvherre@kurilemu.de 2025-11-03T16:40:39Z http://waps.l3s.uni-hannover.de/gitweb/static/queryCache.html?p=users/rhaas/postgres.git;a=commitdiff;h=645cb44c5490f70da4dca57b8ecca6562fb883a7
Add \pset options for boolean value display

New \pset variables display_true and display_false allow the user to
change how true and false values are displayed.

Author: David G. Johnston <David.G.Johnston@gmail.com>
Reviewed-by: Álvaro Herrera <alvherre@kurilemu.de>
Discussion: https://postgr.es/m/CAKFQuwYts3vnfQ5AoKhEaKMTNMfJ443MW2kFswKwzn7fiofkrw@mail.gmail.com
Discussion: https://postgr.es/m/56308F56.8060908@joh.to
  • [DBH] doc/src/sgml/ref/psql-ref.sgml
  • [DBH] src/bin/psql/command.c
  • [DBH] src/bin/psql/help.c
  • [DBH] src/bin/psql/tab-complete.in.c
  • [DBH] src/fe_utils/print.c
  • [DBH] src/include/fe_utils/print.h
  • [DBH] src/test/regress/expected/psql.out
  • [DBH] src/test/regress/sql/psql.sql