== PostgreSQL Weekly News - March 29, 2020 ==

From: David Fetter <david(at)fetter(dot)org>
To: PostgreSQL Announce <pgsql-announce(at)postgresql(dot)org>
Subject: == PostgreSQL Weekly News - March 29, 2020 ==
Date: 2020-03-29 20:02:27
Message-ID: 20200329200227.GA11318@fetter.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-announce

== PostgreSQL Weekly News - March 29, 2020 ==

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

PGConf.be 2020 has been cancelled.

PGDay Ukraine 2020 - POSTPONED due to COVID-19. Preliminary date: September
5th, 2020
https://pgday.org.ua/covid-19/

PGCon will be online and not in person. More details to follow.

PGDay.IT has been cancelled.

== PostgreSQL Product News ==

pgBackRest 2.25, a backup and restore system for PostgreSQL, released.
https://pgbackrest.org/release.html#2.25

Benetl 5.0, an ETL tool for postgreSQL, released.
http://www.benetl.net

There is now an archive of old apt packages at
https://apt-archive.postgresql.org/

WAL-G 0.2.15, a backup management system for PostgreSQL written in Go, released.
https://github.com/wal-g/wal-g/releases

pg_show_plans, a module to inspect execution plans in real-time, released.
https://github.com/cybertec-postgresql/pg_show_plans

pgFormatter 4.3, a formatter/beautifier for SQL code, released.
http://sqlformat.darold.net/

== PostgreSQL Jobs for March ==

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

== PostgreSQL Local ==

PgConf Belgium will take place on May 8, 2020 at the UCLL Campus in Haasrode
(near Leuven). The CfS is open through March 31, 2020 at https://pgconf.be/#cfs
http://pgconf.be

PGCon 2020 will take place online on May 26-29, 2020.
https://www.pgcon.org/2020/

Postgres Ibiza will be held in Ibiza, Spain on June 25-26, 2020.
https://pgibz.io/

PostgresLondon 2020 will be July 7-8, 2020 with an optional training day on
July 6.
http://postgreslondon.org

PG Day Russia will be in Saint Petersburg on July 10, 2020. The CfP is open at
https://pgday.ru/en/2020/for-speakers through April 6, 2020.
https://pgday.ru/en/2020/

FOSS4G 2020, will take place in Calgary, Alberta, Canada August 24-29 2020.
the Call for Papers is currently open at https://2020.foss4g.org/speakers/
https://2020.foss4g.org/

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. The CfP is open until April 19, 2020 at
https://pgday.at/en/talk-commitee/
https://pgday.at/en/

== 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:

- Add bound checks for ssl_min_protocol_version and ssl_max_protocol_version.
Mixing incorrect bounds in the SSL context leads to confusing error messages
generated by OpenSSL which are hard to act on. New range checks are added
when both min/max parameters are loaded in the context of a SSL reload to
improve the error reporting. Note that this does not make use of the GUC hook
machinery contrary to 41aadee, as there is no way to ensure a consistent range
check (except if there is a way one day to define range types for GUC
parameters?). Hence, this patch applies only to OpenSSL, and uses a logic
similar to other parameters to trigger an error when reloading the SSL context
in a session. Author: Michael Paquier Reviewed-by: Daniel Gustafsson
Discussion: https://postgr.es/m/20200114035420.GE1515@paquier.xyz
https://git.postgresql.org/pg/commitdiff/79dfa8afb296e1b0dcffbe674e04c5f25cc13dfd

- Revert "Refactor compile-time assertion checks in c.h". This reverts commit
b7f64c6, which broke the fallback implementation for C++. We have discussed a
couple of alternatives to reduce the number of implementations for those
asserts, but nothing allowing to reduce the number of implementations down to
three instead of four, so there is no benefit in keeping this patch. Thanks
to Tom Lane for the discussion. Discussion:
https://postgr.es/m/20200313115033.GA183471@paquier.xyz
https://git.postgresql.org/pg/commitdiff/faa650a99b4bfbe95e88f44070ae0df1818944a7

- Doc: Fix type of some storage parameters in CREATE TABLE page.
autovacuum_vacuum_scale_factor and autovacuum_analyze_scale_factor have been
documented as "float4", but "floating type" is used in this case for GUCs and
relation options in the documentation. Author: Atsushi Torikoshi Discussion:
https://postgr.es/m/CACZ0uYFf_p9BpbjLccx3CA=eM1Hk2Te=ULY4iptGLUhL-JxCPA@mail.gmail.com
Backpatch-through: 9.5
https://git.postgresql.org/pg/commitdiff/c81bd3b9a5e99315148f4f5714c32e633af30123

- Move routine building restore_command to src/common/. restore_command has only
been used until now by the backend, but there is a pending patch for pg_rewind
to make use of that in the frontend. Author: Alexey Kondratov Reviewed-by:
Andrey Borodin, Andres Freund, Alvaro Herrera, Alexander Korotkov, Michael
Paquier Discussion:
https://postgr.es/m/a3acff50-5a0d-9a2c-b3b2-ee36168955c1@postgrespro.ru
https://git.postgresql.org/pg/commitdiff/e09ad07b21a244c3cbcdbe3048e9ab0834ac6d41

Amit Kapila pushed:

- Add object names to partition integrity violations. All errors of SQLSTATE
class 23 should include the name of an object associated with the error in
separate fields of the error report message. We do this so that applications
need not try to extract them from the possibly-localized human-readable text
of the message. Reported-by: Chris Bandy Author: Chris Bandy Reviewed-by:
Amit Kapila and Amit Langote Discussion:
https://postgr.es/m/0aa113a3-3c7f-db48-bcd8-f9290b2269ae@gmail.com
https://git.postgresql.org/pg/commitdiff/33753ac9d7bc83dd9ccee9d5e678ed78a0725b4e

Tom Lane pushed:

- Fix our getopt_long's behavior for a command line argument of just "-".
src/port/getopt_long.c failed on such an argument, always seeing it as an
unrecognized switch. This is unhelpful; better is to treat such an item as a
non-switch argument. That behavior is what we find in GNU's getopt_long();
it's what src/port/getopt.c does; and it is required by POSIX for getopt(),
which getopt_long() ought to be generally a superset of. Moreover, it's
expected by ecpg, which intends an argument of "-" to mean "read from stdin".
So fix it. Also add some documentation about ecpg's behavior in this area,
since that was miserably underdocumented. I had to reverse-engineer it from
the code. Per bug #16304 from James Gray. Back-patch to all supported
branches, since this has been broken forever. Discussion:
https://postgr.es/m/16304-c662b00a1322db7f@postgresql.org
https://git.postgresql.org/pg/commitdiff/980a70b9763e330dab6d0eb994c96a007876e40e

- Doc: explain that LIKE et al can be used in ANY (sub-select) etc. This wasn't
stated anywhere, and it's perhaps not that obvious, since we get questions
about it from time to time. Also undocumented was that the parser actually
translates these into operators. Discussion:
https://postgr.es/m/CAFj8pRBkvZ71BqGKZnBBG4=0cKG+s50Dy+DYmrizUKEpAtdc+w@mail.gmail.com
https://git.postgresql.org/pg/commitdiff/fe604800681aed8228fbe67d2e175d6822c66ea2

- Doc: fix broken markup. Sloppiness in commit cedffbdb8, noted by Erikjan
Rijkers. (It's fairly unfortunate that xmllint doesn't catch this.)
Discussion: https://postgr.es/m/2e3dc9e4bfa4802d2c9f5fe15bde44de@xs4all.nl
https://git.postgresql.org/pg/commitdiff/ab3e4fbd5421e9b3203de9ebf6a741eebab2ab94

- Re-implement the ereport() macro using __VA_ARGS__. Now that we require C99,
we can depend on __VA_ARGS__ to work, and revising ereport() to use it has
several significant benefits: * The extra parentheses around the auxiliary
function calls are now optional. Aside from being a bit less ugly, this
removes a common gotcha for new contributors, because in some cases the
compiler errors you got from forgetting them were unintelligible. * The
auxiliary function calls are now evaluated as a comma expression list rather
than as extra arguments to errfinish(). This means that compilers can be
expected to warn about no-op expressions in the list, allowing detection of
several other common mistakes such as forgetting to add errmsg(...) when
converting an elog() call to ereport(). * Unlike the situation with extra
function arguments, comma expressions are guaranteed to be evaluated
left-to-right, so this removes platform dependency in the order of the
auxiliary function calls. While that dependency hasn't caused us big problems
in the past, this change does allow dropping some rather shaky assumptions
around errcontext() domain handling. There's no intention to make wholesale
changes of existing ereport calls, but as proof-of-concept this patch removes
the extra parens from a couple of calls in postgres.c. While new code can be
written either way, code intended to be back-patched will need to use extra
parens for awhile yet. It seems worth back-patching this change into v12, so
as to reduce the window where we have to be careful about that by one year.
Hence, this patch is careful to preserve ABI compatibility; a followup
HEAD-only patch will make some additional simplifications. Andres Freund and
Tom Lane Discussion:
https://postgr.es/m/CA+fd4k6N8EjNvZpM8nme+y+05mz-SM8Z_BgkixzkA34R+ej0Kw@mail.gmail.com
https://git.postgresql.org/pg/commitdiff/e3a87b4991cc2d00b7a3082abb54c5f12baedfd1

- Improve the internal implementation of ereport(). Change all the auxiliary
error-reporting routines to return void, now that we no longer need to pretend
they are passing something useful to errfinish(). While this probably doesn't
save anything significant at the machine-code level, it allows detection of
some additional types of mistakes. Pass the error location details (__FILE__,
__LINE__, PG_FUNCNAME_MACRO) to errfinish not errstart. This shaves a few
cycles off the case where errstart decides we're not going to emit anything.
Re-implement elog() as a trivial wrapper around ereport(), removing the
separate support infrastructure it used to have. Aside from getting rid of
some now-surplus code, this means that elog() now really does have exactly the
same semantics as ereport(), in particular that it can skip evaluation work if
the message is not to be emitted. Andres Freund and Tom Lane Discussion:
https://postgr.es/m/CA+fd4k6N8EjNvZpM8nme+y+05mz-SM8Z_BgkixzkA34R+ej0Kw@mail.gmail.com
https://git.postgresql.org/pg/commitdiff/17a28b03645e27d73bf69a95d7569b61e58f06eb

- Go back to returning int from ereport auxiliary functions. This reverts the
parts of commit 17a28b03645e27d73bf69a95d7569b61e58f06eb that changed
ereport's auxiliary functions from returning dummy integer values to returning
void. It turns out that a minority of compilers complain (not entirely
unreasonably) about constructs such as (condition) ? errdetail(...) : 0 if
errdetail() returns void rather than int. We could update those call sites to
say "(void) 0" perhaps, but the expectation for this patch set was that
ereport callers would not have to change anything. And this aspect of the
patch set was already the most invasive and least compelling part of it, so
let's just drop it. Per buildfarm. Discussion:
https://postgr.es/m/CA+fd4k6N8EjNvZpM8nme+y+05mz-SM8Z_BgkixzkA34R+ej0Kw@mail.gmail.com
https://git.postgresql.org/pg/commitdiff/bda6dedbea599209048bc51115ecb2062ceb976c

- Fix assorted portability issues in commit 896fcdb23. Some platforms require
libssl to be linked explicitly in the new SSL test module. Borrow
contrib/sslinfo's code for that. Since src/test/modules/Makefile now has a
variable SUBDIRS list, it needs to follow the ALWAYS_SUBDIRS protocol for that
(cf. comments in Makefile.global.in). Blindly try to fix MSVC build failures
by adding PGDLLIMPORT.
https://git.postgresql.org/pg/commitdiff/13c98bdfc41eefb75da24fd2a886b0ef5314b7f6

- Further fixes for ssl_passphrase_callback test module. The Makefile should set
TAP_TESTS = 1, not implement the infrastructure for itself. For one thing, it
missed the appropriate "make clean" steps. For another, the buildfarm isn't
running this test because it wasn't hooked into "make installcheck" either.
https://git.postgresql.org/pg/commitdiff/958aa438aaa473d580f60154786ffd716a28faf2

- Ensure that plpgsql cleans up cleanly during parallel-worker exit.
plpgsql_xact_cb ought to treat events XACT_EVENT_PARALLEL_COMMIT and
XACT_EVENT_PARALLEL_ABORT like XACT_EVENT_COMMIT and XACT_EVENT_ABORT
respectively, since its goal is to do process-local cleanup. This oversight
caused plpgsql's end-of-transaction cleanup to not get done in parallel
workers. Since a parallel worker will exit just after the transaction
cleanup, the effects of this are limited. I couldn't find any case in the
core code with user-visible effects, but perhaps there are some in extensions.
In any case it's wrong, so let's fix it before it bites us not after. In
passing, add some comments around the handling of expression evaluation
resources in DO blocks. There's no live bug there, but it's quite unobvious
what's happening; at least I thought so. This isn't related to the other
issue, except that I found both things while poking at expression-evaluation
performance. Back-patch the plpgsql_xact_cb fix to 9.5 where those event
types were introduced, and the DO-block commentary to v11 where DO blocks
gained the ability to issue COMMIT/ROLLBACK. Discussion:
https://postgr.es/m/10353.1585247879@sss.pgh.pa.us
https://git.postgresql.org/pg/commitdiff/86e5badd22d9ae131a2badb87acdbb20e41811a2

- Improve performance of "simple expressions" in PL/pgSQL. For relatively simple
expressions (say, "x + 1" or "x > 0"), plpgsql's management overhead exceeds
the cost of evaluating the expression. This patch substantially improves that
situation, providing roughly 2X speedup for such trivial expressions. First,
add infrastructure in the plancache to allow fast re-validation of cached
plans that contain no table access, and hence need no locks. Teach plpgsql to
use this infrastructure for expressions that it's already deemed "simple"
(which in particular will never contain table references). The fast path
still requires checking that search_path hasn't changed, so provide a fast
path for OverrideSearchPathMatchesCurrent by counting changes that have
occurred to the active search path in the current session. This is simplistic
but seems enough for now, seeing that PushOverrideSearchPath is not used in
any performance-critical cases. Second, manage the refcounts on simple
expressions' cached plans using a transaction-lifespan resource owner, so that
we only need to take and release an expression's refcount once per transaction
not once per expression evaluation. The management of this resource owner
exactly parallels the existing management of plpgsql's simple-expression
EState. Add some regression tests covering this area, in particular verifying
that expression caching doesn't break semantics for search_path changes.
Patch by me, but it owes something to previous work by Amit Langote, who
recognized that getting rid of plancache-related overhead would be a useful
thing to do here. Also thanks to Andres Freund for review. Discussion:
https://postgr.es/m/CAFj8pRDRVfLdAxsWeVLzCAbkLFZhW549K+67tpOc-faC8uH8zw@mail.gmail.com
https://git.postgresql.org/pg/commitdiff/8f59f6b9c0376173a072e4fb7de1edd6a26e6b52

- Rearrange validity checks for plpgsql "simple" expressions. Buildfarm
experience shows what probably should've occurred to me before: if a cache
flush occurs partway through building a generic plan, then the plansource may
have is_valid = false even though the plan is valid. We need to accept this
case, use the generated plan, and then try to replan the next time. We can't
try to replan immediately, because that would produce an infinite loop in
CLOBBER_CACHE_ALWAYS builds; moreover it's really overkill. (We can assume
that the plan is valid, it's just possibly a bit stale. Note that the
pre-existing code behaved this way, and the non-simple-expression code paths
do too.) Conversely, not using the generated plan would drop us into the
not-a-simple-expression code path, which is bad for performance and would also
cause regression-test failures due to visibly different error-reporting
behavior. Hence, refactor the validity-check functions so that the initial
check and recheck cases can react differently to plansource->is_valid. This
makes their usage a bit simpler, too. Discussion:
https://postgr.es/m/7072.1585332104@sss.pgh.pa.us
https://git.postgresql.org/pg/commitdiff/fbc7a716084ebccd2a996cc415187c269ea54b3e

- Protect against overflow of ltree.numlevel and lquery.numlevel. These uint16
fields could be overflowed by excessively long input, producing strange
results. Complain for invalid input. Likewise check for out-of-range values
of the repeat counts in lquery. (We don't try too hard on that one, notably
not bothering to detect if atoi's result has overflowed.) Also detect length
overflow in ltree_concat. In passing, be more consistent about whether
"syntax error" messages include the type name. Also, clarify the
documentation about what the size limit is. This has been broken for a long
time, so back-patch to all supported branches. Nikita Glukhov, reviewed by
Benjie Gillam and Tomas Vondra Discussion:
https://postgr.es/m/CAP_rww=waX2Oo6q+MbMSiZ9ktdj6eaJj0cQzNu=Ry2cCDij5fw@mail.gmail.com
https://git.postgresql.org/pg/commitdiff/95f7ddfdad99c5ea0500d90ce52075814e10ed8c

- Fix lquery's behavior for consecutive '*' items. Something like "*{2}.*{3}"
should presumably mean the same as "*{5}", but it didn't. Improve that. Get
rid of an undocumented and remarkably ugly (though not, as far as I can tell,
actually unsafe) static variable in favor of passing more arguments to
checkCond(). Reverse-engineer some commentary. This function, like all of
ltree, is still far short of what I would consider the minimum acceptable
level of internal documentation, but at least now it has more than zero
comments. Although this certainly seems like a bug fix, people might not
thank us for changing query behavior in stable branches, so no back-patch.
Nikita Glukhov, with cosmetic improvements by me Discussion:
https://postgr.es/m/CAP_rww=waX2Oo6q+MbMSiZ9ktdj6eaJj0cQzNu=Ry2cCDij5fw@mail.gmail.com
https://git.postgresql.org/pg/commitdiff/9950c8aadf0edd31baec74a729d47d94af636c06

Alexander Korotkov pushed:

- Fix ordering in typedefs.list.
https://git.postgresql.org/pg/commitdiff/0df94beb362e0ebc812170fbabd1aaf75136831a

Andres Freund pushed:

- Add regression tests for constraint errors in partitioned tables. While #16293
only applied to 11 (and 10 to some degree), it seems best to add tests to all
branches with partitioning support. Reported-By: Daniel WM Author: Andres
Freund Bug: #16293 Discussion:
https://postgr.es/m/16293-26f5777d10143a66@postgresql.org Backpatch: 10-
https://git.postgresql.org/pg/commitdiff/f801ceb696b4a865ef80fd29c9df880280472e03

- Report wait event for cost-based vacuum delay. Author: Justin Pryzby
Discussion: https://postgr.es/m/20200321040750.GD13662@telsasoft.com
https://git.postgresql.org/pg/commitdiff/cedffbdb8b137325a79e07a976457bc2314adf9b

- logical decoding: Remove TODO about unnecessary optimization. Measurements
show, and intuition agrees, that there's currently no known cases where adding
a fastpath to avoid allocating / ordering a heap for a single transaction is
worthwhile. Author: Dilip Kumar Discussion:
https://postgr.es/m/CAFiTN-sp701wvzvnLQJGk7JDqrFM8f--97-ihbwkU8qvn=p8nw@mail.gmail.com
https://git.postgresql.org/pg/commitdiff/112b006fe79b6fe84647df84a07c201e5a7b1635

- Ensure snapshot is registered within ScanPgRelation(). In 9.4 I added support
to use a historical snapshot in ScanPgRelation(), while adding logical
decoding. Unfortunately a conflict with the concurrent removal of SnapshotNow
was incorrectly resolved, leading to an unregistered snapshot being used. It
is not correct to use an unregistered (or non-active) snapshot for anything
non-trivial, because catalog invalidations can cause the snapshot to be
invalidated. Luckily it seems unlikely to actively cause problems in
practice, as ScanPgRelation() requires that we already have a lock on the
relation, we only look for a single row, and we don't appear to rely on the
result's tid to be correct. It however is clearly wrong and potential negative
consequences would likely be hard to find. So it seems worth backpatching the
fix, even without a concrete hazard. Discussion:
https://postgr.es/m/20200229052459.wzhqnbhrriezg4v2@alap3.anarazel.de
Backpatch: 9.5-
https://git.postgresql.org/pg/commitdiff/42750b08d946e2a5048454d7b4e127f0e1df3c65

Bruce Momjian pushed:

- docs: add backend_type to file-fdw CSV log example. backend_type was added to
the CVS log output in commit 70a7b4776b. Reported-by: Fabrízio de Royes Mello
Discussion:
https://postgr.es/m/CAFcNs+ruvRks3BV1j7yQ-MvxsswmKJa0cVh2yK5Dd-xXVM8wPw@mail.gmail.com
Backpatch-through: master
https://git.postgresql.org/pg/commitdiff/0830d21f5b01064837dc8bd910ab31a5b7a1101a

Jeff Davis pushed:

- Fixes for Disk-based Hash Aggregation. Justin Pryzby raised a couple issues
with commit 1f39bce0. Fixed. Also, tweak the way the size of a hash entry is
estimated and the number of buckets is estimated when calling
BuildTupleHashTableExt(). Discussion:
https://www.postgresql.org/message-id/20200319064222.GR26184@telsasoft.com
https://git.postgresql.org/pg/commitdiff/64fe6022790920ef6edee475bfa162a961f148d8

- Reduce test time for disk-based Hash Aggregation. Discussion:
https://postgr.es/m/23196.1584943506@sss.pgh.pa.us
https://git.postgresql.org/pg/commitdiff/76df765e88fd9016e4b4f75dc69bcd9a1f335f72

- Consider disk-based hash aggregation to implement DISTINCT. Correct oversight
in 1f39bce0. If enable_hashagg_disk=true, we should consider hash aggregation
for DISTINCT when applicable.
https://git.postgresql.org/pg/commitdiff/dd8e19132acfbb28d579288a412ed6c0a5ea338b

- Avoid allocating unnecessary zero-sized array. If there are no aggregates,
there is no need to allocate an array of zero AggStatePerGroupData elements.
https://git.postgresql.org/pg/commitdiff/3649133b147638f25933c93e3d4f6b920da50332

- Fix costing for disk-based hash aggregation. Report and suggestions from
Richard Guo and Tomas Vondra. Discussion:
https://postgr.es/m/CAMbWs4_W8fYbAn8KxgidAaZHON_Oo08OYn9ze=7remJymLqo5g@mail.gmail.com
https://git.postgresql.org/pg/commitdiff/7351bfeda33b60b69c15791c7eb77a127546df26

Fujii Masao pushed:

- Report NULL as total backup size if it's not estimated. Previously 0 was
reported in pg_stat_progress_basebackup.total_backup if the total backup size
was not estimated. Per discussion, our consensus is that NULL is better choise
as the value in total_backup in that case. So this commit makes
pg_stat_progress_basebackup view report NULL in total_backup column if the
estimation is disabled. Bump catversion. Author: Fujii Masao Reviewed-by:
Amit Langote, Magnus Hagander, Alvaro Herrera Discussion:
https://postgr.es/m/CABUevExnhOD89zBDuPvfAAh243RzNpwCPEWNLtMYpKHMB8gbAQ@mail.gmail.com
https://git.postgresql.org/pg/commitdiff/67e0adfb3f98f1e4a89a32b6f2e59774ce579146

- Add wait events for WAL archive and recovery pause. This commit introduces new
wait events BackupWaitWalArchive and RecoveryPause. The former is reported
while waiting for the WAL files required for the backup to be successfully
archived. The latter is reported while waiting for recovery in pause state to
be resumed. Author: Fujii Masao Reviewed-by: Michael Paquier, Atsushi
Torikoshi, Robert Haas Discussion:
https://postgr.es/m/f0651f8c-9c96-9f29-0ff9-80414a15308a@oss.nttdata.com
https://git.postgresql.org/pg/commitdiff/b8e20d6dabdafbe905b62910dc0236037c7881e1

- Prefer standby promotion over recovery pause. Previously if a promotion was
triggered while recovery was paused, the paused state continued. Also recovery
could be paused by executing pg_wal_replay_pause() even while a promotion was
ongoing. That is, recovery pause had higher priority over a standby promotion.
But this behavior was not desirable because most users basically wanted the
recovery to complete as soon as possible and the server to become the master
when they requested a promotion. This commit changes recovery so that it
prefers a promotion over recovery pause. That is, if a promotion is triggered
while recovery is paused, the paused state ends and a promotion continues.
Also this commit makes recovery pause functions like pg_wal_replay_pause()
throw an error if they are executed while a promotion is ongoing. Internally,
this commit adds new internal function PromoteIsTriggered() that returns true
if a promotion is triggered. Since the name of this function and the existing
function IsPromoteTriggered() are confusingly similar, the commit changes the
name of IsPromoteTriggered() to IsPromoteSignaled, as more appropriate name.
Author: Fujii Masao Reviewed-by: Atsushi Torikoshi, Sergei Kornilov
Discussion:
https://postgr.es/m/00c194b2-dbbb-2e8a-5b39-13f14048ef0a@oss.nttdata.com
https://git.postgresql.org/pg/commitdiff/496ee647ecd2917369ffcf1eaa0b2cdca07c8730

Peter Eisentraut pushed:

- Add support for other normal forms to Unicode normalization API. It previously
only supported NFKC, for use by SASLprep. This expands the API to offer the
choice of all four normalization forms. Right now, there are no internal
users of the forms other than NFKC. Reviewed-by: Daniel Verite
<daniel(at)manitou-mail(dot)org> Reviewed-by: Andreas Karlsson <andreas(at)proxel(dot)se>
Discussion:
https://www.postgresql.org/message-id/flat/c1909f27-c269-2ed9-12f8-3ab72c8caf7a(at)2ndquadrant(dot)com
https://git.postgresql.org/pg/commitdiff/d40d564c5a920e1121b28463dfed74441cbae5c0

- Some refactoring of logical/worker.c. This moves the main operations of
apply_handle_{insert|update|delete}, that of inserting, updating, deleting a
tuple into/from a given relation, into corresponding
apply_handle_{insert|update|delete}_internal functions. This allows
performing those operations on relations that are not directly the targets of
replication, which is something a later patch will use for targeting
partitioned tables. Author: Amit Langote <amitlangote09(at)gmail(dot)com>
Reviewed-by: Rafia Sabih <rafia(dot)pghackers(at)gmail(dot)com> Reviewed-by: Peter
Eisentraut <peter(dot)eisentraut(at)2ndquadrant(dot)com> Discussion:
https://www.postgresql.org/message-id/flat/CA+HiwqH=Y85vRK3mOdjEkqFK+E=ST=eQiHdpj43L=_eJMOOznQ(at)mail(dot)gmail(dot)com
https://git.postgresql.org/pg/commitdiff/97ee604d9bcedf0066986521a7ee15e3aa87be34

- Fix compiler warning. A variable was unused in non-assert builds. Simplify
the code to avoid the issue. Reported-by: Erik Rijkers <er(at)xs4all(dot)nl>
https://git.postgresql.org/pg/commitdiff/cef27ae01ac872355b2bd56c0882aafe5c6f08de

- Fix compiler warning on Cygwin. bf68b79e50e3359accc85c94fa23cc03abb9350a
introduced an unused variable compiler warning on Cygwin.
https://git.postgresql.org/pg/commitdiff/f15ace793578d96d70dad1e613293ae3eab92503

- Update SQL features. The name of E182 was changed in SQL:2011. Also, we can
change it to supported because all it requires is one embedded language to be
supported, which we do.
https://git.postgresql.org/pg/commitdiff/e8b1774fc288d7f789a539ef0a768aff2deef600

- Define EXEC_BACKEND in pg_config_manual.h. It was for unclear reasons defined
in a separate location, which makes it more cumbersome to override for
testing, and it also did not have any prominent documentation. Move to
pg_config_manual.h, where similar things are already collected. The previous
definition on the command-line had the effect of defining it to the value 1,
but now that we don't need that anymore we just define it to empty, to
simplify manual editing a bit. Reviewed-by: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
Discussion:
https://www.postgresql.org/message-id/flat/b7053ba8-b008-5335-31de-2fe4fe41ef0f%402ndquadrant.com
https://git.postgresql.org/pg/commitdiff/f5817595a7f194d25bc9be5b035eb1f7f60cd1fa

- Drop slot's LWLock before returning from SaveSlotToPath(). When
SaveSlotToPath() is called with elevel=LOG, the early exits didn't release the
slot's io_in_progress_lock. This could result in a walsender being stuck on
the lock forever. A possible way to get into this situation is if the
offending code paths are triggered in a low disk space situation. Author:
Pavan Deolasee <pavan(dot)deolasee(at)2ndquadrant(dot)com> Reported-by: Craig Ringer
<craig(at)2ndquadrant(dot)com> Discussion:
https://www.postgresql.org/message-id/flat/56a138c5-de61-f553-7e8f-6789296de785%402ndquadrant.com
https://git.postgresql.org/pg/commitdiff/49bf81536e242f079bfbce6e8f95f53f18207dd5

- Update SQL features. Change F311 to supported. This was already accomplished
when subfeature F311-04 (WITH CHECK OPTION) was added, but the top-level
feature wasn't updated at the time.
https://git.postgresql.org/pg/commitdiff/8d1b9648c5861dd14773e551f0b0f37f7ff22820

- Cleanup in SQL features files. Feature C011 was still listed in
sql_feature_packages.txt but had been removed from sql_features.txt, so also
remove from the former.
https://git.postgresql.org/pg/commitdiff/145cb16d3bd7d20dbf14507905404aa8153ebf2a

- Enable Unix-domain sockets support on Windows. As of Windows 10 version 1803,
Unix-domain sockets are supported on Windows. But it's not automatically
detected by configure because it looks for struct sockaddr_un and Windows
doesn't define that. So we just make our own definition on Windows and
override the configure result. Set DEFAULT_PGSOCKET_DIR to empty on Windows
so by default no Unix-domain socket is used, because there is no good standard
location. In pg_upgrade, we have to do some extra tweaking to preserve the
existing behavior of not using Unix-domain sockets on Windows. Adding support
would be desirable, but it needs further work, in particular a way to select
whether to use Unix-domain sockets from the command-line or with a run-time
test. The pg_upgrade test script needs a fix. The previous code passed
"localhost" to postgres -k, which only happened to work because Windows used
to ignore the -k argument value altogether. We instead need to pass an empty
string to get the desired effect. The test suites will continue to not use
Unix-domain sockets on Windows. This requires a small tweak in pg_regress.c.
The TAP tests don't need to be changed because they decide by the operating
system rather than HAVE_UNIX_SOCKETS. Reviewed-by: Andrew Dunstan
<andrew(dot)dunstan(at)2ndquadrant(dot)com> Discussion:
https://www.postgresql.org/message-id/flat/54bde68c-d134-4eb8-5bd3-8af33b72a010(at)2ndquadrant(dot)com
https://git.postgresql.org/pg/commitdiff/8f3ec75de4060d86176ad4ac998eeb87a39748c2

- Update SQL features. Change F181 to supported. It requires that an embedded C
program can be split across multiple files, which ECPG easily supports.
https://git.postgresql.org/pg/commitdiff/b79911dc8c0dc3b864999b9a17333716d602c6a0

- pg_regress: Observe TMPDIR. Put the temporary socket directory under TMPDIR,
if that environment variable is set, instead of the hardcoded /tmp. This
allows running the tests if there is no /tmp at all (for example on Windows,
although running the tests with Unix-domain sockets is not enabled on Windows
yet). We also use TMPDIR everywhere else /tmp is hardcoded, so this makes the
behavior consistent. Reviewed-by: Andrew Dunstan
<andrew(dot)dunstan(at)2ndquadrant(dot)com> Discussion:
https://www.postgresql.org/message-id/flat/54bde68c-d134-4eb8-5bd3-8af33b72a010(at)2ndquadrant(dot)com
https://git.postgresql.org/pg/commitdiff/9cedb1666051516c2763bb0ae4ace583cd26b141

- Document color support. Add a documentation appendix that explains the
PG_COLOR and PG_COLORS environment variables. Discussion:
https://www.postgresql.org/message-id/flat/bbdcce43-bd2e-5599-641b-9b44b9e0add4(at)2ndquadrant(dot)com
https://git.postgresql.org/pg/commitdiff/e1ff780485ca9ff0d2db3cd716b63557fc6ae5e5

Peter Geoghegan pushed:

- Fix nbtree deduplication README commentary. Descriptions of some aspects of
how deduplication works were unclear in a couple of places.
https://git.postgresql.org/pg/commitdiff/b150a76793109b00ea43c26e0006b3cad9030096

- Justify nbtree page split locking in code comment. Delaying unlocking the
right child page until after the point that the left child's parent page has
been refound is no longer truly necessary. Commit 40dae7ec made nbtree
tolerant of interrupted page splits. VACUUM was taught to avoid deleting a
page that happens to be the right half of an incomplete split. As long as
page splits don't unlock the left child page until the end of the second/final
phase, it should be safe to unlock the right child page earlier (at the end of
the first phase). It probably isn't actually useful to release the right
child's lock earlier like this (it probably won't improve performance). Even
still, pointing out that it ought to be safe to do so should make it easier to
understand the overall design.
https://git.postgresql.org/pg/commitdiff/9945ad6e904041be1567a89916ddc64087ed1edc

- Make deduplication use number of key attributes. Use
IndexRelationGetNumberOfKeyAttributes() rather than
IndexRelationGetNumberOfAttributes() when determining whether or not two index
tuples are suitable for merging together into a single posting list tuple.
This is a little bit tidier. It brings affected code in nbtdedup.c a little
closer to similar, related code in nbtsplitloc.c.
https://git.postgresql.org/pg/commitdiff/a7b9d24e4e00048bf9d99b197996476dcf9492de

Thomas Munro pushed:

- Allow NULL version for individual collations. Remove the documented
restriction that collation providers must either return NULL for all
collations or non-NULL for all collations. Use NULL for glibc collations like
"C.UTF-8", which might otherwise lead future proposed commits to force
unnecessary index rebuilds. Reviewed-by: Peter Eisentraut
<peter(dot)eisentraut(at)2ndquadrant(dot)com> Discussion:
https://postgr.es/m/CA%2BhUKGJvqup3s%2BJowVTcacZADO6dOhfdBmvOPHLS3KXUJu41Jw%40mail.gmail.com
https://git.postgresql.org/pg/commitdiff/382a821907e76bf6068492a164fdfc57578391f4

- Add collation versions for Windows. On Vista and later, use GetNLSVersionEx()
to request collation version information. Reviewed-by: Juan José Santamaría
Flecha <juanjo(dot)santamaria(at)gmail(dot)com> Discussion:
https://postgr.es/m/CA%2BhUKGJvqup3s%2BJowVTcacZADO6dOhfdBmvOPHLS3KXUJu41Jw%40mail.gmail.com
https://git.postgresql.org/pg/commitdiff/352f6f2df60f8725cf6e81141985977d76c169d3

Álvaro Herrera pushed:

- pg_dump: Allow dumping data of specific foreign servers. The new command-line
switch --include-foreign-data=PATTERN lets the user specify foreign servers
from which to dump foreign table data. This can be refined by further
inclusion/exclusion switches, so that the user has full control over which
tables to dump. A limitation is that this doesn't work in combination with
parallel dumps, for implementation reasons. This might be lifted in the
future, but requires shuffling some code around. Author: Luis Carril
<luis(dot)carril(at)swarm64(dot)com> Reviewed-by: Daniel Gustafsson <daniel(at)yesql(dot)se>
Reviewed-by: Surafel Temesgen <surafel3000(at)gmail(dot)com> Reviewed-by: vignesh C
<vignesh21(at)gmail(dot)com> Reviewed-by: Álvaro Herrera <alvherre(at)2ndQuadrant(dot)com>
Discussion:
https://postgr.es/m/LEJPR01MB0185483C0079D2F651B16231E7FC0@LEJPR01MB0185.DEUPRD01.PROD.OUTLOOK.DE
https://git.postgresql.org/pg/commitdiff/2f9eb31320948b968e5f744b73032405e1f25225

- pg_dump new test: Change order of arguments. Some getopt_long implementations
don't like to have a non-option argument before option arguments, so put the
database name as the last switch. Per buildfarm member hoverfly.
https://git.postgresql.org/pg/commitdiff/ffd398021c296e55b59ab848ac71a1769ddff93f

- Set wal_receiver_create_temp_slot PGC_POSTMASTER. Commit 329730827848 gave
walreceiver the ability to create and use a temporary replication slot, and
made it controllable by a GUC (enabled by default) that can be changed with
SIGHUP. That's useful but has two problems: one, it's possible to cause the
origin server to fill its disk if the slot doesn't advance in time; and also
there's a disconnect between state passed down via the startup process and
GUCs that walreceiver reads directly. We handle the first problem by setting
the option to disabled by default. If the user enables it, its on their head
to make sure that disk doesn't fill up. We handle the second problem by
passing the flag via startup rather than having walreceiver acquire it
directly, and making it PGC_POSTMASTER (which ensures a walreceiver always has
the fresh value). A future commit can relax this (to PGC_SIGHUP again) by
having the startup process signal walreceiver to shutdown whenever the value
changes. Author: Sergei Kornilov <sk(at)zsrv(dot)org> Reviewed-by: Michael Paquier
<michael(at)paquier(dot)xyz> Reviewed-by: Álvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org>
Discussion: https://postgr.es/m/20200122055510.GH174860@paquier.xyz
https://git.postgresql.org/pg/commitdiff/092c6936de49effe63daad94855bcd8ef26a09dd

- Allow walreceiver configuration to change on reload. The parameters
primary_conninfo, primary_slot_name and wal_receiver_create_temp_slot can now
be changed with a simple "reload" signal, no longer requiring a server
restart. This is achieved by signalling the walreceiver process to terminate
and having it start again with the new values. Thanks to Andres Freund,
Kyotaro Horiguchi, Fujii Masao for discussion. Author: Sergei Kornilov
<sk(at)zsrv(dot)org> Reviewed-by: Michael Paquier <michael(at)paquier(dot)xyz> Reviewed-by:
Álvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org> Discussion:
https://postgr.es/m/19513901543181143@sas1-19a94364928d.qloud-c.yandex.net
https://git.postgresql.org/pg/commitdiff/1e6148032e4d27aec75c49264b47ad193405a919

Andrew Dunstan pushed:

- Provide a TLS init hook. The default hook function sets the default password
callback function. In order to allow preloaded libraries to have an
opportunity to override the default, TLS initialization if now delayed
slightly until after shared preloaded libraries have been loaded. A test
module is provided which contains a trivial example that decodes an obfuscated
password for an SSL certificate. Author: Andrew Dunstan Reviewed By: Andreas
Karlsson, Asaba Takanori Discussion:
https://postgr.es/m/04116472-818b-5859-1d74-3d995aab2252@2ndQuadrant.com
https://git.postgresql.org/pg/commitdiff/896fcdb230e729652d37270c8606ccdc45212f0d

- Don't listen to localhost in ssl_passphrase_callback test. Commit 896fcdb230
contained an unnecessary setting that listened to localhost. Since the test
doesn't actually try to make an SSL connection to the database this isn't
required. Moreover, it's a security hole. Per gripe from Tom Lane.
https://git.postgresql.org/pg/commitdiff/e984fb341f293ab21c7d63897357ffca08280268

Magnus Hagander pushed:

- Document that pg_checksums exists in checksums README. Author: Daniel
Gustafsson <daniel(at)yesql(dot)se>
https://git.postgresql.org/pg/commitdiff/eff5b245df259c73d8342e2f04dba5a832d2ea0a

David Rowley pushed:

- Trigger autovacuum based on number of INSERTs. Traditionally autovacuum has
only ever invoked a worker based on the estimated number of dead tuples in a
table and for anti-wraparound purposes. For the latter, with certain classes
of tables such as insert-only tables, anti-wraparound vacuums could be the
first vacuum that the table ever receives. This could often lead to autovacuum
workers being busy for extended periods of time due to having to potentially
freeze every page in the table. This could be particularly bad for very large
tables. New clusters, or recently pg_restored clusters could suffer even more
as many large tables may have the same relfrozenxid, which could result in
large numbers of tables requiring an anti-wraparound vacuum all at once. Here
we aim to reduce the work required by anti-wraparound and aggressive vacuums
in general, by triggering autovacuum when the table has received enough
INSERTs. This is controlled by adding two new GUCs and reloptions;
autovacuum_vacuum_insert_threshold and autovacuum_vacuum_insert_scale_factor.
These work exactly the same as the existing scale factor and threshold
controls, only base themselves off the number of inserts since the last
vacuum, rather than the number of dead tuples. New controls were added rather
than reusing the existing controls, to allow these new vacuums to be tuned
independently and perhaps even completely disabled altogether, which can be
done by setting autovacuum_vacuum_insert_threshold to -1. We make no attempt
to skip index cleanup operations on these vacuums as they may trigger for an
insert-mostly table which continually doesn't have enough dead tuples to
trigger an autovacuum for the purpose of removing those dead tuples. If we
were to skip cleaning the indexes in this case, then it is possible for the
index(es) to become bloated over time. There are additional benefits to
triggering autovacuums based on inserts, as tables which never contain enough
dead tuples to trigger an autovacuum are now more likely to receive a vacuum,
which can mark more of the table as "allvisible" and encourage the query
planner to make use of Index Only Scans. Currently, we still obey
vacuum_freeze_min_age when triggering these new autovacuums based on INSERTs.
For large insert-only tables, it may be beneficial to lower the table's
autovacuum_freeze_min_age so that tuples are eligible to be frozen sooner.
Here we've opted not to zero that for these types of vacuums, since the table
may just be insert-mostly and we may otherwise freeze tuples that are still
destined to be updated or removed in the near future. There was some debate
to what exactly the new scale factor and threshold should default to. For now,
these are set to 0.2 and 1000, respectively. There may be some motivation to
adjust these before the release. Author: Laurenz Albe, Darafei Praliaskouski
Reviewed-by: Alvaro Herrera, Masahiko Sawada, Chris Travers, Andres Freund,
Justin Pryzby Discussion:
https://postgr.es/m/CAC8Q8t%2Bj36G_bLF%3D%2B0iMo6jGNWnLnWb1tujXuJr-%2Bx8ZCCTqoQ%40mail.gmail.com
https://git.postgresql.org/pg/commitdiff/b07642dbcd8d5de05f0ee1dbb72dd6760dd30436

- Attempt to fix unstable regression tests. b07642dbc added code to trigger
autovacuums based on the number of inserts into a table. This seems to have
caused some regression test results to destabilize. I suspect this is due to
autovacuum triggering a vacuum sometime after the test's ANALYZE run and
perhaps reltuples is ending up being set to a slightly different value as a
result. Attempt to resolve this by running a VACUUM ANALYZE on the affected
table instead of just ANALYZE. pg_class.reltuples will still get set to
whatever ANALYZE chooses but we should no longer get the proceeding autovacuum
overriding that. The overhead this adds to each test's runtime seems small
enough not to worry about. I measure 3-4% on stats_ext and can't measure any
change in partition_aggregate. I'm unable to recreate the issue locally, so
this is a bit of a blind fix. Discussion:
https://postgr.es/m/CAApHDvpWmpqYrKwwDQyeDq8dAyK7GMNaxDhrG69CkSuXoEg%2BVg%40mail.gmail.com
https://git.postgresql.org/pg/commitdiff/2dc16efedc767aec38368d215eb7695b87a054b5

Dean Rasheed pushed:

- Prevent functional dependency estimates from exceeding column estimates.
Formerly we applied a functional dependency "a => b with dependency degree f"
using the formula P(a,b) = P(a) * [f + (1-f)*P(b)] This leads to the
possibility that the combined selectivity P(a,b) could exceed P(b), which is
not ideal. The addition of support for IN and OR clauses (commits 8f321bd16c
and ccaa3569f5) would seem to make this more likely, since the user-supplied
values in such clauses are not necessarily compatible with the functional
dependency. Mitigate this by using the formula P(a,b) = f * Min(P(a),
P(b)) + (1-f) * P(a) * P(b) instead, which guarantees that the combined
selectivity is less than each column's individual selectivity. Logically, this
is modifies the part of the formula that accounts for dependent rows to handle
cases where P(a) > P(b), whilst not changing the second term which accounts
for independent rows. Additionally, this refactors the way that functional
dependencies are applied, so now dependencies_clauselist_selectivity()
estimates both the implying clauses and the implied clauses for each
functional dependency (formerly only the implied clauses were estimated), and
now all clauses for each attribute are taken into account (formerly only one
clause for each implied attribute was estimated). This removes the previously
built-in assumption that only equality clauses will be seen, which is no
longer true, and opens up the possibility of applying functional dependencies
to more general clauses. Patch by me, reviewed by Tomas Vondra. Discussion:
https://postgr.es/m/CAEZATCXaNFZyOhR4XXAfkvj1tibRBEjje6ZbXwqWUB_tqbH%3Drw%40mail.gmail.com
Discussion: https://postgr.es/m/20200318002946.6dvblukm3cfmgir2%40development
https://git.postgresql.org/pg/commitdiff/87779aa47463d0fb3b4743a7d5c9534994bf7c98

- Improve the performance and accuracy of numeric sqrt() and ln(). Instead of
using Newton's method to compute numeric square roots, use the Karatsuba
square root algorithm, which performs better for numbers of all sizes. In
practice, this is 3-5 times faster for inputs with just a few digits and up to
around 10 times faster for larger inputs. Also, the new algorithm guarantees
that the final digit of the result is correctly rounded, since it computes an
integer square root with truncation, containing at least 1 extra decimal digit
before rounding. The former algorithm would occasionally round the wrong way
because it rounded both the intermediate and final results. In addition,
arrange for sqrt_var() to explicitly support negative rscale values (rounding
before the decimal point). This allows the argument reduction phase of
ln_var() to be optimised for large inputs, since it only needs to compute
square roots with a few more digits than the final ln() result, rather than
computing all the digits before the decimal point. For very large inputs, this
can be many thousands of times faster. In passing, optimise div_var_fast() in
a couple of places where it was doing unnecessary work. Patch be me, reviewed
by Tom Lane and Tels. Discussion:
https://postgr.es/m/CAEZATCV1A7+jD3P30Zu31KjaxeSEyOn3v9d6tYegpxcq3cQu-g@mail.gmail.com
https://git.postgresql.org/pg/commitdiff/4083f445c0cbda2eacb6b17297f9d555397e5eaa

== Pending Patches ==

Pavel Stěhule sent in another revision of a patch to implement generic type
subscripting.

Kyotaro HORIGUCHI sent in another revision of a patch to fix the WAL-skipping
feature.

Nikita Glukhov sent in another revision of a patch to implement SQL/JSON
functions.

Nikita Glukhov sent in another revision of a patch to implement JSON TABLE.

Daniel Gustafsson sent in a patch to qualify some casts in pg_dump.

Teja Mupparti sent in a patch to fix a bug that caused corruption during WAL
replay.

Thomas Munro sent in another revision of a patch to allow NULL version for
individual collations, and add collation versions for Windows.

Amit Langote sent in two more revisions of a patch to enable adding partitioned
tables to publications.

Peter Eisentraut sent in a patch to add some AppVeyor files.

Kyotaro HORIGUCHI sent in another revision of a patch to make the message at
end-of-recovery less scary.

Robert Haas sent in two more revisions of a patch to implement backup manifests.

Justin Pryzby and Amit Kapila traded patches to add block number to the error
context for vacuum.

Andy Fan sent in four more revisions of a patch to maintain UniqueKey at each
RelOptInfo.

Álvaro Herrera sent in another revision of a patch to implement multiranges.

Fujii Masao sent in another revision of a patch to fix a confusing hint in
recovery_target_action=pause.

Anastasia Lubennikova sent in a patch to add a test for a corner case in b-tree
de-duplication.

Kyotaro HORIGUCHI sent in another revision of a patch to remove page-read
callback from XLogReaderState.

Konstantin Knizhnik sent in another revision of a patch to implement a built-in
connection pooler.

Dilip Kumar sent in a patch to remove the TODO comments for fast-path.

Dmitry Dolgov sent in two more revisions of a patch to implement index skip
scan.

John Naylor sent in another revision of a patch to truncate timestamps on
arbitrary intervals.

Anastasia Lubennikova sent in a patch to add a test to ensure that pg_upgrade
doesn't fail with non-standard ACL.

Ibrar Ahmed sent in another revision of a patch to ensure that COPY FREEZE
actually freezes right.

Etsuro Fujita and Tomáš Vondra traded patches to improve the partition matching
algorithm for partition-wise join.

Tom Lane sent in another revision of a patch to rewrite NOT IN to anti-JOIN in
cases where that's correct.

Pavel Stěhule sent in two more revisions of a patch to implement \gfmt in psql.

James Coleman sent in six more revisions of a patch to implement incremental
sort.

Kirk Jamison sent in another revision of a patch to optimize the dropping of
relation buffers using dlist.

Konstantin Knizhnik sent in a patch to make a small computeRegionDelta
optimization.

John Naylor sent in another revision of a patch to de-TOAST using an iterator.

Konstantin Knizhnik sent in a patch to add some hash join instrumentation.

Pengzhou Tang sent in another revision of a patch to implement parallel grouping
sets.

Dean Rasheed sent in another revision of a patch to improve the computation of
sqrt for NUMERIC.

Fabien COELHO sent in two revisions of a patch to allow line continuations in
pg_hba.conf.

Jeff Davis sent in two revisions of a patch to implement
AllocSetEstimateChunkSpace() and use same to improve the estimate for the size
of a hash entry for hash aggregation.

Konstantin Knizhnik sent in three more revisions of a patch to add GUCs
auto_explain.add_statistics_threshold and auto_explain.suggest_only.

Cary Huang sent in a patch to include sequence relation support in logical
replication.

Zeng Wenjing sent in two more revisions of a patch to implement global temporary
tables.

Masahiko Sawada sent in another revision of a patch to implement an internal key
management system.

Guancheng Luo sent in two revisions of a patch to check the compatibility of
equality operator between partition key's opclass and index column's opclass
when creating unique indexes on partitioned tables.

Dave Sharpe sent in a patch to fix a bug in the FDW infrastructure where
XactCallback is not always called for a successful client ROLLBACK statement.

Gareth Palmer sent in another revision of a patch to implement INSERT ... SET.

Vik Fearing sent in a patch to add tab completion for \gx to psql.

Nathan Bossart sent in another revision of a patch to avoid marking WAL segments
as ready-for-archive too early.

Nikita Glukhov sent in another revision of a patch to improve the ltree syntax.

Michaël Paquier and Fabien COELHO traded patches to pgbench to add \aset to
store results of a combined query.

Peter Eisentraut and John Naylor traded patches to add SQL functions for Unicode
normalization.

Surafel Temesgen sent in another revision of a patch to add conflict handling to
COPY ... FROM.

Justin Pryzby and Aleksey Kondratov traded patches to allow CLUSTER, VACUUM FULL
and REINDEX to change tablespace on the fly.

Álvaro Herrera and Sergei Kornilov traded patches to enable online changes to
primary_conninfo.

Mike Palmiotto sent in another revision of a patch to add and use an auxiliary
process infrastructure.

Ivan Kartyshov sent in another revision of a patch to make async replicas wait
for lsn to be replayed.

Haozhou Wang sent in another revision of a patch to add smgr hooks to extend the
logic of storage management, one use for which would be disk quotas.

Muhammad Usama sent in another revision of a patch to fix transactions involving
multiple postgres foreign servers.

Kyotaro HORIGUCHI sent in another revision of a patch to implement a
shared-memory based stats collector.

Peter Eisentraut sent in another revision of a patch to fix and document INSERT
OVERRIDING USER VALUE behavior.

Asif Rehman sent in another revision of a patch to implement parallel backup.

Fabien COELHO sent in another revision of a patch to pgbench to rework variable
management.

Fabien COELHO sent in a patch to document the fact that psql's FETCH_COUNT does
not work with multi-command queries.

Tomáš Vondra sent in two more revisions of a patch to collect SLRU statistics.

Nikita Glukhov and Tom Lane traded patches to fix some wrong results from
ltree.

Fabien COELHO sent in another revision of a patch to pgbench to refactor init
functions with buffers.

Julien Rouhaud and Fujii Masao traded patches to pass the query string to the
planner, expose BufferUsageAccumDiff, and add planning counters to
pg_stat_statements.

Jeff Davis sent in another revision of a patch to add a MemoryContextCount()
function, add a new statistic for "new space", and eliminate the specialization
of the memory context printing.

Movead Li sent in another revision of a patch to fix a bug that produced wrong
results when get_bit() function was called on a long bytea string.

Sergei Kornilov sent in another revision of a patch to make it possible to
change restore_command with a HUP signal.

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

Ranier Vilela sent in a patch to fix some places where variables are assigned
values that are never used.

Alexander Korotkov sent in another revision of a patch to implement operator
class parameters.

Nikolay Shaplov sent in another revision of a patch to split StdRdOptions into
HeapOptions and ToastOptions.

Andres Freund sent in a patch to fix some infelicities among Catalog
invalidations, catalog scans, and ScanPgRelation().

Ranier Vilela sent in a patch to remove some redundant initializations of
variables.

Peter Geoghegan sent in a patch to consistently truncate non-key suffix columns.

David Rowley sent in a patch to implement telemetry checks for unstable tests.

Julien Rouhaud sent in another revision of a patch to calculate WAL usage.

Matheus de Oliveira sent in another revision of a patch to add support for ON
UPDATE/DELETE actions on ALTER CONSTRAINT.

Tom Lane sent in a patch to ignore concurrent removals in pg_ls_dir_files.

Juan José Santamaría Flecha and Tom Lane traded patches to fix win32 langinfo
uft8 detection.

Browse pgsql-announce by date

  From Date Subject
Next Message Artyom Kartasov 2020-03-30 13:45:00 Query optimization assistant Joe now supports hypothetical indexes
Previous Message Gilles Darold 2020-03-29 09:29:06 pgFormatter 4.3 released