== PostgreSQL Weekly News - July 19, 2020 ==

From: David Fetter <david(at)fetter(dot)org>
To: PostgreSQL Announce <pgsql-announce(at)postgresql(dot)org>
Subject: == PostgreSQL Weekly News - July 19, 2020 ==
Date: 2020-07-19 20:19:39
Message-ID: 20200719201939.GA25751@fetter.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-announce

== PostgreSQL Weekly News - July 19, 2020 ==

Person of the week: https://postgresql.life/post/stacey_haysler/

== PostgreSQL Product News ==

PostgresDAC 3.8, a direct access component suite for PostgreSQL, released.
http://microolap.com/products/connectivity/postgresdac/download/

== PostgreSQL Jobs for July ==

http://archives.postgresql.org/pgsql-jobs/2020-07/

== PostgreSQL Local ==

PGDay Ukraine will take place September 5th, 2020 in Lviv at the Bank Hotel.
https://pgday.org.ua/

pgDay Israel 2020 will take place on September 10, 2020 in Tel Aviv.
http://pgday.org.il/

PGDay Austria will take place September 18, 2020 at Schloss Schoenbrunn
(Apothekertrakt) in Vienna.
https://pgday.at/en/

PG Day Russia will take place in Saint Petersburg on July 9, 2021.
https://pgday.ru/en/2020/

== PostgreSQL in the News ==

Planet PostgreSQL: http://planet.postgresql.org/

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:

- Fix timestamp range handling in regression tests of modules/commit_ts/.
Switching the regression tests to use tstzrange() has proved to not be a good
idea for environments where the timestamp precision is low, as internal range
checks exclude the upper bound. So, if the commit timestamp of a transaction
matched with now() from the next query, the test would fail. This changes to
use two bound checks instead of the range function, where the upper bound is
inclusive. Per buildfarm member jacana. Discussion:
https://postgr.es/m/20200712122507.GD21680@paquier.xyz
https://git.postgresql.org/pg/commitdiff/5bfe6a3c485d3259f59fa2d2e1d34dea1a3baeba

- Fix comments related to table AMs. Incorrect function names were referenced.
As this fixes some portions of tableam.h, that is mentioned in the docs as
something to look at when implementing a table AM, backpatch down to 12 where
this has been introduced. Author: Hironobu Suzuki Discussion:
https://postgr.es/m/8fe6d672-28dd-3f1d-7aed-ac2f6d599d3f@interdb.jp
Backpatch-through: 12
https://git.postgresql.org/pg/commitdiff/9168793d7275b4b318c153d607fba55d14098c19

- Fix some header identifications. The following header files missed the shot: -
jsonfuncs.h, as of ce0425b. - jsonapi.h, as of beb4699. - llvmjit_emit.h as of
7ec0d80. - partdesc.h, as of 1bb5e78. Author: Jesse Zhang Discussion:
https://postgr.es/m/CAGf+fX4-8xULEOz09DE2dZGjT+q8VJ--rqfTpvcFwc+A4fc-3Q@mail.gmail.com
https://git.postgresql.org/pg/commitdiff/b8401c32bacd0869bd00bc71fd64f1d6071bcd6a

- Eliminate cache lookup errors in SQL functions for object addresses. When
using the following functions, users could see various types of errors of the
type "cache lookup failed for OID XXX" with elog(), that can only be used for
internal errors: * pg_describe_object() * pg_identify_object() *
pg_identify_object_as_address() The set of APIs managing object addresses for
all object types are made smarter by gaining a new argument "missing_ok" that
allows any caller to control if an error is raised or not on an undefined
object. The SQL functions listed above are changed to handle the case where
an object is missing. Regression tests are added for all object types for the
cases where these are undefined. Before this commit, these cases failed with
cache lookup errors, and now they basically return NULL (minus the name of the
object type requested). Author: Michael Paquier Reviewed-by: Aleksander
Alekseev, Dmitry Dolgov, Daniel Gustafsson, Álvaro Herrera, Kyotaro Horiguchi
Discussion:
https://postgr.es/m/CAB7nPqSZxrSmdHK-rny7z8mi=EAFXJ5J-0RbzDw6aus=wB5azQ@mail.gmail.com
https://git.postgresql.org/pg/commitdiff/2a10fdc4307a667883f7a3369cb93a721ade9680

- Fix compilation failure with sepgsql. One change for getObjectIdentity() has
been missed in 2a10fdc, causing the module to not compile properly. This was
actually the only problem, and it happens that it is easy enough to check the
compilation of the module on Debian after installing libselinux1-dev. Per
buildfarm member rhinoceros.
https://git.postgresql.org/pg/commitdiff/e949137397383de58f0c566f5a92b017343c5269

- Fix handling of missing files when using pg_rewind with online source. When
working with an online source cluster, pg_rewind gets a list of all the files
in the source data directory using a WITH RECURSIVE query, returning a NULL
result for a file's metadata if it gets removed between the moment it is
listed in a directory and the moment its metadata is obtained with
pg_stat_file() (say a recycled WAL segment). The query result was processed
in such a way that for each tuple we checked only that the first file's
metadata was NULL. This could have two consequences, both resulting in a
failure of the rewind: - If the first tuple referred to a removed file, all
files from the source would be ignored. - Any file actually missing would not
be considered as such. While on it, rework slightly the code so as no values
are saved if we know that a file is going to be skipped. Issue introduced by
b36805f, so backpatch down to 9.5. Author: Justin Pryzby, Michael Paquier
Reviewed-by: Daniel Gustafsson, Masahiko Sawada Discussion:
https://postgr.es/m/20200713061010.GC23581@telsasoft.com Backpatch-through:
9.5
https://git.postgresql.org/pg/commitdiff/1d09fb1f0a9c7edc3298104fc4350e49169f6f2a

- Switch pg_test_fsync to use binary mode on Windows. pg_test_fsync has always
opened files using the text mode on Windows, as this is the default mode used
if not enforced by _setmode(). This fixes a failure when running
pg_test_fsync down to 12 because O_DSYNC and the text mode are not able to
work together nicely. We fixed the handling of O_DSYNC in 12~ for the tool by
switching to the concurrent-safe version of fopen() in src/port/ with 0ba06e0.
And 40cfe86, by enforcing the text mode for compatibility reasons if O_TEXT or
O_BINARY are not specified by the caller, broke pg_test_fsync. For all
versions, this avoids any translation overhead, and pg_test_fsync should test
binary writes, so it is a gain in all cases. Note that O_DSYNC is still not
handled correctly in ~11, leading to pg_test_fsync to show insanely high
numbers for open_datasync() (using this property it is easy to notice that the
binary mode is much faster). This would require a backpatch of 0ba06e0 and
40cfe86, which could potentially break existing applications, so this is left
out. There are no TAP tests for this tool yet, so I have checked all builds
manually using MSVC. We could invent a new option to run a single transaction
instead of using a duration of 1s to make the tests a maximum short, but this
is left as future work. Thanks to Bruce Momjian for the discussion.
Reported-by: Jeff Janes Author: Michael Paquier Discussion:
https://postgr.es/m/16526-279ded30a230d275@postgresql.org Backpatch-through:
9.5
https://git.postgresql.org/pg/commitdiff/932f9fb504a57f296cf698d15bd93462ddfe2776

- doc: Fix description of \copy for psql. The WHERE clause introduced by 31f3817
was not described. While on it, split the grammar of \copy FROM and TO into
two distinct parts for clarity as they support different set of options.
Author: Vignesh C Discussion:
https://postgr.es/m/CALDaNm3zWr=OmxeNqOqfT=uZTSdam_j-gkX94CL8eTNfgUtf6A@mail.gmail.com
Backpatch-through: 12
https://git.postgresql.org/pg/commitdiff/b74d449a02b3c972051b1847f3915128da8775dc

- doc: Refresh more URLs in the docs. This updates some URLs that are
redirections, mostly to an equivalent using https. One URL referring to
generalized partial indexes was outdated. Author: Kyotaro Horiguchi
Discussion:
https://postgr.es/m/20200717.121308.1369606287593685396.horikyota.ntt@gmail.com
Backpatch-through: 9.5
https://git.postgresql.org/pg/commitdiff/9add405014f8e47e038af7124528b7601249a2ac

Amit Kapila pushed:

- Revert "Track statistics for spilling of changes from ReorderBuffer". The
stats with this commit was available only for WALSenders, however, users might
want to see for backends doing logical decoding via SQL API. Then, users might
want to reset and access these stats across server restart which was not
possible with the current patch. List of commits reverted: caa3c4242c
Don't call elog() while holding spinlock. e641b2a995 Doc: Update the
documentation for spilled transaction statistics. 5883f5fe27 Fix unportable
printf format introduced in commit 9290ad198. 9290ad198b Track statistics
for spilling of changes from ReorderBuffer. Additionaly, remove the release
notes entry for this feature. Backpatch-through: 13, where it was introduced
Discussion:
https://postgr.es/m/CA+fd4k5_pPAYRTDrO2PbtTOe0eHQpBvuqmCr8ic39uTNmR49Eg@mail.gmail.com
https://git.postgresql.org/pg/commitdiff/d973747281caece520236e93d255c654cc613ec9

- Fix signal handler setup for SIGHUP in the apply launcher process. Commit
1e53fe0e70 has unified the usage of the config-file reload flag by using the
same signal handler function for the SIGHUP signal at many places in the code.
By mistake, it used the wrong SIGNAL in apply launcher process for the SIGHUP
signal handler function. Author: Bharath Rupireddy Reviewed-by: Dilip Kumar
Backpatch-through: 13, where it was introduced Discussion:
https://postgr.es/m/CALj2ACVzHCRnS20bOiEHaLtP5PVBENZQn4khdsSJQgOv_GM-LA@mail.gmail.com
https://git.postgresql.org/pg/commitdiff/01160a3de3d89346c9597414ff85416b77f5391f

- Fix comments in reorderbuffer.c. Author: Dave Cramer Reviewed-by: David G.
Johnston Discussion:
https://postgr.es/m/CADK3HHL8do4Fp1bsymgNasx375njV3AR7zY3UgYwzbL_Dx-n2Q@mail.gmail.com
https://git.postgresql.org/pg/commitdiff/df7c5cb16e8fcf960e3302355fa6547fba428f5e

- Adjust minor comment in reorderbuffer.c. Author: Dave Cramer Reviewed-by:
David G. Johnston Discussion:
https://postgr.es/m/CADK3HHL8do4Fp1bsymgNasx375njV3AR7zY3UgYwzbL_Dx-n2Q@mail.gmail.com
https://git.postgresql.org/pg/commitdiff/f41fbee7e704947fd1d2241f35bc8d0e37705919

Jeff Davis pushed:

- HashAgg: before spilling tuples, set unneeded columns to NULL. This is a
replacement for 4cad2534. Instead of projecting all tuples going into a
HashAgg, only remove unnecessary attributes when actually spilling. This
avoids the regression for the in-memory case. Discussion:
https://postgr.es/m/a2fb7dfeb4f50aa0a123e42151ee3013933cb802.camel%40j-davis.com
Backpatch-through: 13
https://git.postgresql.org/pg/commitdiff/2302302236a0c7aeba3377d78dd9d80ba53247df

- Revert "Use CP_SMALL_TLIST for hash aggregate". This reverts commit
4cad2534da6d17067d98cf04be2dfc1bda8f2cd0 due to a performance regression. It
will be replaced by a new approach in an upcoming commit. Reported-by: Andres
Freund Discussion:
https://postgr.es/m/20200614181418.mx4bvljmfkkhoqzl@alap3.anarazel.de
Backpatch-through: 13
https://git.postgresql.org/pg/commitdiff/0babd109801e5ecd90df29589c23c6daf3ae69f7

Alexander Korotkov pushed:

- Improvements to psql \dAo and \dAp commands. * Strategy number and purpose
are essential information for opfamily operator. So, show those columns in
non-verbose output. * "Left/right arg type" \dAp column names are confusing,
because those type don't necessary match to function arguments. Rename
them to "Registered left/right type". * Replace manual assembling of
operator/procedure names with casts to regoperator/regprocedure. * Add
schema-qualification for pg_catalog functions and tables. Reported-by: Peter
Eisentraut, Tom Lane Reviewed-by: Tom Lane Discussion:
https://postgr.es/m/2edc7b27-031f-b2b6-0db2-864241c91cb9%402ndquadrant.com
Backpatch-through: 13
https://git.postgresql.org/pg/commitdiff/8d2ed66e4107ef27d05aef682c68af5952af7690

Tom Lane pushed:

- Fix bugs in libpq's management of GSS encryption state. GSS-related resources
should be cleaned up in pqDropConnection, not freePGconn, else the wrong
things happen when resetting a connection or trying to switch to a different
server. It's also critical to reset conn->gssenc there. During connection
setup, initialize conn->try_gss at the correct place, else switching to a
different server won't work right. Remove now-redundant cleanup of GSS
resources around one (and, for some reason, only one) pqDropConnection call in
connectDBStart. Per report from Kyotaro Horiguchi that psql would freeze up,
rather than successfully resetting a GSS-encrypted connection after a server
restart. This is YA oversight in commit b0b39f72b, so back-patch to v12.
Discussion:
https://postgr.es/m/20200710.173803.435804731896516388.horikyota.ntt@gmail.com
https://git.postgresql.org/pg/commitdiff/25fe5ac45a736e50d2b85280a3cb0ce169f583f3

- Cope with lateral references in the quals of a subquery RTE. The qual pushdown
logic assumed that all Vars in a restriction clause must be Vars referencing
subquery outputs; but since we introduced LATERAL, it's possible for such a
Var to be a lateral reference instead. This led to an assertion failure in
debug builds. In a non-debug build, there might be no ill effects (if
qual_is_pushdown_safe decided the qual was unsafe anyway), or we could get
failures later due to construction of an invalid plan. I've not gone to much
length to characterize the possible failures, but at least segfaults in the
executor have been observed. Given that this has been busted since 9.3 and it
took this long for anybody to notice, I judge that the case isn't worth going
to great lengths to optimize. Hence, fix by just teaching
qual_is_pushdown_safe that such quals are unsafe to push down, matching the
previous behavior when it accidentally didn't fail. Per report from Tom
Ellis. Back-patch to all supported branches. Discussion:
https://postgr.es/m/20200713175124.GQ8220@cloudinit-builder
https://git.postgresql.org/pg/commitdiff/a742ecf9c63d454ccb107a357288c8ec1444ca12

- Fix bitmap AND/OR scans on the inside of a nestloop partition-wise join.
reparameterize_path_by_child() failed to reparameterize BitmapAnd and BitmapOr
paths. This matters only if such a path is chosen as the inside of a nestloop
partition-wise join, where we have to pass in parameters from the outside of
the nestloop. If that did happen, we generated a bad plan that would likely
lead to crashes at execution. This is not entirely
reparameterize_path_by_child()'s fault though; it's the victim of an ancient
decision (my ancient decision, I think) to not bother filling in param_info in
BitmapAnd/Or path nodes. That caused the function to believe that such nodes
and their children contain no parameter references and so need not be
processed. In hindsight that decision looks pretty penny-wise and
pound-foolish: while it saves a few cycles during path node setup, we do
commonly need the information later. In particular, by reversing the decision
and requiring valid param_info data in all nodes of a bitmap path tree, we can
get rid of indxpath.c's get_bitmap_tree_required_outer() function, which
computed the data on-demand. It's not unlikely that that nets out as a
savings of cycles in many scenarios. A couple of other things in indxpath.c
can be simplified as well. While here, get rid of some cases in
reparameterize_path_by_child() that are visibly dead or useless, given that we
only care about reparameterizing paths that can be on the inside of a
parameterized nestloop. This case reminds one of the maxim that untested code
probably does not work, so I'm unwilling to leave unreachable code in this
function. (I did leave the T_Gather case in place even though it's not
reached in the regression tests. It's not very clear to me when the planner
might prefer to put Gather below rather than above a nestloop, but at least in
principle the case might be interesting.) Per bug #16536, originally from
Arne Roland but with a test case by Andrew Gierth. Back-patch to v11 where
this code came in. Discussion:
https://postgr.es/m/16536-2213ee0b3aad41fd@postgresql.org
https://git.postgresql.org/pg/commitdiff/689696c7110f148ede8004aae50d7543d05b5587

- Ensure that distributed timezone abbreviation files are plain ASCII. We had
two occurrences of "Mitteleuropäische Zeit" in Europe.txt, though the
corresponding entries in Default were spelled "Mitteleuropaeische Zeit".
Standardize on the latter spelling to avoid questions of which encoding to
use. While here, correct a couple of other trivial inconsistencies between
the Default file and the supposedly-matching entries in the *.txt files, as
exposed by some checking with comm(1). Also, add BDST to the Europe.txt file;
it previously was only listed in Default. None of this has any direct
functional effect. Per complaint from Christoph Berg. As usual for timezone
data patches, apply to all branches. Discussion:
https://postgr.es/m/20200716100743.GE3534683@msg.df7cb.de
https://git.postgresql.org/pg/commitdiff/7fe3083f4cc9cb213f99deecf1bf775a9270b3b2

- Cope with data-offset-less archive files during out-of-order restores. pg_dump
produces custom-format archive files that lack data offsets when it is unable
to seek its output. Up to now that's been a hazard for pg_restore. But if
pg_restore is able to seek in the archive file, there is no reason to throw up
our hands when asked to restore data blocks out of order. Instead, whenever
we are searching for a data block, record the locations of the blocks we
passed over (that is, fill in the missing data-offset fields in our in-memory
copy of the TOC data). Then, when we hit a case that requires going
backwards, we can just seek back. Also track the furthest point that we've
searched to, and seek back to there when beginning a search for a new data
block. This avoids possible O(N^2) time consumption, by ensuring that each
data block is examined at most twice. (On Unix systems, that's at most twice
per parallel-restore job; but since Windows uses threads here, the threads can
share block location knowledge, reducing the amount of duplicated work.) We
can also improve the code a bit by using fseeko() to skip over data blocks
during the search. This is all of some use even in simple restores, but it's
really significant for parallel pg_restore. In that case, we require
seekability of the input already, and we will very probably need to do
out-of-order restores. Back-patch to v12, as this fixes a regression
introduced by commit 548e50976. Before that, parallel restore avoided
requesting out-of-order restores, so it would work on a data-offset-less
archive. Now it will again. Ideally this patch would include some test
coverage, but there are other open bugs that need to be fixed before we can
extend our coverage of parallel restore very much. Plan to revisit that
later. David Gilman and Tom Lane; reviewed by Justin Pryzby Discussion:
https://postgr.es/m/CALBH9DDuJ+scZc4MEvw5uO-=vRyR2=QF9+Yh=3hPEnKHWfS81A@mail.gmail.com
https://git.postgresql.org/pg/commitdiff/f009591d6eddbeece955aab70c35e7002fd01aec

- Remove manual tracking of file position in pg_dump/pg_backup_custom.c. We do
not really need to track the file position by hand. We were already relying
on ftello() whenever the archive file is seekable, while if it's not seekable
we don't need the file position info anyway because we're not going to be able
to re-write the TOC. Moreover, that tracking was buggy since it failed to
account for the effects of fseeko(). Somewhat remarkably, that seems not to
have made for any live bugs up to now. We could fix the oversights, but it
seems better to just get rid of the whole error-prone mess. In itself this is
merely code cleanup. However, it's necessary infrastructure for an upcoming
bug-fix patch (because that code *does* need valid file position after
fseeko). The bug fix needs to go back as far as v12; hence, back-patch that
far. Discussion:
https://postgr.es/m/CALBH9DDuJ+scZc4MEvw5uO-=vRyR2=QF9+Yh=3hPEnKHWfS81A@mail.gmail.com
https://git.postgresql.org/pg/commitdiff/a8d0732ac2b5527ce47cce5b325f8df93f4d19cc

- Allow logical replication to transfer data in binary format. This patch adds a
"binary" option to CREATE/ALTER SUBSCRIPTION. When that's set, the publisher
will send data using the data type's typsend function if any, rather than
typoutput. This is generally faster, if slightly less robust. As committed,
we won't try to transfer user-defined array or composite types in binary, for
fear that type OIDs won't match at the subscriber. This might be changed
later, but it seems like fit material for a follow-on patch. Dave Cramer,
reviewed by Daniel Gustafsson, Petr Jelinek, and others; adjusted some by me
Discussion:
https://postgr.es/m/CADK3HH+R3xMn=8t3Ct+uD+qJ1KD=Hbif5NFMJ+d5DkoCzp6Vgw@mail.gmail.com
https://git.postgresql.org/pg/commitdiff/9de77b5453130242654ff0b30a551c9c862ed661

- Fix replication/worker_internal.h to compile without other headers. This
header hasn't changed recently, so the fact that it now fails
headerscheck/cpluspluscheck testing must be due to changes in what it
includes. Probably f21916791 is to blame, but I didn't try to verify that.
Discussion: https://postgr.es/m/3699703.1595016554@sss.pgh.pa.us
https://git.postgresql.org/pg/commitdiff/9b14280b207053f8b09e20b5719785ec4413b9d2

- Correctly mark pg_subscription.subslotname as nullable. Due to the layout of
this catalog, subslotname has to be explicitly marked BKI_FORCE_NULL, else
initdb will default to the assumption that it's non-nullable. Since, in fact,
CREATE/ALTER SUBSCRIPTION will store null values there, the existing marking
is just wrong, and has been since this catalog was invented. We haven't
noticed because not much in the system actually depends on attnotnull being
truthful. However, JIT'ed tuple deconstruction does depend on that in some
cases, allowing crashes or wrong answers in queries that inspect
pg_subscription. Commit 9de77b545 quite accidentally exposed this on the
buildfarm members that force JIT activation. Back-patch to v13. The problem
goes further back, but we cannot force initdb in released branches, so some
klugier solution will be needed there. Before working on that, push this
simple fix to try to get the buildfarm back to green. Discussion:
https://postgr.es/m/4118109.1595096139@sss.pgh.pa.us
https://git.postgresql.org/pg/commitdiff/72eab84a565cbc0677bf8907cd4bfaddf064bd64

Álvaro Herrera pushed:

- Fix uninitialized value in segno calculation. Remove previous hack in
KeepLogSeg that added a case to deal with a (badly represented) invalid
segment number. This was added for the sake of GetWALAvailability. But it's
not needed if in that function we initialize the segment number to be
retreated to the currently being written segment, so do that instead. Per
valgrind-running buildfarm member skink, and some sparc64 animals.
Discussion: https://postgr.es/m/1724648.1594230917@sss.pgh.pa.us
https://git.postgresql.org/pg/commitdiff/b5b4c0fef9fb905d98f93c1f455397449c6e63a8

David Rowley pushed:

- Fix timing issue with ALTER TABLE's validate constraint. An ALTER TABLE to
validate a foreign key in which another subcommand already caused a pending
table rewrite could fail due to ALTER TABLE attempting to validate the foreign
key before the actual table rewrite takes place. This situation could result
in an error such as: ERROR: could not read block 0 in file
"base/nnnnn/nnnnn": read only 0 of 8192 bytes The failure here was due to the
SPI call which validates the foreign key trying to access an index which is
yet to be rebuilt. Similarly, we also incorrectly tried to validate CHECK
constraints before the heap had been rewritten. The fix for both is to delay
constraint validation until phase 3, after the table has been rewritten. For
CHECK constraints this means a slight behavioral change. Previously ALTER
TABLE VALIDATE CONSTRAINT on inheritance tables would be validated from the
bottom up. This was different from the order of evaluation when a new CHECK
constraint was added. The changes made here aligns the VALIDATE CONSTRAINT
evaluation order for inheritance tables to be the same as ADD CONSTRAINT,
which is generally top-down. Reported-by: Nazli Ugur Koyluoglu, using
SQLancer Discussion:
https://postgr.es/m/CAApHDvp%3DZXv8wiRyk_0rWr00skhGkt8vXDrHJYXRMft3TjkxCA%40mail.gmail.com
Backpatch-through: 9.5 (all supported versions)
https://git.postgresql.org/pg/commitdiff/f1fcf2d3b2e00b3d7ad3e0d2b1d26b77f5a48413

- Add comment to explain an unused function parameter. Removing the unused
'miinfo' parameter has been raised a couple of times now. It was decided in
the 2nd discussion below that we're going to leave it alone. It seems like it
might be useful to add a comment to mention this fact so that nobody wastes
any time in the future proposing its removal again. Discussion:
https://postgr.es/m/CAApHDvpCf-qR5HC1rXskUM4ToV+3YDb4-n1meY=vpAHsRS_1PA@mail.gmail.com
Discussion:
https://postgr.es/m/CAE9k0P%3DFvcDswnSVtRpSyZMpcAWC%3DGp%3DifZ0HdfPaRQ%3D__LBtw%40mail.gmail.com
https://git.postgresql.org/pg/commitdiff/101f903e51f52bf595cd8177d2e0bc6fe9000762

Peter Eisentraut pushed:

- Fix -Wcast-function-type warnings. Three groups of issues needed to be
addressed: load_external_function() and related functions returned
PGFunction, even though not necessarily all callers are looking for a function
of type PGFunction. Since these functions are really just wrappers around
dlsym(), change to return void * just like dlsym(). In dynahash.c, we are
using strlcpy() where a function with a signature like memcpy() is expected.
This should be safe, as the new comment there explains, but the cast needs to
be augmented to avoid the warning. In PL/Python, methods all need to be cast
to PyCFunction, per Python API, but this now runs afoul of these warnings.
(This issue also exists in core CPython.) To fix the second and third case,
we add a new type pg_funcptr_t that is defined specifically so that gcc
accepts it as a special function pointer that can be cast to any other
function pointer without the warning. Also add -Wcast-function-type to the
standard warning flags, subject to configure check. Reviewed-by: Tom Lane
<tgl(at)sss(dot)pgh(dot)pa(dot)us> Discussion:
https://www.postgresql.org/message-id/flat/1e97628e-6447-b4fd-e230-d109cec2d584%402ndquadrant.com
https://git.postgresql.org/pg/commitdiff/de8feb1f3a23465b5737e8a8c160e8ca62f61339

- pg_dump: Reorganize dumpFunc() and dumpAgg(). Similar to
daa9fe8a5264a3f192efa5ddee8fb011ad9da365, instead of repeating the almost same
large query in each version branch, use one query and add a few columns to the
SELECT list depending on the version. This saves a lot of duplication.
Reviewed-by: Fabien COELHO <coelho(at)cri(dot)ensmp(dot)fr> Discussion:
https://www.postgresql.org/message-id/flat/6594334b-40fd-14f1-6bc5-877afa3feed5(at)2ndquadrant(dot)com
https://git.postgresql.org/pg/commitdiff/ed2c7f65bd9f15f8f7cd21ad61602f983b1e72e9

- Resolve gratuitous tabs in SQL file.
https://git.postgresql.org/pg/commitdiff/44f34365b81fd1be575d212593c2bd9c47060aa6

- Fix whitespace.
https://git.postgresql.org/pg/commitdiff/20ef35516328350a244d22b590e37f24ea958526

- Define OPENSSL_API_COMPAT. This avoids deprecation warnings from newer OpenSSL
versions (3.0.0 in particular). Discussion:
https://www.postgresql.org/message-id/flat/FEF81714-D479-4512-839B-C769D2605F8A%40yesql.se
https://git.postgresql.org/pg/commitdiff/4d3db13621be64fbac2faf7c01c4879d20885c1b

Andrew Dunstan pushed:

- Enable almost all TAP tests involving symlinks on Windows. Windows has
junction points which function as symbolic links for directories. This patch
introduces a new function TestLib::dir_symlink() which creates a junction
point on Windows and a standard Unix type symbolic link elsewhere. The
function TestLib::perl2host is also modified, first to use cygpath where it's
available (e.g. msys2) and second to allow it to succeed if the gandparent
directory exists but the parent does not. Given these changes the only
symlink tests that need to be skipped on Windows are those related to
permissions or to use of readlink. The relevant tests for pg_basebackup and
pg_rewind are therefore adjusted accordingly. Andrew Dunstan, reviewed by
Peter Eisentraut and Michael Paquier. Discussion:
https://postgr.es/m/c50a646c-d9bb-7c62-a4bf-8256ff6ff338@2ndquadrant.com
https://git.postgresql.org/pg/commitdiff/d66b23b032d75614e1be47ca182020960d89206d

Thomas Munro pushed:

- Add huge_page_size setting for use on Linux. This allows the huge page size to
be set explicitly. The default is 0, meaning it will use the system default,
as before. Author: Odin Ugedal <odin(at)ugedal(dot)com> Discussion:
https://postgr.es/m/20200608154639.20254-1-odin%40ugedal.com
https://git.postgresql.org/pg/commitdiff/d2bddc2500fb74d56e5bc53a1cfa269e2e846510

- Use MinimalTuple for tuple queues. This representation saves 8 bytes per tuple
compared to HeapTuple, and avoids the need to allocate, copy and free on the
receiving side. Gather can emit the returned MinimalTuple directly, but
GatherMerge now needs to make an explicit copy because it buffers multiple
tuples at a time. That should be no worse than before. Reviewed-by:
Soumyadeep Chakraborty <soumyadeep2007(at)gmail(dot)com> Discussion:
https://postgr.es/m/CA%2BhUKG%2B8T_ggoUTAE-U%3DA%2BOcPc4%3DB0nPPHcSfffuQhvXXjML6w%40mail.gmail.com
https://git.postgresql.org/pg/commitdiff/cdc7169509113018cc389da740e950c587b5751f

Peter Geoghegan pushed:

- Avoid CREATE INDEX unique index deduplication. There is no advantage to
attempting deduplication for a unique index during CREATE INDEX, since there
cannot possibly be any duplicates. Doing so wastes cycles due to unnecessary
copying. Make sure that we avoid it consistently. We already avoided unique
index deduplication in the case where there were some spool2 tuples to merge.
That didn't account for the fact that spool2 is removed early/unset in the
common case where it has no tuples that need to be merged (i.e. it failed to
account for the "spool2 turns out to be unnecessary" optimization in
_bt_spools_heapscan()). Oversight in commit 0d861bbb, which added nbtree
deduplication Backpatch: 13-, where nbtree deduplication was introduced.
https://git.postgresql.org/pg/commitdiff/5da8bf8bbb5c119d4bd767dbdfaf10efd348c0fd

- Add Valgrind buffer access instrumentation. Teach Valgrind memcheck to
maintain the "defined-ness" of each shared buffer based on whether the backend
holds at least one pin at the point it is accessed by access method code.
Bugs like the one fixed by commit b0229f26 can be detected using this new
instrumentation. Note that backends running with Valgrind naturally have
their own independent ideas about whether any given byte in shared memory is
safe or unsafe to access. There is no risk that concurrent access by multiple
backends to the same shared memory will confuse Valgrind's instrumentation,
because everything already works at the process level (or at the memory
mapping level, if you prefer). Author: Álvaro Herrera, Peter Geoghegan
Reviewed-By: Anastasia Lubennikova Discussion:
https://postgr.es/m/20150723195349.GW5596@postgresql.org Discussion:
https://postgr.es/m/CAH2-WzkLgyN3zBvRZ1pkNJThC=xi_0gpWRUb_45eexLH1+k2_Q@mail.gmail.com
https://git.postgresql.org/pg/commitdiff/1e0dfd166b3fa7fc79e4fad73b6fae056bab598a

- Rename "hash_mem" local variable. The term "hash_mem" will take on new
significance when pending work to add a new hash_mem_multiplier GUC is
committed. Rename a local variable that happens to have been called hash_mem
now to avoid confusion.
https://git.postgresql.org/pg/commitdiff/564ce62164cd57c0311752ae07ec10439c78d599

- Mark buffers as defined to Valgrind consistently. Make PinBuffer() mark
buffers as defined to Valgrind unconditionally, including when the buffer
header spinlock must be acquired. Failure to handle that case could lead to
false positive reports from Valgrind. This theoretically creates a risk that
we'll mark buffers defined even when external callers don't end up with a
buffer pin. That seems perfectly acceptable, though, since in general we make
no guarantees about buffers that are unsafe to access being reliably marked as
unsafe. Oversight in commit 1e0dfd16, which added valgrind buffer access
instrumentation.
https://git.postgresql.org/pg/commitdiff/46ef520b9566d9eccb095ceafa53e5c305cf80b9

== Pending Patches ==

Justin Pryzby sent in another revision of a patch to allow INSERT SELECT to use
a BulkInsertState.

Amit Langote sent in another revision of a patch to remove the dependency on
estate->es_result_relation_info from FDW APIs, remove es_result_relation_info,
rearrange the partition update row movement code, and refactor transition tuple
capture code a bit.

Alexandra Wang sent in another revision of a patch to improve the check new
partition bound error position report.

Fabrízio de Royes Mello sent in three more revisions of a patch to fix a bug in
pg_dump that caused it to segfault for extension owned tables.

Justin Pryzby and Nathan Bossart traded patches to add MAIN_RELATION_CLEANUP and
TOAST_TABLE_CLEANUP options to VACUUM.

Pavel Stěhule and Justin Pryzby traded patches to make it possible to add a
--filter option to pg_dump.

Floris Van Nee sent in another revision of a patch to implement index skip
scans.

Jehan-Guillaume de Rorthais sent in another revision of a patch to implement
DEMOTE.

Fujii Masao sent in two more revisions of a patch to change the
keep_wal_segments GUC to wal_keep_size.

Bharath Rupireddy and Amit Langote traded patches to improve the performance of
binary COPY FROM with buffering.

Thomas Munro sent in another revision of a patch to reduce WaitEventSet syscall
churn.

Julien Rouhaud sent in another revision of a patch to add a pg_check_relation()
function.

Julien Rouhaud sent in another revision of a patch to expose queryid in
pg_stat_activity and log_line_prefix.

Vigneshwaran C sent in another revision of a patch to make COPY FROM more
efficient by reducing the number of calls to GetCopyData and avoiding clearing
EOL and avoiding converting the header line to server encoding, as it is not
used.

David G. Johnston and Pavel Stěhule traded patches to add DROP ... IF EXISTS ...
docs and tests.

Anastasia Lubennikova sent in another revision of a patch to make COPY FREEZE
freeze correctly.

Amit Kapila and Dilip Kumar traded patches to fix an infelicity between
logical_work_mem and logical streaming of large in-progress transactions.

Amul Sul sent in another revision of a patch to implement ALTER SYSTEM READ
ONLY.

Álvaro Herrera sent in another revision of a patch to avoid testing for xact
commit if tuple is hinted.

Atsushi Torikoshi and Fujii Masao traded patches to expose the counters of
plancache to pg_prepared_statement.

Bharath Rupireddy sent in another revision of a patch to retry cached remote
connections for the PostgreSQL FDW.

Andrew Dunstan and Nikita Glukhov traded patches to implement the SQL standard
SQL/JSON functions.

Mark Dilger sent in another revision of a patch to refactor relkind handling by
cleaning up the #define RELKIND_XXX stuff using a new RelKind enum and special
macros while keeping the relkind fields as type 'char'

Justin Pryzby sent in another revision of a patch to do some secondary index
access optimizations, and avoid index scans that are inconsistent with partition
constraints.

Kyotaro HORIGUCHI sent in a patch to explain pqPacketSend more precisely.

Andrey V. Lepikhov sent in another revision of a patch to fix another patch that
implements CSN snapshots.

Alexander Korotkov sent in a patch to Update btree_gist extension for parallel
query by marking all functions provided by this extension PARALLEL SAFE.

Peter Eisentraut sent in another revision of a patch to pause recovery for
insufficient parameter settings.

Jehan-Guillaume de Rorthais sent in another revision of a patch to replace buggy
ucol_strcoll* funcs with ucol_strcollIter.

David G. Johnston sent in a patch to document BC date construction behaviors.

Konstantin Knizhnik sent in another revision of a patch to avoid doing
autovacuum when not needed.

Floris Van Nee sent in another revision of a patch to implement generic index
skip scans.

Bharath Rupireddy sent in a patch to have SIGHUP for config reload in logical
replication launcher.

Tom Lane sent in a patch to remember fseek positions with a custom dump.

Justin Pryzby sent in two more revisions of a patch to make pg_ls_* functions
show directories and shared filesets.

Peter Geoghegan sent in another revision of a patch to rename the hash_mem local
variable and add a hash_mem_multiplier GUC.

Daniel Gustafsson sent in another revision of a patch to support libnss for as
TLS backend.

Kyotaro HORIGUCHI sent in a patch to fix behavior for "cert"+"verify-ca" in
pg_hba.conf. The "cert" method in a line in pg_hba.conf is assumed as
clientcert="verify_full" and if we set it to "verify-ca", it is just ignored.
Since we explicitly reject "no-verify" in that case so we should reject
verify-ca as well.

Andres Freund sent in another revision of a patch to make snapshots more
scalable.

Amit Langote sent in another revision of a patch to make COPY FROM work faster
when loading tables with foreign partitions.

Amit Kapila sent in a patch to add a view to monitor replication slots.

Grigory Kryachko sent in another revision of a patch to include the access
method in listTables output.

Pavel Stěhule sent in another revision of a patch to allow CachedPlans for CALL
statements.

David G. Johnston sent in a patch to improve the "managing databases overview"
doc page.

Amit Kapila sent in a patch to Fix comments in heapam.c. After commits
85f6b49c2c and 3ba59ccc89, we can allow parallel inserts which was earlier not
possible as parallel group members won't conflict for relation extension and
page lock. In those commits, we forgot to update comments at few places.

Vigneshwaran C sent in two more revisions of a patch to implement COPY in
parallel.

Tom Lane sent in a patch to ensure that NaN divided by zero yields NaN.

Tom Lane sent in two revisions of a patch to fix a problem that manifested as
wrong results from in_range() tests with infinite offset.

Peter Eisentraut sent in another revision of a patch to define
OPENSSL_API_COMPAT.

Joe Wildish sent in a patch to support queries in the WHEN expression of
statement triggers.

Michaël Paquier and Vigneshwaran C traded patches to add tab completion for the
missing options in copy statement.

Rémi Lapeyre sent in four more revisions of a patch to add header support to
"COPY TO" text format.

Surafel Temesgen sent in another revision of a patch to implement
system-versioned temporal tables.

Peter Eisentraut sent in a patch to rename configure.in to configure.ac.

Dilip Kumar sent in a patch to provide a GUC to allow vacuum to continue on
corrupted tuple.

Bharah Rupireddy sent in a patch to avoid useless buffer allocations during
binary COPY FROM.

Vigneshwaran C sent in a patch to Adjust minor comment in nodeIncrementalSort.c.

Andy Fan sent in another revision of a patch to track uniqueness with UniqueKey.

Tom Lane sent in a patch to fix initdb's unsafe not-null-marking rule.

Justin Pryzby sent in a patch to fix the patch that implements generic type
subscripting.

Browse pgsql-announce by date

  From Date Subject
Next Message Jonathan S. Katz 2020-07-20 16:15:22 Crunchy PostgreSQL Operator 4.4: Clone from pgBackRest Repo, S3 Improvements, Certificate Auth for Replication, Helm Chart
Previous Message Alexander Seleznev 2020-07-15 12:13:04 PostgresDAC 3.8 meets RAD Studio 10.4 Sydney!