Stamp 9.5.22.
commit : 7aa52945de3206191f8b2b121568d316ac4b234e
author : Tom Lane <[email protected]>
date : Mon, 11 May 2020 17:16:09 -0400
committer: Tom Lane <[email protected]>
date : Mon, 11 May 2020 17:16:09 -0400
M configure
M configure.in
M doc/bug.template
M src/include/pg_config.h.win32
M src/interfaces/libpq/libpq.rc.in
M src/port/win32ver.rc
Translation updates
commit : 7ab65cd968b25519d864e0573dff9bca4431908b
author : Peter Eisentraut <[email protected]>
date : Mon, 11 May 2020 13:31:50 +0200
committer: Peter Eisentraut <[email protected]>
date : Mon, 11 May 2020 13:31:50 +0200
Source-Git-URL: https://git.postgresql.org/git/pgtranslation/messages.git
Source-Git-Hash: 5c769f79a22d341c6ea364d879ce33a16b1154d7
M src/backend/po/de.po
M src/backend/po/fr.po
M src/backend/po/ru.po
M src/bin/pg_dump/po/de.po
M src/bin/pg_dump/po/fr.po
M src/bin/pg_dump/po/ru.po
M src/bin/psql/po/ru.po
M src/bin/scripts/po/de.po
M src/bin/scripts/po/fr.po
M src/bin/scripts/po/ru.po
M src/pl/plpgsql/src/po/ru.po
Release notes for 12.3, 11.8, 10.13, 9.6.18, 9.5.22.
commit : 52d849eb89f9930c5106234d4faf45fd948955cb
author : Tom Lane <[email protected]>
date : Sun, 10 May 2020 15:06:00 -0400
committer: Tom Lane <[email protected]>
date : Sun, 10 May 2020 15:06:00 -0400
M doc/src/sgml/release-9.5.sgml
Prevent archive recovery from scanning non-existent WAL files.
commit : e3f5b148ed326864dfac48b74f89e8d3bb3e4146
author : Fujii Masao <[email protected]>
date : Wed, 8 Apr 2020 00:49:29 +0900
committer: Fujii Masao <[email protected]>
date : Wed, 8 Apr 2020 00:49:29 +0900
Previously when there were multiple timelines listed in the history file
of the recovery target timeline, archive recovery searched all of them,
starting from the newest timeline to the oldest one, to find the segment
to read. That is, archive recovery had to continuously fail scanning
the segment until it reached the timeline that the segment belonged to.
These scans for non-existent segment could be harmful on the recovery
performance especially when archival area was located on the remote
storage and each scan could take a long time.
To address the issue, this commit changes archive recovery so that
it skips scanning the timeline that the segment to read doesn't belong to.
Per discussion, back-patch to all supported versions.
Author: Kyotaro Horiguchi, tweaked a bit by Fujii Masao
Reviewed-by: David Steele, Pavel Suderevsky, Grigory Smolkin
Discussion: https://postgr.es/m/[email protected]
Discussion: https://postgr.es/m/[email protected]
M src/backend/access/transam/xlog.c
pg_restore: Provide file name with one failure message
commit : 4009571695a28302da8bcc0b404238f26c19ad6f
author : Alvaro Herrera <[email protected]>
date : Fri, 8 May 2020 19:38:46 -0400
committer: Alvaro Herrera <[email protected]>
date : Fri, 8 May 2020 19:38:46 -0400
Almost all error messages already include file name where relevant, but
this one had been overlooked. Repair.
Backpatch to 9.5.
Author: Euler Taveira <[email protected]>
Discussion: https://postgr.es/m/CAH503wA_VOrcKL_43p9atRejCDYmOZ8MzfK9S6TJrQqBqNeAXA@mail.gmail.com
Reviewed-by: Álvaro Herrera <[email protected]>
M src/bin/pg_dump/pg_backup_directory.c
Heed lock protocol in DROP OWNED BY
commit : 91d97462c96e07a6885261c9d46554b1c4ce834b
author : Alvaro Herrera <[email protected]>
date : Wed, 6 May 2020 12:29:41 -0400
committer: Alvaro Herrera <[email protected]>
date : Wed, 6 May 2020 12:29:41 -0400
We were acquiring object locks then deleting objects one by one, instead
of acquiring all object locks first, ignoring those that did not exist,
and then deleting all objects together. The latter is the correct
protocol to use, and what this commits changes to code to do. Failing
to follow that leads to "cache lookup failed for relation XYZ" error
reports when DROP OWNED runs concurrently with other DDL -- for example,
a session termination that removes some temp tables.
Author: Álvaro Herrera
Reported-by: Mithun Chicklore Yogendra (Mithun CY)
Reviewed-by: Ahsan Hadi, Tom Lane
Discussion: https://postgr.es/m/CADq3xVZTbzK4ZLKq+dn_vB4QafXXbmMgDP3trY-GuLnib2Ai1w@mail.gmail.com
M src/backend/catalog/dependency.c
M src/backend/catalog/pg_shdepend.c
M src/include/catalog/dependency.h
Handle spaces for Python install location in MSVC scripts
commit : ad53d6efef0ca7ebc3f80531ecd230e5f28d638d
author : Michael Paquier <[email protected]>
date : Wed, 6 May 2020 21:08:42 +0900
committer: Michael Paquier <[email protected]>
date : Wed, 6 May 2020 21:08:42 +0900
Attempting to use an installation path of Python that includes spaces
caused the MSVC builds to fail. This fixes the issue by using the same
quoting method as ad7595b for OpenSSL.
Author: Victor Wagner
Discussion: https://postgr.es/m/[email protected]
Backpatch-through: 9.5
M src/tools/msvc/Mkvcbuild.pm
Get rid of trailing semicolons in C macro definitions.
commit : ad80d3ea27b1aef424d48ae937797ac3196b5e5f
author : Tom Lane <[email protected]>
date : Fri, 1 May 2020 17:28:01 -0400
committer: Tom Lane <[email protected]>
date : Fri, 1 May 2020 17:28:01 -0400
Writing a trailing semicolon in a macro is almost never the right thing,
because you almost always want to write a semicolon after each macro
call instead. (Even if there was some reason to prefer not to, pgindent
would probably make a hash of code formatted that way; so within PG the
rule should basically be "don't do it".) Thus, if we have a semi inside
the macro, the compiler sees "something;;". Much of the time the extra
empty statement is harmless, but it could lead to mysterious syntax
errors at call sites. In perhaps an overabundance of neatnik-ism, let's
run around and get rid of the excess semicolons whereever possible.
The only thing worse than a mysterious syntax error is a mysterious
syntax error that only happens in the back branches; therefore,
backpatch these changes where relevant, which is most of them because
most of these mistakes are old. (The lack of reported problems shows
that this is largely a hypothetical issue, but still, it could bite
us in some future patch.)
John Naylor and Tom Lane
Discussion: https://postgr.es/m/CACPNZCs0qWTqJ2QUSGJ07B7uvAvzMb-KbG2q+oo+J3tsWN5cqw@mail.gmail.com
M contrib/btree_gist/btree_ts.c
M contrib/btree_gist/btree_utils_num.h
M contrib/pg_trgm/trgm.h
M contrib/pgcrypto/crypt-blowfish.c
M src/backend/utils/adt/formatting.c
M src/backend/utils/sort/gen_qsort_tuple.pl
M src/include/access/nbtree.h
M src/port/qsort.c
M src/port/qsort_arg.c
Fix error case for CREATE ROLE ... IN ROLE.
commit : b3824ca221223afedc2976f0577cf58dfa8a9804
author : Andrew Gierth <[email protected]>
date : Sat, 25 Apr 2020 05:10:05 +0100
committer: Andrew Gierth <[email protected]>
date : Sat, 25 Apr 2020 05:10:05 +0100
CreateRole() was passing a Value node, not a RoleSpec node, for the
newly-created role name when adding the role as a member of existing
roles for the IN ROLE syntax.
This mistake went unnoticed because the node in question is used only
for error messages and is not accessed on non-error paths.
In older pg versions (such as 9.5 where this was found), this results
in an "unexpected node type" error in place of the real error. That
node type check was removed at some point, after which the code would
accidentally fail to fail on 64-bit platforms (on which accessing the
Value node as if it were a RoleSpec would be mostly harmless) or give
an "unexpected role type" error on 32-bit platforms.
Fix the code to pass the correct node type, and add an lfirst_node
assertion just in case.
Per report on irc from user m1chelangelo.
Backpatch all the way, because this error has been around for a long
time.
M src/backend/commands/user.c
Update Windows timezone name list to include currently-known zones.
commit : 3cdb45c5498dcf76db374e54b31d8a240c21fa9d
author : Tom Lane <[email protected]>
date : Fri, 24 Apr 2020 17:53:23 -0400
committer: Tom Lane <[email protected]>
date : Fri, 24 Apr 2020 17:53:23 -0400
Thanks to Juan José Santamaría Flecha.
Discussion: https://postgr.es/m/[email protected]
M src/bin/initdb/findtimezone.c
M src/tools/win32tzlist.pl
Improve placement of "display name" comment in win32_tzmap[] entries.
commit : 3f3ab184c642ecdb79975d2ee567a669df5245a8
author : Tom Lane <[email protected]>
date : Fri, 24 Apr 2020 17:21:44 -0400
committer: Tom Lane <[email protected]>
date : Fri, 24 Apr 2020 17:21:44 -0400
Sticking this comment at the end of the last line was a bad idea: it's
not particularly readable, and it tempts pgindent to mess with line
breaks within the comment, which in turn reveals that win32tzlist.pl's
clean_displayname() does the wrong thing to clean up such line breaks.
While that's not hard to fix, there's basically no excuse for this
arrangement to begin with, especially since it makes the table layout
needlessly vary across back branches with different pgindent rules.
Let's just put the comment inside the braces, instead.
This commit just moves and reformats the comments, and updates
win32tzlist.pl to match; there's no actual data change.
Per odd-looking results from Juan José Santamaría Flecha.
Back-patch, since the point is to make win32_tzmap[] look the
same in all supported branches again.
Discussion: https://postgr.es/m/[email protected]
M src/bin/initdb/findtimezone.c
M src/tools/win32tzlist.pl
Update time zone data files to tzdata release 2020a.
commit : 39006ae7a258bd5564492e690b1dc7ad8f90168e
author : Tom Lane <[email protected]>
date : Fri, 24 Apr 2020 10:54:47 -0400
committer: Tom Lane <[email protected]>
date : Fri, 24 Apr 2020 10:54:47 -0400
DST law changes in Morocco and the Canadian Yukon.
Historical corrections for Shanghai.
The America/Godthab zone is renamed to America/Nuuk to reflect
current English usage; however, the old name remains available as a
compatibility link.
M src/timezone/data/tzdata.zi
Remove some unstable parts from new TAP test for archive status check
commit : a4726998d3aa661fba4a3727b2cf1966233478f1
author : Michael Paquier <[email protected]>
date : Fri, 24 Apr 2020 11:34:16 +0900
committer: Michael Paquier <[email protected]>
date : Fri, 24 Apr 2020 11:34:16 +0900
The test is proving to have timing issues when looking at archive status
files on standbys after crash recovery, while other parts of the test
rely on pg_stat_archiver as a wait point to make sure that a given state
of the archiving is reached. The coverage is not heavily impacted by
the removal those extra tests.
Per reports from several buildfarm animals, like crake, piculet,
culicidae and francolin.
Discussion: https://postgr.es/m/[email protected]
Backpatch-through: 9.5
M src/test/recovery/t/020_archive_status.pl
Fix handling of WAL segments ready to be archived during crash recovery
commit : 9eff11653962ce77bd76afe4a5319478fca35b22
author : Michael Paquier <[email protected]>
date : Fri, 24 Apr 2020 08:48:55 +0900
committer: Michael Paquier <[email protected]>
date : Fri, 24 Apr 2020 08:48:55 +0900
78ea8b5 has fixed an issue related to the recycling of WAL segments on
standbys depending on archive_mode. However, it has introduced a
regression with the handling of WAL segments ready to be archived during
crash recovery, causing those files to be recycled without getting
archived.
This commit fixes the regression by tracking in shared memory if a live
cluster is either in crash recovery or archive recovery as the handling
of WAL segments ready to be archived is different in both cases (those
WAL segments should not be removed during crash recovery), and by using
this new shared memory state to decide if a segment can be recycled or
not. Previously, it was not possible to know if a cluster was in crash
recovery or archive recovery as the shared state was able to track only
if recovery was happening or not, leading to the problem.
A set of TAP tests is added to close the gap here, making sure that WAL
segments ready to be archived are correctly handled when a cluster is in
archive or crash recovery with archive_mode set to "on" or "always", for
both standby and primary.
Reported-by: Benoît Lobréau
Author: Jehan-Guillaume de Rorthais
Reviewed-by: Kyotaro Horiguchi, Fujii Masao, Michael Paquier
Discussion: https://postgr.es/m/20200331172229.40ee00dc@firost
Backpatch-through: 9.5
M src/backend/access/transam/xlog.c
M src/backend/access/transam/xlogarchive.c
M src/include/access/xlog.h
A src/test/recovery/t/020_archive_status.pl
docs: land height is "elevation", not "altitude"
commit : 0b1ad96a504d3425582a3563aaea9332b22fe47a
author : Bruce Momjian <[email protected]>
date : Wed, 22 Apr 2020 16:23:19 -0400
committer: Bruce Momjian <[email protected]>
date : Wed, 22 Apr 2020 16:23:19 -0400
See https://mapscaping.com/blogs/geo-candy/what-is-the-difference-between-elevation-relief-and-altitude
No patching of regression tests.
Reported-by: [email protected]
Discussion: https://postgr.es/m/[email protected]
Backpatch-through: 9.5
M doc/src/sgml/advanced.sgml
M doc/src/sgml/ddl.sgml
Fix memory leak in libpq when using sslmode=verify-full
commit : e5e295d5008be7aabe47f803d808aae260ec9ba6
author : Michael Paquier <[email protected]>
date : Wed, 22 Apr 2020 07:28:04 +0900
committer: Michael Paquier <[email protected]>
date : Wed, 22 Apr 2020 07:28:04 +0900
Checking if Subject Alternative Names (SANs) from a certificate match
with the hostname connected to leaked memory after each lookup done.
This is broken since acd08d7 that added support for SANs in SSL
certificates, so backpatch down to 9.5.
Author: Roman Peshkurov
Reviewed-by: Hamid Akhtar, Michael Paquier, David Steele
Discussion: https://postgr.es/m/CALLDf-pZ-E3mjxd5=bnHsDu9zHEOnpgPgdnO84E2RuwMCjjyPw@mail.gmail.com
Backpatch-through: 9.5
M src/interfaces/libpq/fe-secure-openssl.c
Fix possible crash during FATAL exit from reindexing.
commit : 36714f8ca32a0c84d8bafc03278fe0f48b304d9c
author : Tom Lane <[email protected]>
date : Tue, 21 Apr 2020 15:58:43 -0400
committer: Tom Lane <[email protected]>
date : Tue, 21 Apr 2020 15:58:43 -0400
index.c supposed that it could just use a PG_TRY block to clean up the
state associated with an active REINDEX operation. However, that code
doesn't run if we do a FATAL exit --- for example, due to a SIGTERM
shutdown signal --- while the REINDEX is happening. And that state does
get consulted during catalog accesses, which makes it problematic if we
do any catalog accesses during shutdown --- for example, to clean up any
temp tables created in the session.
If this combination of circumstances occurred, we could find ourselves
trying to access already-freed memory. In debug builds that'd fairly
reliably cause an assertion failure. In production we might often
get away with it, but with some bad luck it could cause a core dump.
Another possible bad outcome is an erroneous conclusion that an
index-to-be-accessed is being reindexed; but it looks like that would
be unlikely to have any consequences worse than failing to drop temp
tables right away. (They'd still get dropped by the next session that
uses that temp schema.)
To fix, get rid of the use of PG_TRY here, and instead hook into
the transaction abort mechanisms to clean up reindex state.
Per bug #16378 from Alexander Lakhin. This has been wrong for a
very long time, so back-patch to all supported branches.
Discussion: https://postgr.es/m/[email protected]
M src/backend/access/transam/xact.c
M src/backend/catalog/index.c
M src/include/catalog/index.h
doc: change SGML markup "figure" to "example"
commit : f7b2e04a60a3d7844c5ba92470d22b53b5a9a052
author : Bruce Momjian <[email protected]>
date : Mon, 20 Apr 2020 21:41:12 -0400
committer: Bruce Momjian <[email protected]>
date : Mon, 20 Apr 2020 21:41:12 -0400
Reported-by: Jürgen Purtz
Discussion: https://postgr.es/m/[email protected]
Author: Jürgen Purtz
Backpatch-through: 9.5
M doc/src/sgml/func.sgml
Use a slightly more liberal regex to detect Visual Studio version
commit : 3ca17999f6a3961faa1b60001c01cb7e71513a42
author : Andrew Dunstan <[email protected]>
date : Fri, 17 Apr 2020 14:55:55 -0400
committer: Andrew Dunstan <[email protected]>
date : Fri, 17 Apr 2020 14:55:55 -0400
Apparently in some language versions of Visual Studio nmake outputs some
material after the version number and before the end of the line. This
has been seen in Chinese versions. Therefore, we no longer demand that
the version string comes at the end of a line.
Per complaint from Cuiping Lin.
Backpatch to all live branches.
M src/tools/msvc/VSObjectFactory.pm
Fix cache reference leak in contrib/sepgsql.
commit : 46b1b6379a32a8f7d2d3c8971ee2a8a3586b137b
author : Tom Lane <[email protected]>
date : Thu, 16 Apr 2020 14:45:54 -0400
committer: Tom Lane <[email protected]>
date : Thu, 16 Apr 2020 14:45:54 -0400
fixup_whole_row_references() did the wrong thing with a dropped column,
resulting in a commit-time warning about a cache reference leak.
I (tgl) added a test case exercising this, but back-patched the test
only as far as v10; the patch didn't apply cleanly to 9.6 and it
didn't seem worth the trouble to adapt it. The bug is pretty old
though, so apply the code change all the way back.
Michael Luo, with cosmetic improvements by me
Discussion: https://postgr.es/m/BYAPR08MB5606D1453D7F50E2AF4D2FD29AD80@BYAPR08MB5606.namprd08.prod.outlook.com
M contrib/sepgsql/dml.c
Clear dangling pointer to avoid bogus EXPLAIN printout in a corner case.
commit : 30ce86367e3eeacfadfc748bf33194eb8fd3c1ba
author : Tom Lane <[email protected]>
date : Sat, 11 Apr 2020 12:29:06 -0400
committer: Tom Lane <[email protected]>
date : Sat, 11 Apr 2020 12:29:06 -0400
ExecReScanHashJoin will destroy the join's hash table if it expects
that the inner relation will produce different rows on rescan.
Up to now it's not bothered to clear the additional pointer to that
hash table that exists in the child HashState node. However, it's
possible for the query to terminate without building a fresh hash
table (this happens if the outer relation is found to be empty
during the final rescan). So we can end with a dangling pointer
to a deleted hash table. That was harmless originally, but since
9.0 EXPLAIN ANALYZE has used that pointer to print hash table
statistics. In debug builds this reproducibly results in garbage
statistics. In non-debug builds there's frequently no ill effects,
but in principle one could get wrong EXPLAIN ANALYZE output, or
perhaps even a crash if free() has released the hashtable memory
back to the OS.
To fix, just make sure we clear the additional pointer when destroying
the hash table. In problematic cases, EXPLAIN ANALYZE will then print
no hashtable statistics (reverting to its pre-9.0 behavior). This isn't
ideal, but since the problem manifests only in unusual corner cases,
it's hard to justify taking any risks to do better in the back
branches. A follow-on patch will improve matters in HEAD.
Konstantin Knizhnik and Tom Lane, per diagnosis by Thomas Munro
of a trouble report from Alvaro Herrera.
Discussion: https://postgr.es/m/[email protected]
M src/backend/executor/nodeHashjoin.c
Doc: clarify locking requirements for ALTER TABLE ADD FOREIGN KEY.
commit : 2cab4ad81bcb44ccd6591ed1fb54495c7301b42d
author : Tom Lane <[email protected]>
date : Fri, 10 Apr 2020 13:12:58 -0400
committer: Tom Lane <[email protected]>
date : Fri, 10 Apr 2020 13:12:58 -0400
The docs explained that a SHARE ROW EXCLUSIVE lock is needed on the
referenced table, but failed to say the same about the table being
altered. Since the page says that ACCESS EXCLUSIVE lock is taken
unless otherwise stated, this left readers with the wrong conclusion.
Discussion: https://postgr.es/m/[email protected]
M doc/src/sgml/ref/alter_table.sgml
Doc: sync CREATE GROUP syntax synopsis with CREATE ROLE.
commit : 7b99e46742fc93e0cd8d48b0eec55eca1a7b2790
author : Tom Lane <[email protected]>
date : Fri, 10 Apr 2020 10:44:10 -0400
committer: Tom Lane <[email protected]>
date : Fri, 10 Apr 2020 10:44:10 -0400
CREATE GROUP is an exact alias for CREATE ROLE, and CREATE USER is
almost an exact alias, as can easily be confirmed by checking the
code. So the man page syntax descriptions ought to match up. The
last few additions of role options seem to have forgotten to update
create_group.sgml, though. Fix that, and add a naggy reminder to
create_role.sgml in hopes of not forgetting again.
Discussion: https://postgr.es/m/[email protected]
M doc/src/sgml/ref/create_group.sgml
Fix pg_dump/pg_restore to restore event trigger comments later.
commit : 564c1e6d737d7c575e8af4fc271f497fcff9aecb
author : Tom Lane <[email protected]>
date : Wed, 8 Apr 2020 11:23:40 -0400
committer: Tom Lane <[email protected]>
date : Wed, 8 Apr 2020 11:23:40 -0400
Repair an oversight in commit 8728b2c70: if we're postponing restore
of event triggers to the end, we must also postpone restoring any
comments on them, since of course we cannot create the comments first.
(This opens yet another opportunity for an event trigger to bollix
the restore, but there's no help for that.)
Per bug #16346 from Alexander Lakhin.
Like the previous commit, back-patch to all supported branches.
Hamid Akhtar and Tom Lane
Discussion: https://postgr.es/m/[email protected]
M src/bin/pg_dump/pg_backup_archiver.c
Fix circle_in to accept "(x,y),r" as it's advertised to do.
commit : ebd194ac58f8df3620d17bc5f1824f9833794b98
author : Tom Lane <[email protected]>
date : Tue, 7 Apr 2020 20:50:02 -0400
committer: Tom Lane <[email protected]>
date : Tue, 7 Apr 2020 20:50:02 -0400
Our documentation describes four allowed input syntaxes for circles,
but the regression tests tried only three ... with predictable
consequences. Remarkably, this has been wrong since the circle
datatype was added in 1997, but nobody noticed till now.
David Zhang, with some help from me
Discussion: https://postgr.es/m/[email protected]
M src/backend/utils/adt/geo_ops.c
M src/test/regress/expected/circle.out
M src/test/regress/sql/circle.sql
Adjust bytea get_bit/set_bit to cope with bytea strings > 256MB.
commit : dbb121038c74ba4491afc5a63c48b9e780c0ae12
author : Tom Lane <[email protected]>
date : Tue, 7 Apr 2020 16:30:55 -0400
committer: Tom Lane <[email protected]>
date : Tue, 7 Apr 2020 16:30:55 -0400
Since the existing bit number argument can't exceed INT32_MAX, it's
not possible for these functions to manipulate bits beyond the first
256MB of a bytea value. However, it'd be good if they could do at
least that much, and not fall over entirely for longer bytea values.
Adjust the comparisons to be done in int64 arithmetic so that works.
Also tweak the error reports to show sane values in case of overflow.
Also add some test cases to improve the miserable code coverage
of these functions.
Apply patch to back branches only; HEAD has a better solution
as of commit 26a944cf2.
Extracted from a much larger patch by Movead Li
Discussion: https://postgr.es/m/[email protected]
M src/backend/utils/adt/varlena.c
M src/test/regress/expected/strings.out
M src/test/regress/sql/strings.sql
Stabilize new GIN test case in 9.5 branch.
commit : e82b6e00ac60d0716161352d448660c014e092a7
author : Tom Lane <[email protected]>
date : Mon, 6 Apr 2020 12:29:54 -0400
committer: Tom Lane <[email protected]>
date : Mon, 6 Apr 2020 12:29:54 -0400
In 9.6 and up, gin_test_tbl has autovacuum_enabled = off thanks to
commit f8a1c1d5a. 9.5 lacked that, which allowed autovacuum to
bollix the results of the test case added by commit 8150f7813.
We could fool with disabling seqscan around that test, but making
this branch look more like the later ones seems a better answer.
Per buildfarm member protosciurus. (I'm not very sure why
protosciurus is the only animal to report this so far; but it'd
clearly be a timing-related failure, so it's not astonishing that
only some machines would show it.)
M src/test/regress/expected/gin.out
M src/test/regress/sql/gin.sql
Preserve clustered index after rewrites with ALTER TABLE
commit : 3f77a670241d114eb4b65ad6eed52298d28dcef8
author : Michael Paquier <[email protected]>
date : Mon, 6 Apr 2020 11:06:07 +0900
committer: Michael Paquier <[email protected]>
date : Mon, 6 Apr 2020 11:06:07 +0900
A table rewritten by ALTER TABLE would lose tracking of an index usable
for CLUSTER. This setting is tracked by pg_index.indisclustered and is
controlled by ALTER TABLE, so some extra work was needed to restore it
properly. Note that ALTER TABLE only marks the index that can be used
for clustering, and does not do the actual operation.
Author: Amit Langote, Justin Pryzby
Reviewed-by: Ibrar Ahmed, Michael Paquier
Discussion: https://postgr.es/m/[email protected]
Backpatch-through: 9.5
M src/backend/commands/tablecmds.c
M src/backend/utils/cache/lsyscache.c
M src/include/utils/lsyscache.h
M src/test/regress/expected/alter_table.out
M src/test/regress/sql/alter_table.sql
Use TransactionXmin instead of RecentGlobalXmin in heap_abort_speculative().
commit : a850063ee0bc6c2c703117395a51eb3154e907db
author : Andres Freund <[email protected]>
date : Sun, 5 Apr 2020 17:47:30 -0700
committer: Andres Freund <[email protected]>
date : Sun, 5 Apr 2020 17:47:30 -0700
There's a very low risk that RecentGlobalXmin could be far enough in
the past to be older than relfrozenxid, or even wrapped
around. Luckily the consequences of that having happened wouldn't be
too bad - the page wouldn't be pruned for a while.
Avoid that risk by using TransactionXmin instead. As that's announced
via MyPgXact->xmin, it is protected against wrapping around (see code
comments for details around relfrozenxid).
Author: Andres Freund
Discussion: https://postgr.es/m/[email protected]
Backpatch: 9.5-
M src/backend/access/heap/heapam.c
Save errno across LWLockRelease() calls
commit : 72b2b9c52e3a86ae414fc07acf6db3de0776fc13
author : Peter Eisentraut <[email protected]>
date : Sun, 5 Apr 2020 10:02:00 +0200
committer: Peter Eisentraut <[email protected]>
date : Sun, 5 Apr 2020 10:02:00 +0200
Fixup for "Drop slot's LWLock before returning from SaveSlotToPath()"
Reported-by: Michael Paquier <[email protected]>
M src/backend/replication/slot.c
Fix bugs in gin_fuzzy_search_limit processing.
commit : 8150f7813a08acc1808de97e6abc3c872dc24573
author : Tom Lane <[email protected]>
date : Fri, 3 Apr 2020 13:15:30 -0400
committer: Tom Lane <[email protected]>
date : Fri, 3 Apr 2020 13:15:30 -0400
entryGetItem()'s three code paths each contained bugs associated
with filtering the entries for gin_fuzzy_search_limit.
The posting-tree path failed to advance "advancePast" after having
decided to filter an item. If we ran out of items on the current
page and needed to advance to the next, what would actually happen
is that entryLoadMoreItems() would re-load the same page. Eventually,
the random dropItem() test would accept one of the same items it'd
previously rejected, and we'd move on --- but it could take awhile
with small gin_fuzzy_search_limit. To add insult to injury, this
case would inevitably cause entryLoadMoreItems() to decide it needed
to re-descend from the root, making things even slower.
The posting-list path failed to implement gin_fuzzy_search_limit
filtering at all, so that all entries in the posting list would
be returned.
The bitmap-result path used a "gotitem" variable that it failed to
update in the one place where it'd actually make a difference, ie
at the one "continue" statement. I think this was unreachable in
practice, because if we'd looped around then it shouldn't be the
case that the entries on the new page are before advancePast.
Still, the "gotitem" variable was contributing nothing to either
clarity or correctness, so get rid of it.
Refactor all three loops so that the termination conditions are
more alike and less unreadable.
The code coverage report showed that we had no coverage at all for
the re-descend-from-root code path in entryLoadMoreItems(), which
seems like a very bad thing, so add a test case that exercises it.
We also had exactly no coverage for gin_fuzzy_search_limit, so add a
simplistic test case that at least hits those code paths a little bit.
Back-patch to all supported branches.
Adé Heyward and Tom Lane
Discussion: https://postgr.es/m/CAEknJCdS-dE1Heddptm7ay2xTbSeADbkaQ8bU2AXRCVC2LdtKQ@mail.gmail.com
M src/backend/access/gin/ginget.c
M src/test/regress/expected/gin.out
M src/test/regress/sql/gin.sql
Fix bogus CALLED_AS_TRIGGER() defenses.
commit : 82bc56e63387176809349b559ee224c11671d818
author : Tom Lane <[email protected]>
date : Fri, 3 Apr 2020 11:24:56 -0400
committer: Tom Lane <[email protected]>
date : Fri, 3 Apr 2020 11:24:56 -0400
contrib/lo's lo_manage() thought it could use
trigdata->tg_trigger->tgname in its error message about
not being called as a trigger. That naturally led to a core dump.
unique_key_recheck() figured it could Assert that fcinfo->context
is a TriggerData node in advance of having checked that it's
being called as a trigger. That's harmless in production builds,
and perhaps not that easy to reach in any case, but it's logically
wrong.
The first of these per bug #16340 from William Crowell;
the second from manual inspection of other CALLED_AS_TRIGGER
call sites.
Back-patch the lo.c change to all supported branches, the
other to v10 where the thinko crept in.
Discussion: https://postgr.es/m/[email protected]
M contrib/lo/lo.c
doc: remove unnecessary INNER keyword
commit : d269f858b40fd7dcd0bc63a70d7d340d902afe1e
author : Bruce Momjian <[email protected]>
date : Thu, 2 Apr 2020 17:42:09 -0400
committer: Bruce Momjian <[email protected]>
date : Thu, 2 Apr 2020 17:42:09 -0400
A join that was added in commit 9b2009c4cf that did not use the INNER
keyword but the existing query used it. It was cleaner to remove the
existing INNER keyword.
Reported-by: Peter Eisentraut
Discussion: https://postgr.es/m/[email protected]
Backpatch-through: 9.5
M doc/src/sgml/pgbuffercache.sgml
doc: remove comma, related to commit 92d31085e9
commit : bf09e83dbc8ba8196b10170976fd55aa2182d82b
author : Bruce Momjian <[email protected]>
date : Thu, 2 Apr 2020 17:27:42 -0400
committer: Bruce Momjian <[email protected]>
date : Thu, 2 Apr 2020 17:27:42 -0400
Reported-by: Peter Eisentraut
Discussion: https://postgr.es/m/[email protected]
Backpatch-through: 9.5
M doc/src/sgml/func.sgml
doc: remove mention of bitwise operators as solely type-limited
commit : 116381955900d55e24520014eeeecefce7ac7dd6
author : Bruce Momjian <[email protected]>
date : Tue, 31 Mar 2020 18:44:29 -0400
committer: Bruce Momjian <[email protected]>
date : Tue, 31 Mar 2020 18:44:29 -0400
There are other operators that have limited number data type support, so
just remove the sentence.
Reported-by: Sergei Agalakov
Discussion: https://postgr.es/m/[email protected]
Backpatch-through: 9.5
M doc/src/sgml/func.sgml
doc: clarify hierarchy of objects: global, db, schema, etc.
commit : 7b7b60f411b112df50eb10f84164e5059363a3a2
author : Bruce Momjian <[email protected]>
date : Tue, 31 Mar 2020 18:10:39 -0400
committer: Bruce Momjian <[email protected]>
date : Tue, 31 Mar 2020 18:10:39 -0400
The previous wording was confusing because it wasn't in decreasing order
and had to backtrack. Also clarify role/user wording.
Reported-by: [email protected]
Discussion: https://postgr.es/m/[email protected]
Backpatch-through: 9.5
M doc/src/sgml/ddl.sgml
M doc/src/sgml/manage-ag.sgml
doc: restore wording from recent patch "rolled back to"
commit : a1e42d8cd90292ed4667b1cacfc503a1feca449f
author : Bruce Momjian <[email protected]>
date : Tue, 31 Mar 2020 17:52:48 -0400
committer: Bruce Momjian <[email protected]>
date : Tue, 31 Mar 2020 17:52:48 -0400
Reported-by: Tom Lane
Discussion: https://postgr.es/m/[email protected]
Backpatch-through: 9.5 - 12
M doc/src/sgml/mvcc.sgml
doc: clarify when row-level locks are released
commit : 8a2ad9de402a715686afb1cdcaf622b4ad4f8f4e
author : Bruce Momjian <[email protected]>
date : Tue, 31 Mar 2020 17:27:32 -0400
committer: Bruce Momjian <[email protected]>
date : Tue, 31 Mar 2020 17:27:32 -0400
They are released just like table-level locks. Also clean up wording.
Reported-by: [email protected]
Discussion: https://postgr.es/m/[email protected]
Backpatch-through: 9.5
M doc/src/sgml/mvcc.sgml
doc: add namespace column to pg_buffercache example query
commit : dd9f34ca006f1a18e2a80fbd9ee7efffed9b1e30
author : Bruce Momjian <[email protected]>
date : Tue, 31 Mar 2020 17:16:33 -0400
committer: Bruce Momjian <[email protected]>
date : Tue, 31 Mar 2020 17:16:33 -0400
Without the namespace, the table name could be ambiguous.
Reported-by: [email protected]
Discussion: https://postgr.es/m/[email protected]
Backpatch-through: 9.5
M doc/src/sgml/pgbuffercache.sgml
doc: adjust UPDATE/DELETE's FROM/USING to match SELECT's FROM
commit : a91e8e13261d05a3a64bfa3e439790d6e788f5dd
author : Bruce Momjian <[email protected]>
date : Tue, 31 Mar 2020 16:31:44 -0400
committer: Bruce Momjian <[email protected]>
date : Tue, 31 Mar 2020 16:31:44 -0400
Previously the syntax and wording were unclear.
Reported-by: Alexey Bashtanov
Discussion: https://postgr.es/m/[email protected]
Backpatch-through: 9.5
M doc/src/sgml/ref/delete.sgml
M doc/src/sgml/ref/update.sgml
Back-patch addition of stack overflow and interrupt checks for lquery.
commit : cffa57f52cc4b4cc72fa907385758c335e74e4f8
author : Tom Lane <[email protected]>
date : Tue, 31 Mar 2020 11:37:44 -0400
committer: Tom Lane <[email protected]>
date : Tue, 31 Mar 2020 11:37:44 -0400
Experimentation shows that it's not hard at all to drive the
old implementation of "ltree ~ lquery" match to stack overflow,
so throw in a check_stack_depth() call, as I just did in HEAD.
I wasn't able to make it take a long time, because all the
pathological cases I tried hit stack overflow first; but
I bet there are some others that do take a long time, so add
CHECK_FOR_INTERRUPTS() too.
Discussion: https://postgr.es/m/CAP_rww=waX2Oo6q+MbMSiZ9ktdj6eaJj0cQzNu=Ry2cCDij5fw@mail.gmail.com
M contrib/ltree/lquery_op.c
Be more careful about extracting encoding from locale strings on Windows.
commit : 6dac1e858b12c1fe67fcd72db4476210177e24c1
author : Tom Lane <[email protected]>
date : Mon, 30 Mar 2020 11:14:58 -0400
committer: Tom Lane <[email protected]>
date : Mon, 30 Mar 2020 11:14:58 -0400
GetLocaleInfoEx() can fail on strings that setlocale() was perfectly
happy with. A common way for that to happen is if the locale string
is actually a Unix-style string, say "et_EE.UTF-8". In that case,
what's after the dot is an encoding name, not a Windows codepage number;
blindly treating it as a codepage number led to failure, with a fairly
silly error message. Hence, check to see if what's after the dot is
all digits, and if not, treat it as a literal encoding name rather than
a codepage number. This will do the right thing with many Unix-style
locale strings, and produce a more sensible error message otherwise.
Somewhat independently of that, treat a zero (CP_ACP) result from
GetLocaleInfoEx() as meaning that we must use UTF-8 encoding.
Back-patch to all supported branches.
Juan José Santamaría Flecha
Discussion: https://postgr.es/m/[email protected]
M src/port/chklocale.c
Doc: correct misstatement about ltree label maximum length.
commit : 4bdb3f3915ef45798a15405d2ee2080070c5b05d
author : Tom Lane <[email protected]>
date : Sun, 29 Mar 2020 18:54:19 -0400
committer: Tom Lane <[email protected]>
date : Sun, 29 Mar 2020 18:54:19 -0400
The documentation says that the max length is 255 bytes, but
code inspection says it's actually 255 characters; and relevant
lengths are stored as uint16 so that that works.
M doc/src/sgml/ltree.sgml
Protect against overflow of ltree.numlevel and lquery.numlevel.
commit : 8e1e630d004e1d7dc31949c31137831d6f893359
author : Tom Lane <[email protected]>
date : Sat, 28 Mar 2020 17:09:52 -0400
committer: Tom Lane <[email protected]>
date : Sat, 28 Mar 2020 17:09:52 -0400
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
M contrib/ltree/expected/ltree.out
M contrib/ltree/ltree.h
M contrib/ltree/ltree_io.c
M contrib/ltree/ltree_op.c
M contrib/ltree/sql/ltree.sql
M doc/src/sgml/ltree.sgml
Ensure snapshot is registered within ScanPgRelation().
commit : 820f21a93f0bb92dde9fee5dbc3c68fd9be06579
author : Andres Freund <[email protected]>
date : Sat, 28 Mar 2020 11:52:11 -0700
committer: Andres Freund <[email protected]>
date : Sat, 28 Mar 2020 11:52:11 -0700
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/[email protected]
Backpatch: 9.5-
M src/backend/utils/cache/relcache.c
Ensure that plpgsql cleans up cleanly during parallel-worker exit.
commit : 4bfacc5a441101614744a66322f12f50a0131b65
author : Tom Lane <[email protected]>
date : Thu, 26 Mar 2020 18:06:56 -0400
committer: Tom Lane <[email protected]>
date : Thu, 26 Mar 2020 18:06:56 -0400
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/[email protected]
M src/pl/plpgsql/src/pl_exec.c
Drop slot's LWLock before returning from SaveSlotToPath()
commit : ce28a43ffa89b49584e75d6bb9f8ae03a8e13151
author : Peter Eisentraut <[email protected]>
date : Thu, 26 Mar 2020 11:51:39 +0100
committer: Peter Eisentraut <[email protected]>
date : Thu, 26 Mar 2020 11:51:39 +0100
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 <[email protected]>
Reported-by: Craig Ringer <[email protected]>
Discussion: https://www.postgresql.org/message-id/flat/56a138c5-de61-f553-7e8f-6789296de785%402ndquadrant.com
M src/backend/replication/slot.c
Doc: explain that LIKE et al can be used in ANY (sub-select) etc.
commit : 2af8894c409d0464d4f29449ac39d7d229ccc6ef
author : Tom Lane <[email protected]>
date : Mon, 23 Mar 2020 12:42:16 -0400
committer: Tom Lane <[email protected]>
date : Mon, 23 Mar 2020 12:42:16 -0400
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
M doc/src/sgml/func.sgml
Fix our getopt_long's behavior for a command line argument of just "-".
commit : 5f9eace5db4ef9d020aef44f972cea627b663932
author : Tom Lane <[email protected]>
date : Mon, 23 Mar 2020 11:58:01 -0400
committer: Tom Lane <[email protected]>
date : Mon, 23 Mar 2020 11:58:01 -0400
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/[email protected]
M doc/src/sgml/ref/ecpg-ref.sgml
M src/port/getopt_long.c
Doc: Fix type of some storage parameters in CREATE TABLE page
commit : 87d0f48c78d82e54c5652663f41ef22f9dcff7bb
author : Michael Paquier <[email protected]>
date : Mon, 23 Mar 2020 13:38:35 +0900
committer: Michael Paquier <[email protected]>
date : Mon, 23 Mar 2020 13:38:35 +0900
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
M doc/src/sgml/ref/create_table.sgml
Revert "Skip WAL for new relfilenodes, under wal_level=minimal."
commit : b31e96ba420f049625435591ba7ae3ded89a781d
author : Noah Misch <[email protected]>
date : Sun, 22 Mar 2020 09:24:09 -0700
committer: Noah Misch <[email protected]>
date : Sun, 22 Mar 2020 09:24:09 -0700
This reverts commit cb2fd7eac285b1b0a24eeb2b8ed4456b66c5a09f. Per
numerous buildfarm members, it was incompatible with parallel query, and
a test case assumed LP64. Back-patch to 9.5 (all supported versions).
Discussion: https://postgr.es/m/[email protected]
M doc/src/sgml/config.sgml
M doc/src/sgml/perform.sgml
M src/backend/access/gist/gistbuild.c
M src/backend/access/gist/gistutil.c
M src/backend/access/gist/gistxlog.c
M src/backend/access/heap/heapam.c
M src/backend/access/heap/rewriteheap.c
M src/backend/access/nbtree/nbtsort.c
M src/backend/access/rmgrdesc/gistdesc.c
M src/backend/access/transam/README
M src/backend/access/transam/xact.c
M src/backend/access/transam/xlogutils.c
M src/backend/bootstrap/bootparse.y
M src/backend/catalog/storage.c
M src/backend/commands/cluster.c
M src/backend/commands/copy.c
M src/backend/commands/createas.c
M src/backend/commands/matview.c
M src/backend/commands/tablecmds.c
M src/backend/nodes/copyfuncs.c
M src/backend/nodes/equalfuncs.c
M src/backend/nodes/outfuncs.c
M src/backend/parser/gram.y
M src/backend/parser/parse_utilcmd.c
M src/backend/storage/buffer/bufmgr.c
M src/backend/storage/lmgr/lock.c
M src/backend/storage/smgr/md.c
M src/backend/storage/smgr/smgr.c
M src/backend/utils/cache/relcache.c
M src/backend/utils/misc/guc.c
M src/backend/utils/misc/postgresql.conf.sample
M src/include/access/gist_private.h
M src/include/access/heapam.h
M src/include/access/rewriteheap.h
M src/include/catalog/storage.h
M src/include/nodes/parsenodes.h
M src/include/storage/bufmgr.h
M src/include/storage/lock.h
M src/include/storage/smgr.h
M src/include/utils/rel.h
M src/include/utils/relcache.h
D src/test/recovery/t/018_wal_optimize.pl
M src/test/regress/expected/alter_table.out
M src/test/regress/expected/create_table.out
M src/test/regress/sql/alter_table.sql
M src/test/regress/sql/create_table.sql
Skip WAL for new relfilenodes, under wal_level=minimal.
commit : 9db4b9da2801ed94c8f209c807e654c139dc1d7e
author : Noah Misch <[email protected]>
date : Sat, 21 Mar 2020 09:38:26 -0700
committer: Noah Misch <[email protected]>
date : Sat, 21 Mar 2020 09:38:26 -0700
Until now, only selected bulk operations (e.g. COPY) did this. If a
given relfilenode received both a WAL-skipping COPY and a WAL-logged
operation (e.g. INSERT), recovery could lose tuples from the COPY. See
src/backend/access/transam/README section "Skipping WAL for New
RelFileNode" for the new coding rules. Maintainers of table access
methods should examine that section.
To maintain data durability, just before commit, we choose between an
fsync of the relfilenode and copying its contents to WAL. A new GUC,
wal_skip_threshold, guides that choice. If this change slows a workload
that creates small, permanent relfilenodes under wal_level=minimal, try
adjusting wal_skip_threshold. Users setting a timeout on COMMIT may
need to adjust that timeout, and log_min_duration_statement analysis
will reflect time consumption moving to COMMIT from commands like COPY.
Internally, this requires a reliable determination of whether
RollbackAndReleaseCurrentSubTransaction() would unlink a relation's
current relfilenode. Introduce rd_firstRelfilenodeSubid. Amend the
specification of rd_createSubid such that the field is zero when a new
rel has an old rd_node. Make relcache.c retain entries for certain
dropped relations until end of transaction.
Back-patch to 9.5 (all supported versions). This introduces a new WAL
record type, XLOG_GIST_ASSIGN_LSN, without bumping XLOG_PAGE_MAGIC. As
always, update standby systems before master systems. This changes
sizeof(RelationData) and sizeof(IndexStmt), breaking binary
compatibility for affected extensions. (The most recent commit to
affect the same class of extensions was
089e4d405d0f3b94c74a2c6a54357a84a681754b.)
Kyotaro Horiguchi, reviewed (in earlier, similar versions) by Robert
Haas. Heikki Linnakangas and Michael Paquier implemented earlier
designs that materially clarified the problem. Reviewed, in earlier
designs, by Andrew Dunstan, Andres Freund, Alvaro Herrera, Tom Lane,
Fujii Masao, and Simon Riggs. Reported by Martijn van Oosterhout.
Discussion: https://postgr.es/m/[email protected]
M doc/src/sgml/config.sgml
M doc/src/sgml/perform.sgml
M src/backend/access/gist/gistbuild.c
M src/backend/access/gist/gistutil.c
M src/backend/access/gist/gistxlog.c
M src/backend/access/heap/heapam.c
M src/backend/access/heap/rewriteheap.c
M src/backend/access/nbtree/nbtsort.c
M src/backend/access/rmgrdesc/gistdesc.c
M src/backend/access/transam/README
M src/backend/access/transam/xact.c
M src/backend/access/transam/xlogutils.c
M src/backend/bootstrap/bootparse.y
M src/backend/catalog/storage.c
M src/backend/commands/cluster.c
M src/backend/commands/copy.c
M src/backend/commands/createas.c
M src/backend/commands/matview.c
M src/backend/commands/tablecmds.c
M src/backend/nodes/copyfuncs.c
M src/backend/nodes/equalfuncs.c
M src/backend/nodes/outfuncs.c
M src/backend/parser/gram.y
M src/backend/parser/parse_utilcmd.c
M src/backend/storage/buffer/bufmgr.c
M src/backend/storage/lmgr/lock.c
M src/backend/storage/smgr/md.c
M src/backend/storage/smgr/smgr.c
M src/backend/utils/cache/relcache.c
M src/backend/utils/misc/guc.c
M src/backend/utils/misc/postgresql.conf.sample
M src/include/access/gist_private.h
M src/include/access/heapam.h
M src/include/access/rewriteheap.h
M src/include/catalog/storage.h
M src/include/nodes/parsenodes.h
M src/include/storage/bufmgr.h
M src/include/storage/lock.h
M src/include/storage/smgr.h
M src/include/utils/rel.h
M src/include/utils/relcache.h
A src/test/recovery/t/018_wal_optimize.pl
M src/test/regress/expected/alter_table.out
M src/test/regress/expected/create_table.out
M src/test/regress/sql/alter_table.sql
M src/test/regress/sql/create_table.sql
Back-patch log_newpage_range().
commit : e0dd086414f782d9200ad525a1643a9f57a2b497
author : Noah Misch <[email protected]>
date : Sat, 21 Mar 2020 09:38:33 -0700
committer: Noah Misch <[email protected]>
date : Sat, 21 Mar 2020 09:38:33 -0700
Back-patch a subset of commit 9155580fd5fc2a0cbb23376dfca7cd21f59c2c7b
to v11, v10, 9.6, and 9.5. Include the latest repairs to this function.
Use a new XLOG_FPI_MULTI value instead of reusing XLOG_FPI. That way,
if an older server reads WAL from this function, that server will PANIC
instead of applying just one page of the record. The next commit adds a
call to this function.
Discussion: https://postgr.es/m/[email protected]
M src/backend/access/rmgrdesc/xlogdesc.c
M src/backend/access/transam/xlog.c
M src/backend/access/transam/xloginsert.c
M src/backend/replication/logical/decode.c
M src/include/access/xloginsert.h
M src/include/catalog/pg_control.h
During heap rebuild, lock any TOAST index until end of transaction.
commit : 978da2a95597c97c52b14a27ba29873051ffc59d
author : Noah Misch <[email protected]>
date : Sat, 21 Mar 2020 09:38:26 -0700
committer: Noah Misch <[email protected]>
date : Sat, 21 Mar 2020 09:38:26 -0700
swap_relation_files() calls toast_get_valid_index() to find and lock
this index, just before swapping with the rebuilt TOAST index. The
latter function releases the lock before returning. Potential for
mischief is low; a concurrent session can issue ALTER INDEX ... SET
(fillfactor = ...), which is not alarming. Nonetheless, changing
pg_class.relfilenode without a lock is unconventional. Back-patch to
9.5 (all supported versions), because another fix needs this.
Discussion: https://postgr.es/m/[email protected]
M src/backend/access/heap/tuptoaster.c
M src/backend/commands/cluster.c
Fix cosmetic blemishes involving rd_createSubid.
commit : 96dffcdd5bae39fc6ffdd968a9d24b70ee8495b0
author : Noah Misch <[email protected]>
date : Sat, 21 Mar 2020 09:38:26 -0700
committer: Noah Misch <[email protected]>
date : Sat, 21 Mar 2020 09:38:26 -0700
Remove an obsolete comment from AtEOXact_cleanup(). Restore formatting
of a comment in struct RelationData, mangled by the pgindent run in
commit 9af4159fce6654aa0e081b00d02bca40b978745c. Back-patch to 9.5 (all
supported versions), because another fix stacks on this.
M src/backend/utils/cache/relcache.c
M src/include/utils/rel.h
docs: use alias in WHERE clause of full text search example
commit : 39ceaa275a2ba1397e24278803ca393cc1430050
author : Bruce Momjian <[email protected]>
date : Fri, 20 Mar 2020 20:19:32 -0400
committer: Bruce Momjian <[email protected]>
date : Fri, 20 Mar 2020 20:19:32 -0400
The current doc query specified an alias in the FROM clause and used in
it the target list, but not in the WHERE clause.
Reported-by: [email protected]
Discussion: https://postgr.es/m/[email protected]
Backpatch-through: 9.5
M doc/src/sgml/textsearch.sgml
Turn off deprecated bison warnings under MSVC
commit : 467b408321e4d3d7a753ecd8d651bf036ce9f3b7
author : Andrew Dunstan <[email protected]>
date : Fri, 20 Mar 2020 13:55:15 -0400
committer: Andrew Dunstan <[email protected]>
date : Fri, 20 Mar 2020 13:55:15 -0400
These are disabled by the configure code, so this is just fixing an
inconsistency in the MSVC code.
Backpatch to all live branches.
M src/tools/msvc/pgbison.pl
pg_upgrade: make get_major_server_version() err msg consistent
commit : 2c9864e5160672274c3e94c37cfaee5cab125cbf
author : Bruce Momjian <[email protected]>
date : Thu, 19 Mar 2020 15:20:55 -0400
committer: Bruce Momjian <[email protected]>
date : Thu, 19 Mar 2020 15:20:55 -0400
This patch fixes the error message in get_major_server_version() to be
"could not parse version file", and uses the full file path name, rather
than just the data directory path.
Also, commit 4109bb5de4 added the cause of the failure to the "could
not open" error message, and improved quoting. This patch backpatches
the "could not open" cause to PG 12, where it was first widely used, and
backpatches the quoting fix in that patch to all supported releases.
Reported-by: Tom Lane
Discussion: https://postgr.es/m/[email protected]
Author: Dagfinn Ilmari Mannsåker
Backpatch-through: 9.5
M src/bin/pg_upgrade/server.c
Back-patch src/test/recovery and PostgresNode from 9.6 to 9.5.
commit : 12034da6cc39373fdb378ade133aec71c7730828
author : Noah Misch <[email protected]>
date : Thu, 19 Mar 2020 09:39:26 -0700
committer: Noah Misch <[email protected]>
date : Thu, 19 Mar 2020 09:39:26 -0700
This omits 007_sync_rep.pl, which tests a feature new in 9.6. The only
other change is to substitute "hot_standby" for "replica". A planned
back-patch will use this suite to test its recovery behavior changes.
Identified by Kyotaro Horiguchi, though I did not use his patch.
Discussion: https://postgr.es/m/[email protected]
M src/Makefile.global.in
M src/test/Makefile
A src/test/perl/PostgresNode.pm
A src/test/perl/RecursiveCopy.pm
M src/test/perl/TestLib.pm
A src/test/recovery/.gitignore
A src/test/recovery/Makefile
A src/test/recovery/README
A src/test/recovery/t/001_stream_rep.pl
A src/test/recovery/t/002_archiving.pl
A src/test/recovery/t/003_recovery_targets.pl
A src/test/recovery/t/004_timeline_switch.pl
A src/test/recovery/t/005_replay_delay.pl
A src/test/recovery/t/008_fsm_truncation.pl
A src/test/recovery/t/017_shm.pl
M src/tools/msvc/vcregress.pl
Doc: remove reference to nonexisting GUC from 9.5 release notes.
commit : c2c2e531e7b4810900466feffe13fda30bd0ebd1
author : Tom Lane <[email protected]>
date : Wed, 18 Mar 2020 11:04:48 -0400
committer: Tom Lane <[email protected]>
date : Wed, 18 Mar 2020 11:04:48 -0400
idle_in_transaction_session_timeout doesn't exist before 9.6, so
mentioning it in older branches' release notes is confusing.
Lazy copy-and-paste on my (tgl's) part. Too late to do anything
about 9.4, but we can usefully fix this in 9.5.
Daniel Gustafsson
Discussion: https://postgr.es/m/[email protected]
M doc/src/sgml/release-9.5.sgml
Add missing errcode() in a few ereport calls.
commit : 6bdfe428d3994bfaed814e818fe93ad9635a31d6
author : Amit Kapila <[email protected]>
date : Wed, 18 Mar 2020 10:10:27 +0530
committer: Amit Kapila <[email protected]>
date : Wed, 18 Mar 2020 10:10:27 +0530
This will allow to specifying SQLSTATE error code for the errors in the
missing places.
Reported-by: Sawada Masahiko
Author: Sawada Masahiko
Backpatch-through: 9.5
Discussion: https://postgr.es/m/CA+fd4k6N8EjNvZpM8nme+y+05mz-SM8Z_BgkixzkA34R+ej0Kw@mail.gmail.com
M contrib/adminpack/adminpack.c
M src/backend/storage/page/bufpage.c
Doc: clarify behavior of "anyrange" pseudo-type.
commit : f99363e23102c1dceb83d066e3b16c4688079634
author : Tom Lane <[email protected]>
date : Tue, 17 Mar 2020 15:05:17 -0400
committer: Tom Lane <[email protected]>
date : Tue, 17 Mar 2020 15:05:17 -0400
I noticed that we completely failed to document the restriction
that an "anyrange" result type has to be inferred from an "anyrange"
input. The docs also were less clear than they could be about the
relationship between "anyrange" and "anyarray".
It's been like this all along, so back-patch.
M doc/src/sgml/extend.sgml
Avoid holding a directory FD open across assorted SRF calls.
commit : da254148f4deff3cc5f4a5003e5b3c026c04f4a9
author : Tom Lane <[email protected]>
date : Mon, 16 Mar 2020 21:05:29 -0400
committer: Tom Lane <[email protected]>
date : Mon, 16 Mar 2020 21:05:29 -0400
This extends the fixes made in commit 085b6b667 to other SRFs with the
same bug, namely pg_logdir_ls(), pgrowlocks(), pg_timezone_names(),
pg_ls_dir(), and pg_tablespace_databases().
Also adjust various comments and documentation to warn against
expecting to clean up resources during a ValuePerCall SRF's final
call.
Back-patch to all supported branches, since these functions were
all born broken.
Justin Pryzby, with cosmetic tweaks by me
Discussion: https://postgr.es/m/[email protected]
M contrib/adminpack/adminpack.c
M contrib/pgrowlocks/pgrowlocks.c
M doc/src/sgml/xfunc.sgml
M src/backend/utils/adt/datetime.c
M src/backend/utils/adt/genfile.c
M src/backend/utils/adt/misc.c
M src/backend/utils/fmgr/README
M src/include/funcapi.h
C comment: correct commented bytes of max_cached_tuplebufs
commit : 5c3a70020a9e74a69b3ed0ded0de48bdebbbe8ed
author : Bruce Momjian <[email protected]>
date : Sat, 14 Mar 2020 17:36:54 -0400
committer: Bruce Momjian <[email protected]>
date : Sat, 14 Mar 2020 17:36:54 -0400
The comment said ~8MB, but it is actually ~64MB.
Reported-by: Kuntal Ghosh
Discussion: https://postgr.es/m/CAGz5QC+GGmHdnxp04B6wcLz2Zcd_HU+wCBrsPyOZP62-BJghig@mail.gmail.com
Backpatch-through: 9.5-10
M src/backend/replication/logical/reorderbuffer.c
Restructure polymorphic-type resolution in funcapi.c.
commit : a1ef0f373ea8074ca4da6388396b52d15f48c9fd
author : Tom Lane <[email protected]>
date : Sat, 14 Mar 2020 14:42:22 -0400
committer: Tom Lane <[email protected]>
date : Sat, 14 Mar 2020 14:42:22 -0400
resolve_polymorphic_tupdesc() and resolve_polymorphic_argtypes() failed to
cover the case of having to resolve anyarray given only an anyrange input.
The bug was masked if anyelement was also used (as either input or
output), which probably helps account for our not having noticed.
While looking at this I noticed that resolve_generic_type() would produce
the wrong answer if asked to make that same resolution. ISTM that
resolve_generic_type() is confusingly defined and overly complex, so
rather than fix it, let's just make funcapi.c do the specific lookups
it requires for itself.
With this change, resolve_generic_type() is not used anywhere, so remove
it in HEAD. In the back branches, leave it alone (complete with bug)
just in case any external code is using it.
While we're here, make some other refactoring adjustments in funcapi.c
with an eye to upcoming future expansion of the set of polymorphic types:
* Simplify quick-exit tests by adding an overall have_polymorphic_result
flag. This is about a wash now but will be a win when there are more
flags.
* Reduce duplication of code between resolve_polymorphic_tupdesc() and
resolve_polymorphic_argtypes().
* Don't bother to validate correct matching of anynonarray or anyenum;
the parser should have done that, and even if it didn't, just doing
"return false" here would lead to a very confusing, off-point error
message. (Really, "return false" in these two functions should only
occur if the call_expr isn't supplied or we can't obtain data type
info from it.)
* For the same reason, throw an elog rather than "return false" if
we fail to resolve a polymorphic type.
The bug's been there since we added anyrange, so back-patch to
all supported branches.
Discussion: https://postgr.es/m/[email protected]
M src/backend/utils/fmgr/funcapi.c
M src/test/regress/expected/rangetypes.out
M src/test/regress/sql/rangetypes.sql
Preserve replica identity index across ALTER TABLE rewrite
commit : c15d35041206dbe2fd8f57a18c6227a2312ddf0d
author : Peter Eisentraut <[email protected]>
date : Fri, 13 Mar 2020 11:28:11 +0100
committer: Peter Eisentraut <[email protected]>
date : Fri, 13 Mar 2020 11:28:11 +0100
If an index was explicitly set as replica identity index, this setting
was lost when a table was rewritten by ALTER TABLE. Because this
setting is part of pg_index but actually controlled by ALTER
TABLE (not part of CREATE INDEX, say), we have to do some extra work
to restore it.
Based-on-patch-by: Quan Zongliang <[email protected]>
Reviewed-by: Euler Taveira <[email protected]>
Discussion: https://www.postgresql.org/message-id/flat/[email protected]
M src/backend/commands/tablecmds.c
M src/backend/utils/cache/lsyscache.c
M src/include/utils/lsyscache.h
M src/test/regress/expected/replica_identity.out
M src/test/regress/sql/replica_identity.sql
Fix nextXid tracking bug on standbys (9.5-11 only).
commit : d22ac5378fbd9605dceabe1546f737ee005fb7b1
author : Thomas Munro <[email protected]>
date : Thu, 12 Mar 2020 18:06:54 +1300
committer: Thomas Munro <[email protected]>
date : Thu, 12 Mar 2020 18:06:54 +1300
RecordKnownAssignedTransactionIds() should never move
nextXid backwards. Before this commit, that could happen
if some other code path had advanced it without advancing
latestObservedXid.
One consequence is that a well timed XLOG_CHECKPOINT_ONLINE
could cause hot standby feedback messages to get confused
and report an xmin from a future epoch, potentially allowing
vacuum to run too soon on the primary.
Repair, by making sure RecordKnownAssignedTransactionIds()
can only move nextXid forwards.
In release 12 and master, this was already done by commit
2fc7af5e, which consolidated similar code and straightened
out this bug. Back-patch to supported releases before that.
Author: Eka Palamadai <[email protected]>
Discussion: https://postgr.es/m/[email protected]
M src/backend/storage/ipc/procarray.c
Fix pg_dump/pg_restore to restore event triggers later.
commit : 0b02476442d56818f9f055b6fbce3a9b83e9b758
author : Tom Lane <[email protected]>
date : Mon, 9 Mar 2020 14:58:11 -0400
committer: Tom Lane <[email protected]>
date : Mon, 9 Mar 2020 14:58:11 -0400
Previously, event triggers were restored just after regular triggers
(and FK constraints, which are basically triggers). This is risky
since an event trigger, once installed, could interfere with subsequent
restore commands. Worse, because event triggers don't have any
particular dependencies on any post-data objects, a parallel restore
would consider them eligible to be restored the moment the post-data
phase starts, allowing them to also interfere with restoration of a
whole bunch of objects that would have been restored before them in
a serial restore. There's no way to completely remove the risk of a
misguided event trigger breaking the restore, since if nothing else
it could break other event triggers. But we can certainly push them
to later in the process to minimize the hazard.
To fix, tweak the RestorePass mechanism introduced by commit 3eb9a5e7c
so that event triggers are handled as part of the post-ACL processing
pass (renaming the "REFRESH" pass to "POST_ACL" to reflect its more
general use). This will cause them to restore after everything except
matview refreshes, which seems OK since matview refreshes really ought
to run in the post-restore state of the database. In a parallel
restore, event triggers and matview refreshes might be intermixed,
but that seems all right as well.
Also update the code and comments in pg_dump_sort.c so that its idea
of how things are sorted agrees with what actually happens due to
the RestorePass mechanism. This is mostly cosmetic: it'll affect the
order of objects in a dump's TOC, but not the actual restore order.
But not changing that would be quite confusing to somebody reading
the code.
Back-patch to all supported branches.
Fabrízio de Royes Mello, tweaked a bit by me
Discussion: https://postgr.es/m/CAFcNs+ow1hmFox8P--3GSdtwz-S3Binb6ZmoP6Vk+Xg=K6eZNA@mail.gmail.com
M src/bin/pg_dump/pg_backup_archiver.c
M src/bin/pg_dump/pg_backup_archiver.h
M src/bin/pg_dump/pg_dump_sort.c
Fix bug that causes to report waiting in PS display twice, in hot standby.
commit : c9a47b81ed082d89d05570d12abfecd3e26ccf41
author : Fujii Masao <[email protected]>
date : Tue, 10 Mar 2020 00:14:43 +0900
committer: Fujii Masao <[email protected]>
date : Tue, 10 Mar 2020 00:14:43 +0900
Previously "waiting" could appear twice via PS in case of lock conflict
in hot standby mode. Specifically this issue happend when the delay
in WAL application determined by max_standby_archive_delay and
max_standby_streaming_delay had passed but it took more than 500 msec
to cancel all the conflicting transactions. Especially we can observe this
easily by setting those delay parameters to -1.
The cause of this issue was that WaitOnLock() and
ResolveRecoveryConflictWithVirtualXIDs() added "waiting" to
the process title in that case. This commit prevents
ResolveRecoveryConflictWithVirtualXIDs() from reporting waiting
in case of lock conflict, to fix the bug.
Back-patch to all back branches.
Author: Masahiko Sawada
Reviewed-by: Fujii Masao
Discussion: https://postgr.es/m/CA+fd4k4mXWTwfQLS3RPwGr4xnfAEs1ysFfgYHvmmoUgv6Zxvmg@mail.gmail.com
M src/backend/storage/ipc/standby.c
Avoid assertion failure with targeted recovery in standby mode.
commit : 74d32ef8d9163860fa23e8c0493ee765ff4f2c2b
author : Fujii Masao <[email protected]>
date : Mon, 9 Mar 2020 15:31:31 +0900
committer: Fujii Masao <[email protected]>
date : Mon, 9 Mar 2020 15:31:31 +0900
At the end of recovery, standby mode is turned off to re-fetch the last
valid record from archive or pg_wal. Previously, if recovery target was
reached and standby mode was turned off while the current WAL source
was stream, recovery could try to retrieve WAL file containing the last
valid record unexpectedly from stream even though not in standby mode.
This caused an assertion failure. That is, the assertion test confirms that
WAL file should not be retrieved from stream if standby mode is not true.
This commit moves back the current WAL source to archive if it's stream
even though not in standby mode, to avoid that assertion failure.
This issue doesn't cause the server to crash when built with assertion
disabled. In this case, the attempt to retrieve WAL file from stream not
in standby mode just fails. And then recovery tries to retrieve WAL file
from archive or pg_wal.
Back-patch to all supported branches.
Author: Kyotaro Horiguchi
Reviewed-by: Fujii Masao
Discussion: https://postgr.es/m/[email protected]
M src/backend/access/transam/xlog.c
Fix the name of the first WAL segment file, in docs.
commit : d013c0bf9a5f5fe4ce9077a2a83a3807c494bcc6
author : Fujii Masao <[email protected]>
date : Tue, 3 Mar 2020 12:22:04 +0900
committer: Fujii Masao <[email protected]>
date : Tue, 3 Mar 2020 12:22:04 +0900
Previously the documentation explains that WAL segment files
start at 000000010000000000000000. But the first WAL segment file
that initdb creates is 000000010000000000000001 not
000000010000000000000000. This change was caused by old
commit 8c843fff2d, but the documentation had not been updated
a long time.
Back-patch to all supported branches.
Author: Fujii Masao
Reviewed-by: David Zhang
Discussion: https://postgr.es/m/CAHGQGwHOmGe2OqGOmp8cOfNVDivq7dbV74L5nUGr+3eVd2CU2Q@mail.gmail.com
M doc/src/sgml/wal.sgml
createdb: Fix quoting of --encoding, --lc-ctype and --lc-collate
commit : 49300e4cf2da9988eb5caa94f18779cfa72ec698
author : Michael Paquier <[email protected]>
date : Thu, 27 Feb 2020 11:21:28 +0900
committer: Michael Paquier <[email protected]>
date : Thu, 27 Feb 2020 11:21:28 +0900
The original coding failed to properly quote those arguments, leading to
failures when using quotes in the values used. As the quoting can be
encoding-sensitive, the connection to the backend needs to be taken
before applying the correct quoting.
Author: Michael Paquier
Reviewed-by: Daniel Gustafsson
Discussion: https://postgr.es/m/[email protected]
Backpatch-through: 9.5
M src/bin/scripts/createdb.c
Fix confusion about event trigger vs. plain function in plpgsql.
commit : bbefb11541890d9add4b3b1ab2c53b26f4fc386b
author : Tom Lane <[email protected]>
date : Wed, 19 Feb 2020 14:44:58 -0500
committer: Tom Lane <[email protected]>
date : Wed, 19 Feb 2020 14:44:58 -0500
The function hash table keys made by compute_function_hashkey() failed
to distinguish event-trigger call context from regular call context.
This meant that once we'd successfully made a hash entry for an event
trigger (either by validation, or by normal use as an event trigger),
an attempt to call the trigger function as a plain function would
find this hash entry and thereby bypass the you-can't-do-that check in
do_compile(). Thus we'd attempt to execute the function, leading to
strange errors or even crashes, depending on function contents and
server version.
To fix, add an isEventTrigger field to PLpgSQL_func_hashkey,
paralleling the longstanding infrastructure for regular triggers.
This fits into what had been pad space, so there's no risk of an ABI
break, even assuming that any third-party code is looking at these
hash keys. (I considered replacing isTrigger with a PLpgSQL_trigtype
enum field, but felt that that carried some API/ABI risk. Maybe we
should change it in HEAD though.)
Per bug #16266 from Alexander Lakhin. This has been broken since
event triggers were invented, so back-patch to all supported branches.
Discussion: https://postgr.es/m/[email protected]
M src/pl/plpgsql/src/pl_comp.c
M src/pl/plpgsql/src/plpgsql.h
M src/test/regress/expected/event_trigger.out
M src/test/regress/sql/event_trigger.sql
Fix mesurement of elapsed time during truncating heap in VACUUM.
commit : 4a3f164b74f56e91c3528e74166a1d45d6176f4d
author : Fujii Masao <[email protected]>
date : Wed, 19 Feb 2020 20:37:26 +0900
committer: Fujii Masao <[email protected]>
date : Wed, 19 Feb 2020 20:37:26 +0900
VACUUM may truncate heap in several batches. The activity report
is logged for each batch, and contains the number of pages in the table
before and after the truncation, and also the elapsed time during
the truncation. Previously the elapsed time reported in each batch was
the total elapsed time since starting the truncation until finishing
each batch. For example, if the truncation was processed dividing into
three batches, the second batch reported the accumulated time elapsed
during both first and second batches. This is strange and confusing
because the number of pages in the table reported together is not
total. Instead, each batch should report the time elapsed during
only that batch.
The cause of this issue was that the resource usage snapshot was
initialized only at the beginning of the truncation and was never
reset later. This commit fixes the issue by changing VACUUM so that
the resource usage snapshot is reset at each batch.
Back-patch to all supported branches.
Reported-by: Tatsuhito Kasahara
Author: Tatsuhito Kasahara
Reviewed-by: Masahiko Sawada, Fujii Masao
Discussion: https://postgr.es/m/CAP0=ZVJsf=NvQuy+QXQZ7B=ZVLoDV_JzsVC1FRsF1G18i3zMGg@mail.gmail.com
M src/backend/commands/vacuumlazy.c
Stop demanding that top xact must be seen before subxact in decoding.
commit : 05555f7aaa08a3b795265c99ac98e685aa8b4771
author : Amit Kapila <[email protected]>
date : Wed, 19 Feb 2020 08:59:18 +0530
committer: Amit Kapila <[email protected]>
date : Wed, 19 Feb 2020 08:59:18 +0530
Manifested as
ERROR: subtransaction logged without previous top-level txn record
this check forbids legit behaviours like
- First xl_xact_assignment record is beyond reading, i.e. earlier
restart_lsn.
- After restart_lsn there is some change of a subxact.
- After that, there is second xl_xact_assignment (for another subxact)
revealing the relationship between top and first subxact.
Such a transaction won't be streamed anyway because we hadn't seen it in
full. Saying for sure whether xact of some record encountered after
the snapshot was deserialized can be streamed or not requires to know
whether it wrote something before deserialization point --if yes, it
hasn't been seen in full and can't be decoded. Snapshot doesn't have such
info, so there is no easy way to relax the check.
Reported-by: Hsu, John
Diagnosed-by: Arseny Sher
Author: Arseny Sher, Amit Kapila
Reviewed-by: Amit Kapila, Dilip Kumar
Backpatch-through: 9.5
Discussion: https://postgr.es/m/[email protected]
M contrib/test_decoding/Makefile
A contrib/test_decoding/expected/subxact_without_top.out
A contrib/test_decoding/specs/subxact_without_top.spec
M src/backend/replication/logical/reorderbuffer.c
Teach pg_dump to dump comments on RLS policy objects.
commit : d9ec8d1d7dc2bfaa7ae001c4319f6988a83dd486
author : Tom Lane <[email protected]>
date : Mon, 17 Feb 2020 18:40:02 -0500
committer: Tom Lane <[email protected]>
date : Mon, 17 Feb 2020 18:40:02 -0500
This was unaccountably omitted in the original RLS patch.
The SQL syntax is basically the same as for comments on triggers,
so crib code from dumpTrigger().
Per report from Marc Munro. Back-patch to all supported branches.
Discussion: https://postgr.es/m/[email protected]
M src/bin/pg_dump/pg_dump.c
Doc: fix old oversights in GRANT/REVOKE documentation.
commit : 2b9d4ec1d3c0da473232a9c1b065b976e3a2d13e
author : Tom Lane <[email protected]>
date : Wed, 12 Feb 2020 14:13:13 -0500
committer: Tom Lane <[email protected]>
date : Wed, 12 Feb 2020 14:13:13 -0500
The GRANTED BY clause in GRANT/REVOKE ROLE has been there since 2005
but was never documented. I'm not sure now whether that was just an
oversight or was intentional (given the limited capability of the
option). But seeing that pg_dumpall does emit code that uses this
option, it seems like not documenting it at all is a bad idea.
Also, when we upgraded the syntax to allow CURRENT_USER/SESSION_USER
as the privilege recipient, the role form of GRANT was incorrectly
not modified to show that, and REVOKE's docs weren't touched at all.
Although I'm not that excited about GRANTED BY, the other oversight
seems serious enough to justify a back-patch.
Discussion: https://postgr.es/m/[email protected]
M doc/src/sgml/ref/grant.sgml
M doc/src/sgml/ref/revoke.sgml
Document the pg_upgrade -j/--jobs option as taking an argument
commit : 221c6baaff08802c18e35c648658c4e13d1b0e0a
author : Peter Eisentraut <[email protected]>
date : Tue, 11 Feb 2020 23:47:36 +0100
committer: Peter Eisentraut <[email protected]>
date : Tue, 11 Feb 2020 23:47:36 +0100
M doc/src/sgml/ref/pgupgrade.sgml
M src/bin/pg_upgrade/option.c