PostgreSQL Weekly News - July 4, 2021

From: PWN via PostgreSQL Announce <announce-noreply(at)postgresql(dot)org>
To: PostgreSQL Announce <pgsql-announce(at)lists(dot)postgresql(dot)org>
Subject: PostgreSQL Weekly News - July 4, 2021
Date: 2021-07-05 09:35:30
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-announce

# PostgreSQL Weekly News - July 4, 2021

Congratulations to the new PostgreSQL committers, Daniel Gustafsson and John Naylor!

# PostgreSQL Product News

pg_dumpbinary 2.4, a program used to dump a PostgreSQL database in binary
format, released.

# PostgreSQL Jobs for July


# PostgreSQL in the News

Planet PostgreSQL: [](

PostgreSQL Weekly News is brought to you this week by David Fetter

Submit news and announcements by Sunday at 3:00pm PST8PDT to david(at)fetter(dot)org(dot)

# Applied Patches

Michaël Paquier pushed:

- Add test for CREATE INDEX CONCURRENTLY with not-so-immutable predicate.
83158f7 has improved index_set_state_flags() so as it is possible to use
transactional updates when updating pg_index state flags, but there was not
really a test case which stressed directly the possibility it fixed. This
commit adds such a test, using a predicate that looks valid in appearance but
calls a stable function. Author: Andrey Lepikhov Discussion:
Backpatch-through: 9.6

- Fix variable initialization with ALTER SUBSCRIPTION DROP PUBLICATION.
copy_data is not a supported option with this sub-command of ALTER
SUBSCRIPTION, which would not make a variable related to it initialized after
parsing the option set in DefElems. A refresh could then refer to it.
Author: Ranier Vilela Reviewed-by: Peter Smith Discussion:

- Add support for LZ4 with compression of full-page writes in WAL. The logic is
implemented so as there can be a choice in the compression used when building
a WAL record, and an extra per-record bit is used to track down if a block is
compressed with PGLZ, LZ4 or nothing. wal_compression, the existing
parameter, is changed to an enum with support for the following
backward-compatible values: - "off", the default, to not use compression. -
"pglz" or "on", to compress FPWs with PGLZ. - "lz4", the new mode, to compress
FPWs with LZ4. Benchmarking has showed that LZ4 outclasses easily PGLZ. ZSTD
would be also an interesting choice, but going just with LZ4 for now makes the
patch minimalistic as toast compression is already able to use LZ4, so there
is no need to worry about any build-related needs for this implementation.
Author: Andrey Borodin, Justin Pryzby Reviewed-by: Dilip Kumar, Michael
Paquier Discussion:

- Fix compilation warning in xloginsert.c. This is reproducible with gcc using
at least -O0. The last checks validating the compression of a block could not
be reached with this variable not set, but let's be clean. Oversight in
4035cd5, per buildfarm member lapwing.

- Bump XLOG_PAGE_MAGIC for format changes related to FPW compression. Oversight
in 4035cd5, spotted by Tom Lane. Discussion:

- Optimize pg_checksums --enable where checksum is already set. This commit
prevents pg_checksums to do a rewrite of a block if it has no need to, in the
case where the computed checksum matches with what's already stored in the
block read. This is helpful to accelerate successive runs of the tool when
the previous ones got interrupted, for example. The number of blocks and
files written is tracked and reported by the tool once finished. Note that
the final flush of the data folder happens even if no blocks are written, as
it could be possible that a previous interrupted run got stopped while doing a
flush. Author: Greg Sabino Mullane Reviewed-by: Paquier Michael, Julien
Rouhaud Discussion:

- Fix incorrect PITR message for transaction ROLLBACK PREPARED. Reaching PITR on
such a transaction would cause the generation of a LOG message mentioning a
transaction committed, not aborted. Oversight in 4f1b890. Author: Simon
Riggs Discussion:
Backpatch-through: 9.6

- Simplify error handing of jsonapi.c for the frontend. This commit removes a
dependency to the central logging facilities in the JSON parsing routines of
src/common/, which existed to log errors when seeing error codes that do not
match any existing values in JsonParseErrorType, which is not something that
should never happen. The routine providing a detailed error message based on
the error code is made backend-only, the existing code being unsafe to use in
the frontend as the error message may finish by being palloc'd or point to a
static string, so there is no way to know if the memory of the message should
be pfree'd or not. The only user of this routine in the frontend was
pg_verifybackup, that is changed to use a more generic error message on
parsing failure. Note that making this code more resilient to OOM failures if
used in shared libraries would require much more work as a lot of code paths
still rely on palloc() & friends, but we are not sure yet if we need to go
down to that. Still, removing the dependency to logging is a step toward more
portability. This cleans up the handling of check_stack_depth() while on it,
as it exists only in the backend. Per discussion with Jacob Champion and Tom
Lane. Discussion:

- Use WaitLatch() instead of pg_usleep() at end-of-vacuum truncation. This has
the advantage to make a process more responsive when the postmaster dies, even
if the wait time was rather limited as there was only a 50ms timeout here.
Another advantage of this change is for monitoring, as we gain a new wait
event for the end-of-vacuum truncation. Author: Bharath Rupireddy
Reviewed-by: Aleksander Alekseev, Thomas Munro, Michael Paquier Discussion:

- doc: Mention requirement to --enable-tap-tests on section for TAP tests.
Author: Greg Sabino Mullane Discussion:
Backpatch-through: 9.6

Thomas Munro pushed:

- Change recovery_init_sync_method to PGC_SIGHUP. The setting has no effect
except during startup. It's still nice to be able to change it dynamically,
which is expected to be pretty useful to an admin following crash recovery
when restarting the cluster is not so appealing. Per discussions following
commits 2941138e6 and 61752afb2. Author: Justin Pryzby <pryzby(at)telsasoft(dot)com>
Reviewed-by: Fujii Masao <masao(dot)fujii(at)oss(dot)nttdata(dot)com> Reviewed-by: Michael
Paquier <michael(at)paquier(dot)xyz> Reviewed-by: Thomas Munro
<thomas(dot)munro(at)gmail(dot)com> Discussion:

- Remove some dead stores. Remove redundant local variable assignments left
behind by commit 2fc7af5e966. Author: Quan Zongliang <quanzongliang(at)yeah(dot)net>
Reviewed-by: Jacob Champion <pchampion(at)vmware(dot)com> Discussion:

Amit Kapila pushed:

- Fix race condition in TransactionGroupUpdateXidStatus(). When we cannot
immediately acquire XactSLRULock in exclusive mode at commit time, we add
ourselves to a list of processes that need their XIDs status update. We do
this if the clog page where we need to update the current transaction status
is the same as the group leader's clog page, otherwise, we allow the caller to
clear it by itself. Now, when we can't add ourselves to any group, we were not
clearing the current proc if it has already become a member of some group
which was leading to an assertion failure when the same proc was assigned to
another backend after the current backend exits. Reported-by: Alexander
Lakhin Bug: 17072 Author: Amit Kapila Tested-By: Alexander Lakhin
Backpatch-through: 11, where it was introduced Discussion:

- Improve RelationGetIdentityKeyBitmap(). We were using RelationGetIndexList()
to update the relation's replica identity index but instead, we can directly
use RelationGetReplicaIndex() which uses the same functionality. This is a
minor code readability improvement. Author: Japin Li Reviewed-By: Takamichi
Osumi, Amit Kapila Discussion:

- Allow enabling two-phase option via replication protocol. Extend the
replication command CREATE_REPLICATION_SLOT to support the TWO_PHASE option.
This will allow decoding commands like PREPARE TRANSACTION, COMMIT PREPARED
and ROLLBACK PREPARED for slots created with this option. The decoding of the
transaction happens at prepare command. This patch also adds support of
two-phase in pg_recvlogical via a new option --two-phase. This option will
also be used by future patches that allow streaming of transactions at prepare
time for built-in logical replication. With this, the out-of-core logical
replication solutions can enable replication of two-phase transactions via
replication protocol. Author: Ajin Cherian Reviewed-By: Jeff Davis, Vignesh
C, Amit Kapila Discussion:

- Allow streaming the changes after speculative aborts. Until now, we didn't
allow to stream the changes in logical replication till we receive speculative
confirm or the next DML change record after speculative inserts. The reason
was that we never use to process speculative aborts but after commit
4daa140a2f it is possible to process them so we can allow streaming once we
receive speculative abort after speculative insertion. We decided to
backpatch to 14 where the feature for streaming in progress transactions have
been introduced as this is a minor change and makes that functionality better.
Author: Amit Kapila Reviewed-By: Dilip Kumar Backpatch-through: 14 Discussion:

- Replace magic constants used in pg_stat_get_replication_slot(). A few
variables have been using 10 as a magic constant while
PG_STAT_GET_REPLICATION_SLOT_COLS can be used instead. Author: Masahiko
Sawada Reviewed-By: Amit Kapila Backpatch-through: 14, where it was introduced

Peter Eisentraut pushed:

- Message style improvements.

- Add index OID macro argument to DECLARE_INDEX. Instead of defining symbols
such as AmOidIndexId explicitly, include them as an argument of
DECLARE_INDEX() and have generate the way as the table OID symbols
from the CATALOG() declaration. Reviewed-by: John Naylor
<john(dot)naylor(at)enterprisedb(dot)com> Discussion:

- genbki stricter error handling. Instead of just writing warnings for invalid
cross-catalog lookups, count the errors and error out at the end.
Reviewed-by: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> Discussion:

- Add tests for UNBOUNDED syntax ambiguity. There is a syntactic ambiguity in
the SQL standard. Since UNBOUNDED is a non-reserved word, it could be the
name of a function parameter and be used as an expression. There is a grammar
hack to resolve such cases as the keyword. Add some tests to record this
behavior. Reviewed-by: Heikki Linnakangas <hlinnaka(at)iki(dot)fi> Discussion:

- doc: Clean up title case use.

- doc: Remove inappropriate <acronym> tags.

- Use InvalidBucket instead of -1 where appropriate. Reported-by: Ranier Vilela
<ranier(dot)vf(at)gmail(dot)com> Discussion:

Andrew Dunstan pushed:

- Pre branch pgindent / pgperltidy run. Along the way make a slight adjustment
to src/include/utils/queryjumble.h to avoid an unused typedef.

- Stamp HEAD as 15devel. Let the hacking begin ...

- Fix prove_installcheck to use correct paths when used with PGXS. The
prove_installcheck recipe in src/ was emitting bogus paths
for a couple of elements when used with PGXS. Here we create a separate recipe
for the PGXS case that does it correctly. We also take the opportunity to make
the make the file more readable by breaking up the prove_installcheck and
prove_check recipes across several lines, and to remove the setting for
REGRESS_SHLIB to src/test/recovery/Makefile, which is the only set of tests
that actually need it. Backpatch to all live branches Discussion:

- Add new make targets world-bin and install-world-bin. These are the same as
world and install-world respectively, but without building or installing the
documentation. There are many reasons for wanting to be able to do this,
including speed, lack of documentation building tools, and wanting to build
other formats of the documentation. Plans for simplifying the buildfarm client
code include using these targets. Backpatch to all live branches.

- add missing tag from commit b8c4261e5e.

Peter Geoghegan pushed:

- Add pgindent commit to git-blame-ignore-revs file. Add entry for recent commit

- Improve pgindent release workflow. Update RELEASE_CHANGES to direct the reader
towards completing the steps outlined in the pgindent README, both as a
pre-beta task and as a task to be performed when starting a new development
cycle. This makes it less likely that somebody will miss updating the
.git-blame-ignore-revs file when running pgindent against the tree as a
routine release change task. Author: Peter Geoghegan <pg(at)bowt(dot)ie>
Reviewed-By: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> Discussion:

Tom Lane pushed:

- Don't depend on -fwrapv semantics in pgbench's random() function. Instead use
the common/int.h functions to check for integer overflow in a more
C-standard-compliant fashion. This is motivated by recent failures on
buildfarm member moonjelly, where it appears that development-tip gcc is
optimizing without regard to the -fwrapv switch. Presumably that's a gcc bug
that will be fixed soon, but we might as well install cleaner coding here
rather than wait. (This does not address the question of whether we'll ever
be able to get rid of using -fwrapv. Testing shows that this spot is the only
place where doing so creates visible regression test failures, but
unfortunately that proves very little.) Back-patch to v12. The common/int.h
functions exist in v11, but that branch doesn't use them in any client-side
code. I judge that this case isn't interesting enough in the real world to
take even a small risk of issues from being the first such use. Tom Lane and
Fabien Coelho Discussion:

- Don't use abort(3) in libpq's fe-print.c. Causing a core dump on out-of-memory
seems pretty unfriendly, and surely is far outside the expected behavior of a
general-purpose library. Just print an error message (as we did already) and
return. These functions unfortunately don't have an error return convention,
but code using them is probably just looking for a quick-n-dirty print method
and wouldn't bother to check anyway. Although these functions are
semi-deprecated, it still seems appropriate to back-patch this. In passing,
also back-patch b90e6cef1, just to reduce cosmetic differences between the
branches. Discussion:

- Doc: further updates for RELEASE_CHANGES process notes. Mention expectations
for email notifications of appropriate lists when a branch is made or retired.
(I've been doing that informally for years, but it's better to have it written

- Remove libpq's use of abort(3) to handle mutex failure cases. Doing an abort()
seems all right in development builds, but not in production builds of
general-purpose libraries. However, the functions that were doing this lack
any way to report a failure back up to their callers. It seems like we can
just get away with ignoring failures in production builds, since (a) no such
failures have been reported in the dozen years that the code's been like this,
and (b) failure to enforce mutual exclusion during fe-auth.c operations would
likely not cause any problems anyway in most cases. (The OpenSSL callbacks
that use this macro are obsolete, so even less likely to cause interesting
problems.) Possibly a better answer would be to break compatibility of the
pgthreadlock_t callback API, but in the absence of field problem reports, it
doesn't really seem worth the trouble. Discussion:

- Add a build-time check that libpq doesn't call exit() or abort(). Directly
exiting or aborting seems like poor form for a general-purpose library. Now
that libpq liberally uses bits out of src/common/, it's very easy to
accidentally include code that would do something unwanted like calling
exit(1) after OOM --- see for example 8ec00dc5c. Hence, add a simple
cross-check that no such calls have made it into The cross-check
depends on nm(1) being available and being able to work on a shared library,
which probably isn't true everywhere. But we can just make the test silently
do nothing if nm fails. As long as the check is effective on common platforms,
that should be good enough. (By the same logic, I've not worried about
providing an equivalent test in MSVC builds.) Discussion:

- Fix bogus logic for reporting which hash partition conflicts. Commit efbfb6424
added logic for reporting exactly which existing partition conflicts when
complaining that a new hash partition's modulus isn't compatible with the
existing ones. However, it misunderstood the partitioning data structure, and
would select the wrong partition in some cases, or crash outright due to
fetching a bogus table OID in other cases. Per bug #17076 from Alexander
Lakhin. Fix by Amit Langote; some further work on the code comments by me.

- Fix portability fallout from commit dc227eb82. Give up on trying to
mechanically forbid abort() within libpq. Even though there are no such calls
in the source code, we've now seen three different scenarios where build
toolchains silently insert such calls: gcc does it for profiling, some
platforms implement assert() using it, and icc does so for no visible reason.
Checking for accidental use of exit() seems considerably more important than
checking for abort(), so we'll settle for doing that for now. Also, filter
out `__cxa_atexit()` to avoid a false match. It seems that OpenBSD inserts a
call to that despite the fact that libpq contains no C++ code. Discussion:

- Improve build-time check that libpq doesn't call exit(). Further fixes for
commit dc227eb82. Per suggestion from Peter Eisentraut, use a stamp-file to
control when the check is run, avoiding repeated executions during "make all".
Also, remove "-g" switch for nm: it's useless and some versions of nm consider
it to conflict with "-u". (Thanks to Noah Misch for running down that
portability issue.) Discussion:

- Add --clobber-cache option to initdb, for CCA testing. Commit 4656e3d66
replaced the "#define CLOBBER_CACHE_ALWAYS" testing mechanism with a GUC,
which has been a great help for doing cache-clobber testing in more efficient
ways; but there is a gap in the implementation. The only way to do
cache-clobber testing during an initdb run is to use the old method with
#define, because one can't set the GUC from outside. Improve this by adding a
switch to initdb for the purpose. (Perhaps someday we should let initdb pass
through arbitrary "-c NAME=VALUE" switches. Quoting difficulties dissuaded me
from attempting that right now, though.) Back-patch to v14 where 4656e3d66
came in. Discussion:

- Don't try to print data type names in slot_store_error_callback(). The
existing code tried to do syscache lookups in an already-failed transaction,
which is problematic to say the least. After some consideration of
alternatives, the best fix seems to be to just drop type names from the error
message altogether. The table and column names seem like sufficient
localization. If the user is unsure what types are involved, she can check
the local and remote table definitions. Having done that, we can also discard
the LogicalRepTypMap hash table, which had no other use. Arguably,
LOGICAL_REP_MSG_TYPE replication messages are now obsolete as well; but we
should probably keep them in case some other use emerges. (The complexity of
removing something from the replication protocol would likely outweigh any
savings anyhow.) Masahiko Sawada and Bharath Rupireddy, per complaint from
Andres Freund. Back-patch to v10 where this code originated. Discussion:

- Further restrict the scope of no-exit()-in-libpq test. Disable this check
altogether in --enable-coverage builds, because newer versions of gcc insert
exit() as well as abort() calls for that. Also disable it on AIX and Solaris,
because those platforms tend to provide facilities such as libldap as static
libraries, which then get included in libpq's shlib. We can't expect such
libraries to honor our coding rules. (That platform list might need additional
tweaking, but I think this is enough to keep the buildfarm happy.) Per
reports from Jacob Champion and Noah Misch. Discussion:

Noah Misch pushed:

- Remove XLogFileInit() ability to skip ControlFileLock. Cold paths, initdb and
end-of-recovery, used it. Don't optimize them. Discussion:

- In XLogFileInit(), fix `*use_existent` postcondition to suit callers.
Infrequently, the mismatch caused log_checkpoints messages and
TRACE_POSTGRESQL_CHECKPOINT_DONE() to witness an "added" count too high by
one. Since that consequence is so minor, no back-patch. Discussion:

- Dump public schema ownership and security labels. As a side effect, this
corrects dumps of public schema ACLs in databases where the DBA dropped and
recreated that schema. Reviewed by Asif Rehman. Discussion:

- Dump COMMENT ON SCHEMA public. As we do for other attributes of the public
schema, omit the COMMENT command when its payload would match what initdb had
installed. For dumps that do carry this new COMMENT command, non-superusers
restoring them are likely to get an error. Reviewed by Asif Rehman.

- Don't ERROR on PreallocXlogFiles() race condition. Before a restartpoint
finishes PreallocXlogFiles(), a startup process KeepFileRestoredFromArchive()
call can unlink the preallocated segment. If a CHECKPOINT sql command had
elicited the restartpoint experiencing the race condition, that sql command
failed. Moreover, the restartpoint omitted its log_checkpoints message and
some inessential resource reclamation. Prevent the ERROR by skipping open()
of the segment. Since these consequences are so minor, no back-patch.

- Skip WAL recycling and preallocation during archive recovery. The previous
commit addressed the chief consequences of a race condition between
InstallXLogFileSegment() and KeepFileRestoredFromArchive(). Fix three lesser
consequences. A spurious durable_rename_excl() LOG message remained possible.
KeepFileRestoredFromArchive() wasted the proceeds of WAL recycling and
preallocation. Finally, XLogFileInitInternal() could return a descriptor for
a file that KeepFileRestoredFromArchive() had already unlinked. That felt
like a recipe for future bugs. Discussion:

- Remove XLogFileInit() ability to unlink a pre-existing file. Only initdb used
it. initdb refuses to operate on a non-empty directory and generally does not
cope with pre-existing files of other kinds. Hence, use the opportunity to
simplify. Discussion:

- Remove literal backslash from Perl \Q ... \E. The behavior changed sometime
after Perl 5.8.9, and "man perlre" says it "may lead to confusing results."
Per buildfarm member gaur. This repairs commit
a7a7be1f2fa6b9f0f48e69f12256d8f588af729b. Discussion:

Álvaro Herrera pushed:

- Add PQsendFlushRequest to libpq. This new libpq function allows the
application to send an 'H' message, which instructs the server to flush its
outgoing buffer. This hasn't been needed so far because the Sync message
already requests a buffer; and I failed to realize that this was needed in
pipeline mode because PQpipelineSync also causes the buffer to be flushed.
However, sometimes it is useful to request a flush without establishing a
synchronization point. Backpatch to 14, where pipeline mode was introduced in
libpq. Reported-by: Boris Kolpackov <boris(at)codesynthesis(dot)com> Author: Álvaro
Herrera <alvherre(at)alvh(dot)no-ip(dot)org> Discussion:

- Fix libpq state machine in pipeline mode. The original coding required that
PQpipelineSync had been called before the first call to PQgetResult, and
failure to do that would result in an unexpected NULL result being returned.
Fix by setting the right state when a query is sent, rather than leaving it
unchanged and having PQpipelineSync apply the necessary state change. A new
test case to verify the behavior is added, which relies on the new
PQsendFlushRequest() function added by commit a7192326c74d. Backpatch to 14,
where pipeline mode was added. Reported-by: Boris Kolpackov
<boris(at)codesynthesis(dot)com> Author: Álvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org>

- Don't reset relhasindex for partitioned tables on ANALYZE. Commit 0e69f705cc1a
introduced code to analyze partitioned table; however, that code fails to
preserve pg_class.relhasindex correctly. Fix by observing whether any indexes
exist rather than accidentally falling through to assuming none do. Backpatch
to 14. Author: Alexander Pyhalov <a(dot)pyhalov(at)postgrespro(dot)ru> Reviewed-by:
Álvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org> Reviewed-by: Zhihong Yu
<zyu(at)yugabyte(dot)com> Discussion:

Alexander Korotkov pushed:

- Fixes for multirange selectivity estimation. * Fix enumeration of the
multirange operators in calc_multirangesel() and calc_multirangesel()
switches. * Add more regression tests for matching to empty
ranges/multiranges. Reported-by: Alexander Lakhin Discussion:
Author: Alexander Korotkov Backpatch-through: 14, where multiranges were

Fujii Masao pushed:

- doc: Add type information for postgres_fdw parameters. Author: Shinya Kato
Reviewed-by: Fujii Masao Discussion:

- doc: Improve descriptions of tup_returned and tup_fetched in pg_stat_database.
Previously the descriptions of tup_returned and tup_fetched columns in
pg_stat_database view were confusing. This commit improves them so that they
represent the following formulas of those columns more accurately. *
pg_stat_database.tup_returned = sum(pg_stat_all_tables.seq_tup_read) +
sum(pg_stat_all_indexes.idx_tup_read) * pg_stat_database.tup_fetched =
sum(pg_stat_all_tables.idx_tup_fetch) In these formulas, note that the
counters for some system catalogs like pg_database shared across all databases
of a cluster are excluded from the calculations of sum. Author: Masahiro
Ikeda Reviewed-by: Fujii Masao Discussion:

David Rowley pushed:

- Improve various places that double the size of a buffer. Several places were
performing a tight loop to determine the first power of 2 number that's > or
>= the required memory. Instead of using a loop for that, we can use
pg_nextpower2_32 or pg_nextpower2_64. When we need a power of 2 number equal
to or greater than a given amount, we just pass the amount to the nextpower2
function. When we need a power of 2 greater than the amount, we just pass the
amount + 1. Additionally, in tsearch there were a couple of locations that
were performing a while loop when a simple "if" would have done. In both of
these locations only 1 item is being added, so the loop could only have ever
iterated once. Changing the loop into an if statement makes the code very
slightly more optimal as the condition is checked once rather than twice.
There are quite a few remaining locations that increase the size of the buffer
in the following form: while (reqsize >= buflen) { buflen `*=` 2;
buf = repalloc(buf, buflen); } These are not touched in this commit.
repalloc will error out for sizes larger than MaxAllocSize. Changing these to
use pg_nextpower2_32 would remove the chance of that error being raised. It's
unclear from the code if the sizes could ever become that large, so err on the
side of caution. Discussion:
Reviewed-by: Zhihong Yu

- Cleanup some aggregate code in the executor. Here we alter the code that calls
build_pertrans_for_aggref() so that the function no longer needs to
special-case whether it's dealing with an aggtransfn or an aggcombinefn. This
allows us to reuse the build_aggregate_transfn_expr() function and just get
rid of the build_aggregate_combinefn_expr() completely. All of the special
case code that was in build_pertrans_for_aggref() has been moved up to the
calling functions. This saves about a dozen lines of code in nodeAgg.c and a
few dozen more in parse_agg.c Also, rename a few variables in nodeAgg.c to
try to make it more clear that we're working with either a aggtransfn or an
aggcombinefn. Some of the old names would have you believe that we were
always working with an aggtransfn. Discussion:

- Doc: mention that VACUUM can't utilize over 1GB of RAM. Document that setting
maintenance_work_mem to values over 1GB has no effect on VACUUM. Reported-by:
Martín Marqués Author: Laurenz Albe Discussion:
Backpatch-through: 9.6, oldest supported release

Heikki Linnakangas pushed:

- Allow specifying pg_waldump --rmgr option multiple times. Before, if you
specified multiple --rmgr options, only the last one took effect. It seems
more sensible to select all the specified resource managers. Reviewed-By:
Daniel Gustafsson, Julien Rouhaud Discussion:

Bruce Momjian pushed:

- docs: clarify new aggressive vacuum mode for multi-xacts. Reported-by:
eric(dot)mutta(at)gmail(dot)com Discussion:
Backpatch-through: 14

- doc: adjust "cities" example to be consistent with other SQL. Reported-by:
tom(at)crystae(dot)net Discussion:
Backpatch-through: 9.6

# Pending Patches

Anna Akenteva sent in another revision of a patch to write the visibility map

Julien Rouhaud sent in another revision of a patch to Expose get_query_def().

Arne Roland sent in another revision of a patch to rename triggers of
partitioned tables.

Peter Eisentraut sent in a patch to remove redundant initializations.

Andrew Dunstan sent in a patch to clean up

Masahiko Sawada sent in a patch to add ALTER SUBSCRIPTION SET SKIP TRANSACTION,
add errcontext to errors of the applying logical replication changes, and add a
pg_stat_logical_replication_error statistics view.

Bharath Rupireddy, Amit Kapila, and Álvaro Herrera traded patches to refactor
function parse_subscription_options. Instead of using multiple parameters in
parse_subscription_options function signature, use the struct SubOpts that
encapsulate all the subscription options and their values. It will be useful for
future work where we need to add other options in the subscription. Also, use
bitmaps to pass the supported and retrieve the specified options.

Jeff Davis sent in a patch to add a synchronous_replication_interrupt GUC.

Daniel Gustafsson sent in two revisions of a patch to fix the sscanf limit in
pg_basebackup and pg_dump, and fix bug in TOC file error message printing by
unshadowing a variable name.

Dean Rasheed sent in three revisions of a patch to intended to fix a bug that
manifested as overflows in multiplication of NUMERICs.

Michaël Paquier sent in another revision of a patch to add wal_compression=zstd.

Magnus Hagander sent in two more revisions of a patch to add PROXY protocol

Peter Eisentraut sent in another revision of a patch to psql to get it to
display multiple result sets instead of silently dropping all but the first, and
make it possible to return dynamic result sets from procedures.

Ranier Vilela sent in a patch to prevent choosing an invalid number of
partitions in src/backend/executor/nodeAgg.c.

Aleksey Kondratov sent in a patch to enable providing restore_command as a
command line option to pg_rewind.

David Christensen sent in a patch to expand the possible units for size, and
refactor pg_size_pretty and pg_size_bytes to allow for supported unit expansion.

Andrey V. Lepikhov sent in a patch to add an '--ignore-errors' option to

Jacob Champion sent in another revision of a patch to rework the sslfiles
Makefile target.

Josef Šimánek sent in two revisions of a patch to prevent BRIN index updates
from blocking HOT updates.

Michaël Paquier sent in another revision of a patch to speed up pg_checksums in
cases where the checksum is already set.

Anastasia Lubennikova and Yura Sokolov traded patches to make the smgr API
extensible via new hooks smgr_hook, smgr_init_hook, and smgr_shutdown_hook.

John Naylor and Heikki Linnakangas traded patches to rewrite pg_utf8_verifystr()
for speed.

Dean Rasheed sent in a patch to make numeric x^y work for negative x.

Georgios Kokolatos sent in a patch to teach pg_receivewal to use lz4

Dean Rasheed sent in two revisions of a patch to relax the constraints on
numeric scale to allow, for example, NUMERIC(3,-3), which rounds values to the
nearest thousand and hold values up to 999000, or NUMERIC(3,6) which could hold
"micro" quantities up to 0.000999.

Thomas Munro and John Naylor traded patches to accelerate tuple sorting for
common types.

Masahiko Sawada sent in another revision of a patch to make it possible to have
transactions involving multiple postgres foreign servers.

Andrey V. Lepikhov sent in a patch to choose async append subplans at the
initial execution stage.

Takashi Menjo sent in another revision of a patch to map WAL segment files on
PMEM as WAL buffers.

Yugo Nagata sent in two more revisions of a patch to fix conn_duration in

Simon Riggs sent in a patch to enhance getRecordTimestamp() in PITR to include
all record types that contain times, add handling for checkpoints, end of
recovery and prepared xact record types, and allow the option of
recovery_target_use_origin_time = off (default) | on.

Vigneshwaran C sent in another revision of a patch to ensure that error message
include hint messages for redundant options error.

Vigneshwaran C sent in another revision of a patch to identify missing
publications from publishers during CREATE/ALTER SUBSCRIPTION.

Álvaro Herrera sent in a patch to clarify error messages when Perl's system()

Antonin Houska sent in another revision of a patch to clean up up orphaned files
using undo logs.

Jacob Champion sent in another revision of a patch to pull the general SASL
framework out of the SCRAM code.

David Rowley sent in a patch to record a Bitmapset of non-pruned partitions.

Fabien COELHO sent in three more revisions of a patch to fix a bug in pgbench
logging which was caused by some recent changes to time logic.

David Christensen and Fabien COELHO traded patches to add a multiconnect option
to pgbench.

Bharath Rupireddy sent in two more revisions of a patch to tighten up
batch_size, fetch_size options against non-numeric values in the postgres_fdw.

Rahila Syed sent in a patch to add column filtering to logical replication.

Mark Dilger sent in two more revisions of a patch to add a default roles for
each of managing logical replication, host security operations, network security
operations, and database operations, and Allow SET and ALTER SYSTEM SET by

Yugo Nagata sent in another revision of a patch intended to fix a bug that
manifested as pgbench serialization and deadlock errors.

Amit Langote sent in a patch to explicitly track RT indexes of relations to
check permissions.

Richard Guo sent in two more revisions of a patch to use each rel as both outer
and inner for anti joins.

Vigneshwaran C sent in another revision of a patch to add schema level support

Paul A Jungwirth sent in three more revisions of a patch to implement SQL
standard application time.

Gurjeet Singh sent in a patch to add automatic notification of top transaction

David Rowley sent in a patch to allow some window functions to finish execution

Greg Smith sent in a patch to improve some pgbench workloads in the arenas of
INSERT workload, FK indexes, and filler.

Euler Taveira de Oliveira sent in another revision of a patch to add
SSL/TLS-related acronyms MITM and SNI, and change usages of SSL to the more
modern and general SSL/TLS.

Kyotaro HORIGUCHI sent in two revisions of a patch to fix a bug that manifested
as ECPG pre-compiling CREATE AS EXECUTE to an un-compilable C statement by
avoiding touching the parse tree structure and use ExecuteStmt.type to notify
whether the returned string is a statment name or a full statement.

Euler Taveira de Oliveira and Peter Smith traded patches to implement row
filtering for logical replication.

Ranier Vilela sent in a patch to fix an uninitialized variable access in

Fabien COELHO sent in five more revisions of a patch to replace rand48 with a
better PRNG.

Haotian Wu sent in another revision of a patch to add a --drop-cascade option

Pavel Stěhule sent in another revision of a patch to implement schema variables.

Hayato Kuroda sent in another revision of a patch to fix bugs in ECPG's DECLARE

Justin Pryzby sent in another revision of a patch to make `pg_ls_*` show
directories and shared filesets.

Fabien COELHO sent in another revision of a patch to factor out psql's echo

Vigneshwaran C sent in a patch ensure that logical replication relations get the
needed cache invalidation when there is a change in schema by adding a callback
for schema changes.

Tom Lane sent in two more revisions of a patch to avoid catalogue accesses in

Tom Lane sent in another revision of a patch to remove the 64k rangetable limit.

Andy Fan sent in a patch to add not null attrs for RelOptInfo.

Peter Eisentraut sent in a patch to use EVP_EncryptFinal_ex() and
EVP_DecryptFinal_ex() for compatibility with OpenSSL 3.0.

Gilles Darold sent in another revision of a patch to add hooks at the
XactCommand level.

Zhihong Yu sent in a patch to remove a redundant check for transaction in
progress in check_safe_enum_use.

Tatsuo Ishii sent in another revision of a patch to use COPY FREEZE in pgbench.

David Rowley sent in a patch to better document the locking behavior when
attaching and removing partitions.

Browse pgsql-announce by date

  From Date Subject
Next Message Gilles Darold via PostgreSQL Announce 2021-07-05 09:35:53 Ora2Pg v22.0 and 22.1 released
Previous Message PWN via PostgreSQL Announce 2021-06-28 11:45:22 PostgreSQL Weekly News - June 27, 2021