Peter Eisentraut [Sun, 9 Jul 2023 08:02:15 +0000 (10:02 +0200)]
doc: Use proper markup for emphasis
Peter Eisentraut [Sun, 9 Jul 2023 07:46:24 +0000 (09:46 +0200)]
doc: Move DEFAULT parameter on COPY reference page
The DEFAULT parameter seems most similar to the NULL parameter, so
move it next to it, instead of having it at the end of the parameter
list because it was the last one added.
David Rowley [Sun, 9 Jul 2023 04:14:47 +0000 (16:14 +1200)]
Doc: update old reference to "result cache"
During the PostgreSQL 14 cycle, the Memoize executor node was briefly
called "Result Cache" until it was renamed in
83f4fcc65. That commit
missed one reference.
Reported-by: Paul A Jungwirth
Packpatch-through: 14, where Memoize was added
Discussion: https://postgr.es/m/CA+renyX=40YXhsfPTzn13oNOPO3TJ12CK9GX-2P2pvnQiScefA@mail.gmail.com
Andrew Dunstan [Sat, 8 Jul 2023 16:34:25 +0000 (12:34 -0400)]
Fix tmpdir issues with commit
e213de8e78
Commit
e213de8e78 fixed a problem with path lengths to a tempdir on
Windows, but caused problems on at least some Unix systems where the
system tempdir is on a different file system. To work around this, only
used the system temdir for the destination of pg_replslot on Windows,
and otherwise restore the old behaviour.
Backpatch to relase 14 like the previous patch.
Problem exposed by a myriad of buildfarm animals.
Andrew Dunstan [Sat, 8 Jul 2023 15:21:58 +0000 (11:21 -0400)]
Use shorter location for pg_replslot in pg_basebackup test
The symlink to a longer location tripped up some Windows limit on
buildfarm animal fairywren when running with meson, which uses slightly
longer paths.
Backpatch to all live branches to keep the script in sync.
Peter Eisentraut [Sat, 8 Jul 2023 15:24:41 +0000 (17:24 +0200)]
Fix Perl warning
Use of uninitialized value $content in concatenation (.) or string
Peter Eisentraut [Sat, 8 Jul 2023 13:50:35 +0000 (15:50 +0200)]
Make some indentation in gram.y consistent
Reviewed-by: Amit Langote
Discussion: https://www.postgresql.org/message-id/flat/CA+HiwqE4XTdfb1nW=Ojoy_tQSRhYt-q_kb6i5d4xcKyrLC1Nbg@mail.gmail.com
Nathan Bossart [Fri, 7 Jul 2023 18:25:23 +0000 (11:25 -0700)]
Revert MAINTAIN privilege and pg_maintain predefined role.
This reverts the following commits:
4dbdb82513,
c2122aae63,
5b1a879943,
9e1e9d6560,
ff9618e82a,
60684dd834,
4441fc704d,
and
b5d6382496. A role with the MAINTAIN privilege may be able to
use search_path tricks to escalate privileges to the table owner.
Unfortunately, it is too late in the v16 development cycle to apply
the proposed fix, i.e., restricting search_path when running
maintenance commands.
Bumps catversion.
Reviewed-by: Jeff Davis
Discussion: https://postgr.es/m/E1q7j7Y-000z1H-Hr%40gemulon.postgresql.org
Backpatch-through: 16
Tomas Vondra [Fri, 7 Jul 2023 17:04:32 +0000 (19:04 +0200)]
Document relaxed HOT for summarizing indexes
Commit
19d8e2308b allowed a weaker check for HOT with summarizing
indexes, but it did not update README.HOT. So do that now.
Patch by Matthias van de Meent, minor changes by me. Backpatch to 16,
where the optimization was introduced.
Author: Matthias van de Meent
Reviewed-by: Tomas Vondra
Backpatch-through: 16
Discussion: https://postgr.es/m/CAEze2WiEOm8V+c9kUeYp2BPhbEc5s473fUf51xNeqvSFGv44Ew@mail.gmail.com
Andres Freund [Thu, 6 Jul 2023 15:34:17 +0000 (08:34 -0700)]
Fix type of iterator variable in SH_START_ITERATE
Also add comment to make the reasoning behind the Assert() more explicit (per
Tom).
Reported-by: Ranier Vilela
Discussion: https://postgr.es/m/CAEudQAocXNJ6s1VLz+hMamLAQAiewRoW17OJ6-+9GACKfj6iPQ@mail.gmail.com
Backpatch: 11-
Andrew Dunstan [Thu, 6 Jul 2023 16:27:40 +0000 (12:27 -0400)]
Skip pg_baseback long filename test if path too long on Windows
On Windows, it's sometimes difficult to create a file with a path longer
than 255 chars, and if it can be created it might not be seen by the
archiver. This can be triggered by the test for tar backups with
filenames greater than 100 bytes. So we skip that test if the path would
exceed 255.
Backpatch to all live branches.
Reviewed by Daniel Gustafsson
Discussion: https://postgr.es/m/
666ac55b-3400-fb2c-2cea-
0281bf36a53c@dunslane.net
Heikki Linnakangas [Thu, 6 Jul 2023 14:25:29 +0000 (17:25 +0300)]
WAL-log the creation of the init fork of unlogged indexes.
We create a file, so we better WAL-log it. In practice, all the
built-in index AMs and all extensions that I'm aware of write a
metapage to the init fork, which is WAL-logged, and replay of the
metapage implicitly creates the fork too. But if ambuildempty() didn't
write any page, we would miss it.
This can be seen with dummy_index_am. Set up replication, create a
'dummy_index_am' index on an unlogged table, and look at the files
created in the replica: the init fork is not created on the
replica. Dummy_index_am doesn't do anything with the relation files,
however, so it doesn't lead to any user-visible errors.
Backpatch to all supported versions.
Reviewed-by: Robert Haas
Discussion: https://www.postgresql.org/message-id/
6e5bbc08-cdfc-b2b3-9e23-
1a914b9850a9%40iki.fi
Amit Kapila [Thu, 6 Jul 2023 03:11:30 +0000 (08:41 +0530)]
Revert the commits related to allowing page lock to conflict among parallel group members.
This commit reverts the work done by commits
3ba59ccc89 and
72e78d831a.
Those commits were incorrect in asserting that we never acquire any other
heavy-weight lock after acquring page lock other than relation extension
lock. We can acquire a lock on catalogs while doing catalog look up after
acquring page lock.
This won't impact any existing feature but we need to think some other way
to achieve this before parallelizing other write operations or even
improving the parallelism in vacuum (like allowing multiple workers
for an index).
Reported-by: Jaime Casanova
Author: Amit Kapila
Backpatch-through: 13
Discussion: https://postgr.es/m/CAJKUy5jffnRKNvRHKQ0LynRb0RJC-o4P8Ku3x9vGAVLwDBWumQ@mail.gmail.com
Heikki Linnakangas [Wed, 5 Jul 2023 10:13:13 +0000 (13:13 +0300)]
Fix leak of LLVM "fatal-on-oom" section counter.
llvm_release_context() called llvm_enter_fatal_on_oom(), but was missing
the corresponding llvm_leave_fatal_on_oom() call. As a result, if JIT was
used at all, we were almost always in the "fatal-on-oom" state.
It only makes a difference if you use an extension written in C++, and
run out of memory in a C++ 'new' call. In that case, you would get a
PostgreSQL FATAL error, instead of the default behavior of throwing a
C++ exception.
Back-patch to all supported versions.
Reviewed-by: Daniel Gustafsson
Discussion: https://www.postgresql.org/message-id/
54b78cca-bc84-dad8-4a7e-
5b56f764fab5@iki.fi
Masahiko Sawada [Wed, 5 Jul 2023 05:49:58 +0000 (14:49 +0900)]
pgstat: fix subscription stats entry leak.
Commit
7b64e4b3 taught DropSubscription() to drop stats entry of
subscription that is not associated with a replication slot for apply
worker at DROP SUBSCRIPTION but missed covering the case where the
subscription is not associated with replication slots for both apply
worker and tablesync worker.
Also add a test to verify that the stats for slot-less subscription is
removed at DROP SUBSCRIPTION time.
Backpatch down to 15.
Author: Masahiko Sawada
Reviewed-by: Nathan Bossart, Hayato Kuroda, Melih Mutlu, Amit Kapila
Discussion: https://postgr.es/m/CAD21AoB71zkP7uPT7JDPsZcvp0749ExEQnOJxeNKPDFisHar+w@mail.gmail.com
Backpatch-through: 15
Daniel Gustafsson [Tue, 4 Jul 2023 15:36:13 +0000 (17:36 +0200)]
Fix assertion failure in snapshot building
Clear any potential stale next_phase_at value from the snapshot
builder which otherwise may trip an assertion check ensuring
that there is no next_phase_at value.
This can be reproduced by running 80 concurrent sessions like
the below where $c is a loop counter (assumes there has been
1..$c databases created) :
echo "
CREATE TABLE replication_example(id SERIAL PRIMARY KEY,
somedata int,
text varchar(120));
SELECT 'init' FROM
pg_create_logical_replication_slot('regression_slot_$c',
'test_decoding');
SELECT data FROM
pg_logical_slot_get_changes('regression_slot_$c', NULL,
NULL, 'include-xids', '0',
'skip-empty-xacts', '1');
" | psql -d regress_$c >>psql.log &
Backpatch down to v16.
Bug: #17695
Author: Masahiko Sawada
Reviewed-by: Alexander Lakhin
Reported-by: bowenshi
Discussion: https://postgr.es/m/17695-6be9277c9295985f@postgresql.org
Backpatch-through: v16
Heikki Linnakangas [Tue, 4 Jul 2023 14:57:03 +0000 (17:57 +0300)]
Ensure that creation of an empty relfile is fsync'd at checkpoint.
If you create a table and don't insert any data into it, the relation file
is never fsync'd. You don't lose data, because an empty table doesn't have
any data to begin with, but if you crash and lose the file, subsequent
operations on the table will fail with "could not open file" error.
To fix, register an fsync request in mdcreate(), like we do for mdwrite().
Per discussion, we probably should also fsync the containing directory
after creating a new file. But that's a separate and much wider issue.
Backpatch to all supported versions.
Reviewed-by: Andres Freund, Thomas Munro
Discussion: https://www.postgresql.org/message-id/
d47d8122-415e-425c-d0a2-
e0160829702d%40iki.fi
Thomas Munro [Tue, 4 Jul 2023 03:16:34 +0000 (15:16 +1200)]
Re-bin segment when memory pages are freed.
It's OK to be lazy about re-binning memory segments when allocating,
because that can only leave segments in a bin that's too high. We'll
search higher bins if necessary while allocating next time, and
also eventually re-bin, so no memory can become unreachable that way.
However, when freeing memory, the largest contiguous range of free pages
might go up, so we should re-bin eagerly to make sure we don't leave the
segment in a bin that is too low for get_best_segment() to find.
The re-binning code is moved into a function of its own, so it can be
called whenever free pages are returned to the segment's free page map.
Back-patch to all supported releases.
Author: Dongming Liu
Reviewed-by: Robert Haas (earlier version)
Reviewed-by: Thomas Munro
Discussion: https://postgr.es/m/CAL1p7e8LzB2LSeAXo2pXCW4%2BRya9s0sJ3G_ReKOU%3DAjSUWjHWQ%40mail.gmail.com
Thomas Munro [Mon, 3 Jul 2023 04:20:01 +0000 (16:20 +1200)]
Fix race in SSI interaction with gin fast path.
The ginfast.c code previously checked for conflicts in before locking
the relevant buffer, leaving a window where a RW conflict could be
missed. Re-order.
There was also a place where buffer ID and block number were confused
while trying to predicate-lock a page, noted by visual inspection.
Back-patch to all supported releases. Fixes one more problem discovered
with the reproducer from bug #17949, in this case when Dmitry tried
other index types.
Reported-by: Artem Anisimov
Reported-by: Dmitry Dolgov <[email protected]>
Reviewed-by: Heikki Linnakangas
Discussion: https://postgr.es/m/17949-
a0f17035294a55e2%40postgresql.org
Thomas Munro [Mon, 3 Jul 2023 04:18:20 +0000 (16:18 +1200)]
Fix race in SSI interaction with bitmap heap scan.
When performing a bitmap heap scan, we don't want to miss concurrent
writes that occurred after we observed the heap's rs_nblocks, but before
we took predicate locks on index pages. Therefore, we can't skip
fetching any heap tuples that are referenced by the index, because we
need to test them all with CheckForSerializableConflictOut(). The
old optimization that would ignore any references to blocks >=
rs_nblocks gets in the way of that requirement, because it means that
concurrent writes in that window are ignored.
Removing that optimization shouldn't affect correctness at any isolation
level, because any new tuples shouldn't be visible to an MVCC snapshot.
There also shouldn't be any error-causing references to heap blocks past
the end, because we should have held at least an AccessShareLock on the
table before the index scan. It can't get smaller while our transaction
is running. For now, though, we'll keep the optimization at lower
levels to avoid making unnecessary changes in a bug fix.
Back-patch to all supported releases. In release 11, the code is in a
different place but not fundamentally different. Fixes one aspect of
bug #17949.
Reported-by: Artem Anisimov
Reviewed-by: Dmitry Dolgov <[email protected]>
Reviewed-by: Heikki Linnakangas
Discussion: https://postgr.es/m/17949-
a0f17035294a55e2%40postgresql.org
Thomas Munro [Mon, 3 Jul 2023 04:16:27 +0000 (16:16 +1200)]
Fix race in SSI interaction with empty btrees.
When predicate-locking btrees, we have a special case for completely
empty btrees, since there is no page to lock. This was racy, because,
without buffer lock held, a matching key could be inserted between the
_bt_search() and the PredicateLockRelation() calls.
Fix, by rechecking _bt_search() after taking the relation-level SIREAD
lock, if using SERIALIZABLE isolation and an empty btree is discovered.
Back-patch to all supported releases. Fixes one aspect of bug #17949.
Reported-by: Artem Anisimov
Reviewed-by: Dmitry Dolgov <[email protected]>
Reviewed-by: Heikki Linnakangas
Discussion: https://postgr.es/m/17949-
a0f17035294a55e2%40postgresql.org
Tomas Vondra [Mon, 3 Jul 2023 16:16:58 +0000 (18:16 +0200)]
Remove expensive test of postgres_fdw batch inserts
The test inserted 70k rows into a foreign table, in order to verify
correct behavior with more than 65535 parameters, and was added in
response to a bug report.
However, this is rather expensive, especially when running the tests
under valgrind, CLOBBER_CACHE_ALWAYS etc. It doesn't seem worth it to
keep running the test, so remove it from all branches (14+).
Backpatch-through: 14
Discussion: https://postgr.es/m/
2131017.
1623451468@sss.pgh.pa.us
Andrew Dunstan [Mon, 3 Jul 2023 14:06:26 +0000 (10:06 -0400)]
Improve pg_basebackup long file name test Windows robustness
Creation of a file with a very long name can create problems on Windows
due to its file path limits. Work around that by creating the file via a
symlink with a shorter name.
Error displayed by buildfarm animal fairywren.o
Backpatch to all live branches
Michael Paquier [Mon, 3 Jul 2023 01:06:13 +0000 (10:06 +0900)]
Make PG_TEST_NOCLEAN work for temporary directories in TAP tests
When set, this environment variable was only effective for data
directories but not for all the other temporary files created by
PostgreSQL::Test::Utils. Keeping the temporary files after a successful
run can be useful for debugging purposes.
The documentation is updated to reflect the new behavior, with contents
available in doc/ since v16 and in src/test/perl/README since v15.
Author: Jacob Champion
Reviewed-by: Daniel Gustafsson
Discussion: https://postgr.es/m/CAAWbhmgHtDH1SGZ+Fw05CsXtE0mzTmjbuUxLB9mY9iPKgM6cUw@mail.gmail.com
Discussion: https://postgr.es/m/
[email protected]
Backpatch-through: 11
Thomas Munro [Sun, 2 Jul 2023 22:53:44 +0000 (10:53 +1200)]
Silence "missing contrecord" error.
Commit
dd38ff28ad added a new error message "missing contrecord" when
we fail to reassemble a record. Unfortunately that caused noisy
messages to be logged by pg_waldump at end of segment, and by walsender
when asked to shut down on a segment boundary.
Remove the new error message, so that this condition signals end-of-
WAL without a message. It's arguably a reportable condition that should
not be silenced while performing crash recovery, but fixing that without
introducing noise in the other cases will require more research.
Back-patch to 15.
Reported-by: Tomas Vondra
Discussion: https://postgr.es/m/
6a1df56e-4656-b3ce-4b7a-
a9cb41df8189%40enterprisedb.com
Tomas Vondra [Sun, 2 Jul 2023 18:29:01 +0000 (20:29 +0200)]
Fix oversight in handling of modifiedCols since
f24523672d
Commit
f24523672d fixed a memory leak by moving the modifiedCols bitmap
into the per-row memory context. In the case of AFTER UPDATE triggers,
the bitmap is however referenced from an event kept until the end of the
query, resulting in a use-after-free bug.
Fixed by copying the bitmap into the AfterTriggerEvents memory context,
which is the one where we keep the trigger events. There's only one
place that needs to do the copy, but the memory context may not exist
yet. Doing that in a separate function seems more readable.
Report by Alexander Pyhalov, fix by me. Backpatch to 13, where the
bitmap was added to the event by commit
71d60e2aa0.
Reported-by: Alexander Pyhalov
Backpatch-through: 13
Discussion: https://postgr.es/m/
acddb17c89b0d6cb940eaeda18c08bbe@postgrespro.ru
Tomas Vondra [Sun, 2 Jul 2023 16:54:09 +0000 (18:54 +0200)]
Fix memory leak in Incremental Sort rescans
The Incremental Sort had a couple issues, resulting in leaking memory
during rescans, possibly triggering OOM. The code had a couple of
related flaws:
1. During rescans, the sort states were reset but then also set to NULL
(despite the comment saying otherwise). ExecIncrementalSort then
sees NULL and initializes a new sort state, leaking the memory used
by the old one.
2. Initializing the sort state also automatically rebuilt the info about
presorted keys, leaking the already initialized info. presorted_keys
was also unnecessarily reset to NULL.
Patch by James Coleman, based on patches by Laurenz Albe and Tom Lane.
Backpatch to 13, where Incremental Sort was introduced.
Author: James Coleman, Laurenz Albe, Tom Lane
Reported-by: Laurenz Albe, Zu-Ming Jiang
Backpatch-through: 13
Discussion: https://postgr.es/m/
b2bd02dff61af15e3526293e2771f874cf2a3be7.camel%40cybertec.at
Discussion: https://postgr.es/m/
db03c582-086d-e7cd-d4a1-
3bc722f81765%40inf.ethz.ch
Noah Misch [Sat, 1 Jul 2023 17:00:39 +0000 (10:00 -0700)]
Fix test of pg_stat_io for wal_level=minimal.
Back-patch to v16, which introduced the test.
Bruce Momjian [Fri, 30 Jun 2023 21:35:47 +0000 (17:35 -0400)]
doc: PG 16 relnotes, remove "Have initdb use ICU by default"
Item reverted.
Backpatch-through: 16 only
Amit Langote [Fri, 30 Jun 2023 06:48:54 +0000 (15:48 +0900)]
Add a test case for
a316a3bc
a316a3bc fixed the code in build_simpl_rel() that propagates
RelOptInfo.userid from parent to child rels so that it works
correctly for the child rels of a UNION ALL subquery rel, though
no tests were added in that commit. So do so here.
As noted in the discussion, coming up with a test case in the core
regression suite for this fix has turned out to be tricky, so the
test case is added to the postgres_fdw's suite instead.
postgresGetForeignRelSize()'s use of user mapping for the user
specified in RelOptInfo.userid makes it relatively easier to craft
a test case around.
Discussion: https://postgr.es/m/CA%2BHiwqH91GaFNXcXbLAM9L%3DzBwUmSyv699Mtv3i1_xtk9Xec_A%40mail.gmail.com
Backpatch-through: 16
Michael Paquier [Fri, 30 Jun 2023 04:54:53 +0000 (13:54 +0900)]
Fix marking of indisvalid for partitioned indexes at creation
The logic that introduced partitioned indexes missed a few things when
invalidating a partitioned index when these are created, still the code
is written to handle recursions:
1) If created from scratch because a mapping index could not be found,
the new index created could be itself invalid, if for example it was a
partitioned index with one of its leaves invalid.
2) A CCI was missing when indisvalid is set for a parent index, leading
to inconsistent trees when recursing across more than one level for a
partitioned index creation if an invalidation of the parent was
required.
This could lead to the creation of a partition index tree where some of
the partitioned indexes are marked as invalid, but some of the parents
are marked valid, which is not something that should happen (as
validatePartitionedIndex() defines, indisvalid is switched to true for a
partitioned index iff all its partitions are themselves valid).
This patch makes sure that indisvalid is set to false on a partitioned
index if at least one of its partition is invalid. The flag is set to
true if *all* its partitions are valid.
The regression test added in this commit abuses of a failed concurrent
index creation, marked as invalid, that maps with an index created on
its partitioned table afterwards.
Reported-by: Alexander Lakhin
Reviewed-by: Alexander Lakhin
Discussion: https://postgr.es/m/
14987634-43c0-0cb3-e075-
94d423607e08@gmail.com
Backpatch-through: 11
Tom Lane [Thu, 29 Jun 2023 23:14:22 +0000 (19:14 -0400)]
Arm gen_node_support.pl's nodetag ABI stability check in v16.
Per RELEASE_CHANGES checklist.
Michael Paquier [Thu, 29 Jun 2023 22:49:01 +0000 (07:49 +0900)]
Fix pg_depend entry to AMs after ALTER TABLE .. SET ACCESS METHOD
ALTER TABLE .. SET ACCESS METHOD was not registering a dependency to the
new access method with the relation altered in its rewrite phase, making
possible the drop of an access method even if there are relations that
depend on it. During the rewrite, a temporary relation is created to
build the new relation files before swapping the new and old files, and,
while the temporary relation was registering a correct dependency to the
new AM, the old relation did not do that. A dependency on the access
method is added when the relation files are swapped, which is the point
where pg_class is updated.
Materialized views and tables use the same code path, hence both were
impacted.
Backpatch down to 15, where this command has been introduced.
Reported-by: Alexander Lakhin
Reviewed-by: Nathan Bossart, Andres Freund
Discussion: https://postgr.es/m/18000-
9145c25b1af475ca@postgresql.org
Backpatch-through: 15
Andres Freund [Thu, 29 Jun 2023 16:12:52 +0000 (09:12 -0700)]
meson: Remove redundant return code check
run_command(check: true) already would have errorred out before the check is
reached.
Author: Tristan Partin
Discussion: CSPIJVUDZFKX.3KHMOAVGF94RV@c3po
Tom Lane [Thu, 29 Jun 2023 16:12:52 +0000 (12:12 -0400)]
Defend against bogus parameterization of join input paths.
An outer join cannot be formed using an input path that is parameterized
by a value that is supposed to be nulled by the outer join. This is
obviously nonsensical, and it could lead to a bad plan being selected;
although currently it seems that we'll hit various sanity-check
assertions first.
I think that such cases were formerly prevented by the delay_upper_joins
mechanism, but now that that's gone we need an explicit check.
(Perhaps we should avoid generating baserel paths that could
lead to this situation in the first place; but it seems like
having a defense at the join level would be a good idea anyway.)
Richard Guo and Tom Lane, per report from Jaime Casanova
Discussion: https://postgr.es/m/CAJKUy5g2uZRrUDZJ8p-=giwcSHVUn0c9nmdxPSY0jF0Ov8VoEA@mail.gmail.com
Tom Lane [Thu, 29 Jun 2023 14:19:10 +0000 (10:19 -0400)]
Fix order of operations in ExecEvalFieldStoreDeForm().
If the given composite datum is toasted out-of-line,
DatumGetHeapTupleHeader will perform database accesses to detoast it.
That can invalidate the result of get_cached_rowtype, as documented
(perhaps not plainly enough) in that function's API spec; which leads
to strange errors or crashes when we try to use the TupleDesc to read
the tuple. In short then, trying to update a field of a composite
column could fail intermittently if the overall column value is wide
enough to require toasting.
We can fix the bug at no cost by just changing the order of
operations, since we don't need the TupleDesc until after detoasting.
(Other callers of get_cached_rowtype appear to get this right already,
so there's only one bug.)
Note that the added regression test case reveals this bug reliably
only with debug_discard_caches/CLOBBER_CACHE_ALWAYS.
Per bug #17994 from Alexander Lakhin. Sadly, this patch does not fix
the missing-values issue revealed in the bug discussion; we'll need
some more work to cover that.
Discussion: https://postgr.es/m/17994-
5c7100b51b4790e9@postgresql.org
Peter Eisentraut [Thu, 29 Jun 2023 11:16:52 +0000 (13:16 +0200)]
meson: Fix intl misspelling
Author: Tristan Partin
Discussion: https://www.postgresql.org/message-id/flat/CSPIJVUDZFKX.3KHMOAVGF94RV%40c3po
Peter Eisentraut [Thu, 29 Jun 2023 11:06:41 +0000 (13:06 +0200)]
meson: Use a better error message in an impossible case
Meson validates 'choice' options for us, so technically this case is
impossible. A better error message helps people reading the code
understand what is going on in that branch.
Author: Tristan Partin
Discussion: https://www.postgresql.org/message-id/flat/CSPIJVUDZFKX.3KHMOAVGF94RV%40c3po
Peter Eisentraut [Thu, 29 Jun 2023 11:06:02 +0000 (13:06 +0200)]
meson: Make some Meson style more consistent with surrounding code
Author: Tristan Partin
Discussion: https://www.postgresql.org/message-id/flat/CSPIJVUDZFKX.3KHMOAVGF94RV%40c3po
Peter Eisentraut [Thu, 29 Jun 2023 11:05:05 +0000 (13:05 +0200)]
meson: Fix some grammar usage in Meson comments
Author: Tristan Partin
Discussion: https://www.postgresql.org/message-id/flat/CSPIJVUDZFKX.3KHMOAVGF94RV%40c3po
Peter Eisentraut [Thu, 29 Jun 2023 11:04:04 +0000 (13:04 +0200)]
meson: Mention the correct way to disable readline support
Using false to disable a feature option is incorrect.
Author: Tristan Partin
Discussion: https://www.postgresql.org/message-id/flat/CSPIJVUDZFKX.3KHMOAVGF94RV%40c3po
Peter Eisentraut [Thu, 29 Jun 2023 11:03:19 +0000 (13:03 +0200)]
meson: Remove old comment
That portion of code is not run in the Windows case already given the
structure of the surrounding if statement.
Author: Tristan Partin
Discussion: https://www.postgresql.org/message-id/flat/CSPIJVUDZFKX.3KHMOAVGF94RV%40c3po
Peter Eisentraut [Thu, 29 Jun 2023 10:56:30 +0000 (12:56 +0200)]
meson: Use the not_found_dep constant
Previously in the build description, a not_found_dep was defined. Make
use of it.
Author: Tristan Partin
Discussion: https://www.postgresql.org/message-id/flat/CSPIJVUDZFKX.3KHMOAVGF94RV%40c3po
Peter Eisentraut [Thu, 29 Jun 2023 10:53:41 +0000 (12:53 +0200)]
meson: Attach colon to keyword argument
This matches the style found in the rest of the Meson build description.
Author: Tristan Partin
Discussion: https://www.postgresql.org/message-id/flat/CSPIJVUDZFKX.3KHMOAVGF94RV%40c3po
Peter Eisentraut [Thu, 29 Jun 2023 10:52:12 +0000 (12:52 +0200)]
meson: Use consistent Meson option description formats
Author: Tristan Partin
Discussion: https://www.postgresql.org/message-id/flat/CSPIJVUDZFKX.3KHMOAVGF94RV%40c3po
Peter Eisentraut [Thu, 29 Jun 2023 10:47:33 +0000 (12:47 +0200)]
meson: Use consistent casing in Meson option descriptions
Meson itself uses capital letters for option descriptions, so follow
that.
Author: Tristan Partin
Discussion: https://www.postgresql.org/message-id/flat/CSPIJVUDZFKX.3KHMOAVGF94RV%40c3po
Peter Eisentraut [Thu, 29 Jun 2023 10:44:27 +0000 (12:44 +0200)]
meson: Remove triple-quoted strings
Triple-quoted strings are for multiline strings in Meson. None of the
descriptions that got changed were multiline and the entire file uses
single-line descriptions.
Author: Tristan Partin
Discussion: https://www.postgresql.org/message-id/flat/CSPIJVUDZFKX.3KHMOAVGF94RV%40c3po
Peter Eisentraut [Thu, 29 Jun 2023 08:30:55 +0000 (10:30 +0200)]
Remove inappropriate raw_expression_tree_walker() code
It was walking into the ColumnDef->compression field, which is not a
node but a string. This code is currently not reachable (because the
compression field is only set in situations that don't go through
raw_expression_tree_walker()), but if it had been, this could have
behaved erratically.
Peter Eisentraut [Thu, 29 Jun 2023 07:14:55 +0000 (09:14 +0200)]
Error message wording improvements
Nathan Bossart [Thu, 29 Jun 2023 04:32:53 +0000 (21:32 -0700)]
Fix psql \?'s entries for \dp and \z.
d913928c9c added support for the "S" modifier to psql's \dp and \z
meta-commands, but it missed updating the corresponding entries in
\?'s output.
Author: Noriyoshi Shinoda
Discussion: https://postgr.es/m/DM4PR84MB17342A51B3A1556CFBC7A4B2EE25A%40DM4PR84MB1734.NAMPRD84.PROD.OUTLOOK.COM
Michael Paquier [Thu, 29 Jun 2023 00:17:26 +0000 (09:17 +0900)]
pg_stat_statements: Fix second comment related to entry resets
This should have been part of
dc73db6, but it got lost in the mix.
Oversight in
6b4d23f.
Author: Japin Li
Discussion: https://postgr.es/m/MEYP282MB1669FC91C764E277821936D3B624A@MEYP282MB1669.AUSP282.PROD.OUTLOOK.COM
Backpatch-through: 14
Michael Paquier [Wed, 28 Jun 2023 23:04:47 +0000 (08:04 +0900)]
pg_stat_statements: Fix incorrect comment with entry resets
Oversight in
6b4d23f.
Author: Japin Li, Richard Guo
Discussion: https://postgr.es/m/MEYP282MB1669FC91C764E277821936D3B624A@MEYP282MB1669.AUSP282.PROD.OUTLOOK.COM
Backpatch-through: 14
Peter Eisentraut [Wed, 28 Jun 2023 17:30:26 +0000 (19:30 +0200)]
Reword error messages for consistency
Tom Lane [Wed, 28 Jun 2023 16:48:14 +0000 (12:48 -0400)]
Doc: minor wording adjustments in transaction isolation discussion.
Re-word for more clarity, per gripe from Anton Sidyakin.
Discussion: https://postgr.es/m/
168745911769.
2239590.
6062411529242609290@wrigleys.postgresql.org
Michael Paquier [Wed, 28 Jun 2023 07:26:55 +0000 (16:26 +0900)]
Add timeline ID to file names generated with pg_waldump --save-fullpage
Not including the timeline IDs to the file names generated by pg_waldump
for the individual blocks saved could cause some of these files to be
overwritten when scanning segments across multiple timelines. Having
this information is also as much useful as the LSNs, to be able to know
from exactly which WAL segment a block is comes from.
While on it, this fixes a few comments in the tests, where the format of
the file was not described as matching with the reality.
Reported-by: Fujii Masao
Reviewed-by: Kyotaro Horiguchi, David Christensen
Discussion: https://postgr.es/m/
[email protected]
Michael Paquier [Wed, 28 Jun 2023 06:57:31 +0000 (15:57 +0900)]
Ignore invalid indexes when enforcing index rules in ALTER TABLE ATTACH PARTITION
A portion of ALTER TABLE .. ATTACH PARTITION is to ensure that the
partition being attached to the partitioned table has a correct set of
indexes, so as there is a consistent index mapping between the
partitioned table and its new-to-be partition. However, as introduced
in
8b08f7d, the current logic could choose an invalid index as a match,
which is something that can exist when dealing with more than two levels
of partitioning, like attaching a partitioned table (that has
partitions, with an index created by CREATE INDEX ON ONLY) to another
partitioned table.
A partitioned index with indisvalid set to false is equivalent to an
incomplete partition tree, meaning that an invalid partitioned index
does not have indexes defined in all its partitions. Hence, choosing an
invalid partitioned index can create inconsistent partition index trees,
where the parent attaching to is valid, but its partition may be
invalid.
In the report from Alexander Lakhin, this showed up as an assertion
failure when validating an index. Without assertions enabled, the
partition index tree would be actually broken, as indisvalid should
be switched to true for a partitioned index once all its partitions are
themselves valid. With two levels of partitioning, the top partitioned
table used a valid index and was able to link to an invalid index stored
on its partition, itself a partitioned table.
I have studied a few options here (like the possibility to switch
indisvalid to false for the parent), but came down to the conclusion
that we'd better rely on a simple rule: invalid indexes had better never
be chosen, so as the partition attached uses and creates indexes that
the parent expects. Some regression tests are added to provide some
coverage. Note that the existing coverage is not impacted.
This is a problem since partitioned indexes exist, so backpatch all the
way down to v11.
Reported-by: Alexander Lakhin
Discussion: https://postgr.es/
14987634-43c0-0cb3-e075-
94d423607e08@gmail.com
Backpatch-through: 11
Michael Paquier [Tue, 27 Jun 2023 23:59:36 +0000 (08:59 +0900)]
Remove dependency to query text in JumbleQuery()
Since
3db72eb, the query ID of utilities is generated using the Query
structure, making the use of the query string in JumbleQuery()
unnecessary. This commit removes the argument "querytext" from
JumbleQuery().
Reported-by: Joe Conway
Reviewed-by: Nathan Bossart
Discussion: https://postgr.es/m/
[email protected]
Heikki Linnakangas [Tue, 27 Jun 2023 07:11:31 +0000 (10:11 +0300)]
Fix comment on clearing padding.
Author: Japin Li
Discussion: https://www.postgresql.org/message-id/MEYP282MB16696317B5DA7D0D92306149B627A@MEYP282MB1669.AUSP282.PROD.OUTLOOK.COM
Tom Lane [Mon, 26 Jun 2023 20:07:19 +0000 (16:07 -0400)]
Stamp 16beta2.
Bruce Momjian [Mon, 26 Jun 2023 17:44:40 +0000 (13:44 -0400)]
doc: PG 16 relnotes, update for beta 2
Peter Eisentraut [Mon, 26 Jun 2023 10:02:02 +0000 (12:02 +0200)]
Translation updates
Source-Git-URL: https://git.postgresql.org/git/pgtranslation/messages.git
Source-Git-Hash:
ab77975e9d2cde44da796c18af3ec1a66f0df7ae
Heikki Linnakangas [Mon, 26 Jun 2023 08:52:02 +0000 (11:52 +0300)]
Change "..." to cstring in old input/output function comments.
It was not clear what the "..." meant.
Author: Steve Chavez
Discussion: https://www.postgresql.org/message-id/CAGRrpzZzeh7zC3yaVG9di%3DydJ%
[email protected]
Tom Lane [Sat, 24 Jun 2023 21:18:08 +0000 (17:18 -0400)]
Check for interrupts and stack overflow in TParserGet().
TParserGet() recurses for some token types, meaning it's possible
to drive it to stack overflow. Since this is a minority behavior,
I chose to add the check_stack_depth() call to the two places that
recurse rather than doing it during every single call.
While at it, add CHECK_FOR_INTERRUPTS(), because this can run
unpleasantly long for long inputs.
Per bug #17995 from Zuming Jiang. This is old, so back-patch
to all supported branches.
Discussion: https://postgr.es/m/17995-
9f20ff3e6389db4c@postgresql.org
Bruce Momjian [Sat, 24 Jun 2023 02:50:55 +0000 (22:50 -0400)]
doc: rename "decades" to be more generic
Reported-by: Michael Paquier
Discussion: https://postgr.es/m/
[email protected]
Backpatch-through: 11
Peter Eisentraut [Fri, 23 Jun 2023 14:36:17 +0000 (16:36 +0200)]
Error message refactoring
Take some untranslatable things out of the message and replace by
format placeholders, to reduce translatable strings and reduce
translation mistakes.
Peter Eisentraut [Fri, 23 Jun 2023 12:48:38 +0000 (14:48 +0200)]
doc: Improve punctuation
Peter Eisentraut [Fri, 23 Jun 2023 12:14:57 +0000 (14:14 +0200)]
doc: Clean up title case use
Michael Paquier [Fri, 23 Jun 2023 08:49:07 +0000 (17:49 +0900)]
Fix incorrect error message in libpq_pipeline
One of the tests for the pipeline mode with portal description expects a
non-NULL PQgetResult, but used an incorrect error message on failure,
telling that PQgetResult being NULL was the expected result.
Author: Jelte Fennema
Discussion: https://postgr.es/m/CAGECzQTkShHecFF+EZrm94Lbsu2ej569T=bz+PjMbw9Aiioxuw@mail.gmail.com
Backpatch-through: 14
Nathan Bossart [Thu, 22 Jun 2023 22:48:38 +0000 (15:48 -0700)]
Improve privilege documentation for maintenance commands.
The documentation of the required privileges for maintenance
commands (i.e., VACUUM, ANALYZE, CLUSTER, LOCK TABLE, REFRESH
MATERIALIZED VIEW, and REINDEX) is redundant, inaccurate, and
difficult to read. This commit fixes and simplifies this
documentation by removing references to ownership, superuser, and
the pg_maintain role. In addition, this removes notes about
database-wide VACUUM and ANALYZE, clarifies matters for REINDEX on
partitioned indexes and tables, and strengthens the description of
the pg_maintain role.
Reviewed-by: Michael Paquier, Jeff Davis
Discussion: https://postgr.es/m/
20230615041044.GA736001%40nathanxps13
Nathan Bossart [Thu, 22 Jun 2023 22:48:20 +0000 (15:48 -0700)]
Fix cache lookup hazards introduced by
ff9618e82a.
ff9618e82a introduced has_partition_ancestor_privs(), which is used
to check whether a user has MAINTAIN on any partition ancestors.
This involves syscache lookups, and presently this function does
not take any relation locks, so it is likely subject to the same
kind of cache lookup failures that were fixed by
19de0ab23c.
To fix this problem, this commit partially reverts
ff9618e82a.
Specifically, it removes the partition-related changes, including
the has_partition_ancestor_privs() function mentioned above. This
means that MAINTAIN on a partitioned table is no longer sufficient
to perform maintenance commands on its partitions. This is more
like how privileges for maintenance commands work on supported
versions. Privileges are checked for each partition, so a command
that flows down to all partitions might refuse to process them
(e.g., if the current user doesn't have MAINTAIN on the partition).
In passing, adjust a few related comments and error messages, and
add a test for the privilege checks for CLUSTER on a partitioned
table.
Reviewed-by: Michael Paquier, Jeff Davis
Discussion: https://postgr.es/m/
20230613211246.GA219055%40nathanxps13
Amit Kapila [Thu, 22 Jun 2023 07:07:19 +0000 (12:37 +0530)]
Doc: Clarify the behavior of triggers/rules in a logical subscriber.
By default, triggers and rules do not fire on a logical replication
subscriber based on the "session_replication_role" GUC being set to
"replica". However, the docs in the logical replication section assumed
that the reader understood how this GUC worked. This modifies the docs to
be more explicit and links back to the GUC itself.
Author: Jonathan Katz, Peter Smith
Reviewed-by: Vignesh C, Euler Taveira
Backpatch-through: 11
Discussion: https://postgr.es/m/
5bb2c9a2-499f-e1a2-6e33-
5ce96b35cc4a@postgresql.org
David Rowley [Thu, 22 Jun 2023 00:45:30 +0000 (12:45 +1200)]
Doc: mention that extended stats aren't used for joins
Statistics defined by the CREATE STATISTICS command are only used to
assist with the selectivity estimations of base relations, never for
joins. Here we mention this fact in the notes section of the CREATE
STATISTICS command.
Discussion: https://postgr.es/m/CAApHDvrMuVgDOrmg_EtFDZ=AOovq6EsJNnHH1ddyZ8EqL4yzMw@mail.gmail.com
Backpatch-through: 11
Peter Geoghegan [Thu, 22 Jun 2023 00:41:58 +0000 (17:41 -0700)]
nbtree VACUUM: cope with topparent inconsistencies.
Avoid "right sibling %u of block %u is not next child" errors when
vacuuming a corrupt nbtree index. Just LOG the issue and press on.
That way VACUUM will have a decent chance of finishing off all required
processing for the index (and for the table as a whole).
This is similar to recent work from commit
5abff197, as well as work
from commit
5b861baa (later backpatched as commit
43e409ce), which
taught nbtree VACUUM to keep going when its "re-find" check fails. The
hardening added by this commit takes place directly after the "re-find"
check, right before the critical section for the first stage of page
deletion.
Author: Peter Geoghegan
Discussion: https://postgr.es/m/CAH2-Wz=dayg0vjs4+er84TS9ami=csdzjpuiCGbEw=idhwqhzQ@mail.gmail.com
Backpatch: 11- (all supported versions).
Bruce Momjian [Wed, 21 Jun 2023 23:20:07 +0000 (19:20 -0400)]
doc: update PG history as over "three decades"
Reported-by: Pierre
Discussion: https://postgr.es/m/
168724660637.399156.
7642965215720120947@wrigleys.postgresql.org
Backpatch-through: 11
Jeff Davis [Wed, 21 Jun 2023 20:18:25 +0000 (13:18 -0700)]
ICU: do not convert locale 'C' to 'en-US-u-va-posix'.
Older versions of ICU canonicalize "C" to "en-US-u-va-posix"; but
starting in ICU version 64, the "C" locale is considered
obsolete. Postgres commit
ea1db8ae70 introduced code to always
canonicalize "C" to "en-US-u-va-posix" for consistency and
convenience, but it was deemed too confusing.
This commit removes that code, so that "C" is treated like other ICU
locale names: canonicalization is attempted, and if it fails, the
behavior is controlled by icu_validation_level.
A similar change was previously committed as
f7faa9976c, then reverted
due to an ICU-version-dependent test failure. This commit un-reverts
it, omitting the test because we now expect the behavior to depend on
the version of ICU being used.
Discussion: https://postgr.es/m/
3a200aca-4672-4b37-fc91-
5d198a323503%40eisentraut.org
Discussion: https://postgr.es/m/
f83f089ee1e9acd5dbbbf3353294d24e1f196e95[email protected]
Discussion: https://postgr.es/m/
37520ec1ae9591f83132f82dbd625f3fc2d69c16[email protected]
Jeff Davis [Wed, 21 Jun 2023 18:10:03 +0000 (11:10 -0700)]
initdb: change default --locale-provider back to libc.
Reverts
27b62377b4.
Discussion: https://postgr.es/m/
eff031036baa07f325de29215371a4c9e69d61f3[email protected]
Discussion: https://postgr.es/m/
3353947.
1682092131@sss.pgh.pa.us
Tom Lane [Wed, 21 Jun 2023 15:07:11 +0000 (11:07 -0400)]
Avoid Assert failure when processing empty statement in aborted xact.
exec_parse_message() wants to create a cached plan in all cases,
including for empty input. The empty-input path does not have
a test for being in an aborted transaction, making it possible
that plancache.c will fail due to trying to do database lookups
even though there's no real work to do.
One solution would be to throw an aborted-transaction error in
this path too, but it's not entirely clear whether the lack of
such an error was intentional or whether some clients might be
relying on non-error behavior. Instead, let's hack plancache.c
so that it treats empty statements with the same logic it
already had for transaction control commands, ensuring that it
can soldier through even in an already-aborted transaction.
Per bug #17983 from Alexander Lakhin. Back-patch to all
supported branches.
Discussion: https://postgr.es/m/17983-
da4569fcb878672e@postgresql.org
Peter Eisentraut [Wed, 21 Jun 2023 14:14:47 +0000 (16:14 +0200)]
Allow and require passing files on command line of pgperltidy
pgperltidy as well as pgperlcritic and pgperlsyncheck now allow
passing files and directories on the command line, like pgindent does.
(Previously, they would always operate on the whole tree.)
Also, for consistency with pgindent's new behavior (as of
b16259b3c1),
passing an argument is now required. To get the previous default
behavior, use "pgperltidy ." for example.
Discussion: https://www.postgresql.org/message-id/flat/
45aacd8a-5265-d9da-8df2-
b8e2c0cf6a07%40eisentraut.org
Michael Paquier [Wed, 21 Jun 2023 07:16:15 +0000 (16:16 +0900)]
Disable use of archiving in 009_twophase.pl
This partially reverts
68cb5af, as using archiving to enforce the
rename of the last partial segment of the old timeline at promotion to
use .partial as suffix is impacting the tests when it does switchovers.
As showed by the logs gathered by the CI in the tests that failed, a new
standby may fail to find the WAL segment it needs to follow a promoted
instance with its timeline jump, as it got renamed to .partial.
This problem would manifest as a run timeout with 009_twophase.pl, as
the new standby repeatedly requests a segment from the promoted primary
that it would not find.
Reported-by: Nathan Bossart
Discussion: https://postgr.es/m/
20230621043345.GA787473@nathanxps13
Backpatch-through: 13
Amit Kapila [Wed, 21 Jun 2023 05:06:09 +0000 (10:36 +0530)]
Fix the errhint message and docs for drop subscription failure.
The existing errhint message and docs were missing the fact that we can't
disassociate from the slot unless the subscription is disabled.
Author: Robert Sjöblom, Peter Smith
Reviewed-by: Peter Eisentraut, Amit Kapila
Backpatch-through: 11
Discussion: https://postgr.es/m/
807bdf85-61ea-88e2-5712-
6d9fcd4eabff@fortnox.se
Nathan Bossart [Tue, 20 Jun 2023 22:14:58 +0000 (15:14 -0700)]
Move bool parameter for vacuum_rel() to option bits.
ff9618e82a introduced the skip_privs parameter, which is used to
skip privilege checks when recursing to a relation's TOAST table.
This parameter should have been added as a flag bit in
VacuumParams->options instead.
Suggested-by: Michael Paquier
Reviewed-by: Michael Paquier, Jeff Davis
Discussion: https://postgr.es/m/ZIj4v1CwqlDVJZfB%40paquier.xyz
Tom Lane [Tue, 20 Jun 2023 21:47:36 +0000 (17:47 -0400)]
Fix hash join when inner hashkey expressions contain Params.
If the inner-side expressions contain PARAM_EXEC Params, we must
re-hash whenever the values of those Params change. The executor
mechanism for that exists already, but we failed to invoke it because
finalize_plan() neglected to search the Hash.hashkeys field for
Params. This allowed a previous scan's hash table to be re-used
when it should not be, leading to rows missing from the join's output.
(I believe incorrectly-included join rows are impossible however,
since checking the real hashclauses would reject false matches.)
This bug is very ancient, dating probably to
d24d75ff1 of 7.4.
Sadly, this simple fix depends on the plan representational changes
made by
2abd7ae9b, so it will only work back to v12. I thought
about trying to make some kind of hack for v11, but I'm leery
of putting code significantly different from what is used in the
newer branches into a nearly-EOL branch. Seeing that the bug
escaped detection for a full twenty years, problematic cases
must be rare; so I don't feel too awful about leaving v11 as-is.
Per bug #17985 from Zuming Jiang. Back-patch to v12.
Discussion: https://postgr.es/m/17985-
748b66607acd432e@postgresql.org
Bruce Momjian [Tue, 20 Jun 2023 17:15:18 +0000 (13:15 -0400)]
docs: adjust tag indenting and add MERGE mention
Discussion: https://postgr.es/m/CAMpnoC4_WsY3gsY+ud-Z0GDbafR=K7t7cXn2gatEqFnsRNY3yQ@mail.gmail.com
Author: Will Mortensen
Tom Lane [Tue, 20 Jun 2023 15:09:56 +0000 (11:09 -0400)]
Fix another cause of "wrong varnullingrels" planner failures.
I removed the delay_upper_joins mechanism in commit
b448f1c8d,
reasoning that it was only needed when we have a single-table
(SELECT ... WHERE) as the immediate RHS child of a left join,
and we could get rid of that by hoisting the WHERE condition into
the parent join's quals. However that new code missed a case:
we could have "foo LEFT JOIN ((SELECT ... WHERE) LEFT JOIN bar)",
and if the two left joins can be commuted then we now have the
problematic query shape. We can fix this too easily enough,
by allowing the syntactically-lower left join to pass through
its parent qual location pointer recursively. That lets
prepjointree.c discard the SELECT by temporarily hoisting the
WHERE condition into the ancestor join's qual.
Per bug #17978 from Zuming Jiang.
Discussion: https://postgr.es/m/17978-
12f3d93a55297266@postgresql.org
Tom Lane [Tue, 20 Jun 2023 14:29:57 +0000 (10:29 -0400)]
Don't include outer join relids in lateral_relids bitmapsets.
This avoids an assertion failure when outer joins are rearranged
per identity 3. Listing only the baserels from a PlaceHolderVar's
ph_lateral set should be enough to ensure that the required values
are available when we need to compute the PHV --- it's what we
did before inventing nullingrel sets, after all. It's a bit
unsatisfying; but with beta2 hard upon us, there's not time to
look for an aesthetically cleaner fix.
Richard Guo and Tom Lane
Discussion: https://postgr.es/m/CAMbWs48Jcw-NvnxT23WiHP324wG44DvzcH1j4hc0Zn+3sR9cfg@mail.gmail.com
Tom Lane [Tue, 20 Jun 2023 14:22:52 +0000 (10:22 -0400)]
Centralize fixups for mismatched nullingrels in nestloop params.
It turns out that the fixes we applied in commits
bfd332b3f
and
63e4f13d2 were not nearly enough to solve the problem.
We'd focused narrowly on subquery RTEs with lateral references,
but lateral references can occur in several other RTE kinds
such as function RTEs. Putting the same hack into half a dozen
code paths seems quite unattractive. Hence, revert the code changes
(but not the test cases) from those commits and instead solve it
centrally in identify_current_nestloop_params(), as Richard proposed
originally. This is a bit annoying because it could mask erroneous
nullingrels in nestloop params that are generated from non-LATERAL
parameterized paths; but on balance I don't see a better way.
Maybe at some future time we'll be motivated to find a more rigorous
approach to nestloop params, but that's not happening for beta2.
Richard Guo and Tom Lane
Discussion: https://postgr.es/m/CAMbWs48Jcw-NvnxT23WiHP324wG44DvzcH1j4hc0Zn+3sR9cfg@mail.gmail.com
Tom Lane [Tue, 20 Jun 2023 13:52:52 +0000 (09:52 -0400)]
Add
b334612b8 to .git-blame-ignore-revs.
Tom Lane [Tue, 20 Jun 2023 13:50:43 +0000 (09:50 -0400)]
Pre-beta2 mechanical code beautification.
Run pgindent and pgperltidy. It seems we're still some ways
away from all committers doing this automatically. Now that
we have a buildfarm animal that will whine about poorly-indented
code, we'll try to keep the tree more tidy.
Discussion: https://postgr.es/m/
3156045.
1687208823@sss.pgh.pa.us
Jeff Davis [Tue, 20 Jun 2023 01:08:59 +0000 (18:08 -0700)]
test_extensions: make meson.build consistent with Makefile.
Specify --no-locale and --encoding=UTF8 to be consistent with the
Makefile, which specifies NO_LOCALE=1. Fixes test for some locales
when meson is used and ICU is disabled. May have been an oversight in
e6927270cd.
Also switch argument order in unaccent/meson.build to make it
consistent in style.
Discussion: https://postgr.es/m/CABwTF4Wz41pNMJ9q3tpH=6mnvg6aopDU5Lzvers5=6=WJVekww@mail.gmail.com
Author: Gurjeet Singh
Author: Jeff Davis
Michael Paquier [Tue, 20 Jun 2023 01:25:27 +0000 (10:25 +0900)]
Enable archiving in recovery TAP test 009_twophase.pl
This is a follow-up of
f663b00, that has been committed to v13 and v14,
tweaking the TAP test for two-phase transactions so as it provides
coverage for the bug that has been fixed. This change is done in its
own commit for clarity, as v15 and HEAD did not show the problematic
behavior, still missed coverage for it.
While on it, this adds a comment about the dependency of the last
partial segment rename and RecoverPreparedTransactions() at the end of
recovery, as that can be easy to miss.
Author: Michael Paquier
Reviewed-by: Kyotaro Horiguchi
Discussion: https://postgr.es/m/
743b9b45a2d4013bd90b6a5cba8d6faeb717ee34[email protected]
Backpatch-through: 13
Andres Freund [Mon, 19 Jun 2023 21:11:32 +0000 (14:11 -0700)]
fd.c: Retry after EINTR in more places
Starting with
4d330a61bb1 we can use posix_fallocate() to extend
files. Unfortunately in some situation, e.g. on tmpfs filesystems, EINTR may
be returned. See also
4518c798b2b.
To fix, add a retry path to FileFallocate(). In contrast to
4518c798b2b the
amount we extend by is limited and the extending may happen at a high
frequency, so disabling signals does not appear to be the correct path here.
Also add retry paths to other file operations currently lacking them (around
fdatasync(), fsync(), ftruncate(), posix_fadvise(), sync_file_range(),
truncate()) - they are all documented or have been observed to return EINTR.
Even though most of these functions used in the back branches, it does not
seem worth the risk to backpatch - outside of the new-to-16 case of
posix_fallocate() I am not aware of problem reports due to the lack of
retries.
Reported-by: Christoph Berg
Discussion: https://postgr.es/m/
[email protected]
Backpatch: -
Jeff Davis [Mon, 19 Jun 2023 18:51:22 +0000 (11:51 -0700)]
pg_regress: for --no-locale, use LOCALE='C'.
Instead of specifying LC_COLLATE='C' and LC_CTYPE='C', specify
LOCALE='C' which will also affect ICU. This makes pg_regress
consistent with recent changes to initdb in commit
a14e75eb0b6.
Fixes buildfarm failure.
Discussion: https://postgr.es/m/
2458565.
1686953169@sss.pgh.pa.us
David Rowley [Mon, 19 Jun 2023 01:00:42 +0000 (13:00 +1200)]
Don't use partial unique indexes for unique proofs in the planner
Here we adjust relation_has_unique_index_for() so that it no longer makes
use of partial unique indexes as uniqueness proofs. It is incorrect to
use these as the predicates used by check_index_predicates() to set
predOK makes use of not only baserestrictinfo quals as proofs, but also
qual from join conditions. For relation_has_unique_index_for()'s case, we
need to know the relation is unique for a given set of columns before any
joins are evaluated, so if predOK was only set to true due to some join
qual, then it's unsafe to use such indexes in
relation_has_unique_index_for(). The final plan may not even make use
of that index, which could result in reading tuples that are not as
unique as the planner previously expected them to be.
Bug: #17975
Reported-by: Tor Erik Linnerud
Backpatch-through: 11, all supported versions
Discussion: https://postgr.es/m/17975-
98a90c156f25c952%40postgresql.org
Jeff Davis [Fri, 16 Jun 2023 17:27:32 +0000 (10:27 -0700)]
CREATE DATABASE: make LOCALE apply to all collation providers.
For CREATE DATABASE, make LOCALE parameter apply regardless of the
provider used. Also affects initdb and createdb --locale arguments.
Previously, LOCALE (and --locale) only affected the database default
collation when using the libc provider.
Discussion: https://postgr.es/m/
1a63084d-221e-4075-619e-
6b3e590f673e@enterprisedb.com
Reviewed-by: Peter Eisentraut
Peter Eisentraut [Fri, 16 Jun 2023 08:53:22 +0000 (10:53 +0200)]
libpq: Add missing gettext trigger
libpq_ngettext() was missing. This was an ancient mistake (commit
acd08d764a).
Masahiko Sawada [Fri, 16 Jun 2023 01:32:49 +0000 (10:32 +0900)]
Add missing pg_basebackup TAP test for meson.
011_in_place_tablespace was missing from the list of pg_basebackup
tests to run under meson, so add it.
Oversight in
363e8f9115.
Discussion: https://postgr.es/m/CAD21AoDTh1A8bvNBF3LQNQg=27xTpSgvpT+4_yyEj6p4Zv8unA@mail.gmail.com
Amit Langote [Fri, 16 Jun 2023 01:04:22 +0000 (10:04 +0900)]
Fix typo in comment.
Back-patch down to 11.
Author: Sho Kato ()
Discussion: https://postgr.es/m/TYCPR01MB68499042A33BC32241193AAF9F5BA%40TYCPR01MB6849.jpnprd01.prod.outlook.com
Tom Lane [Thu, 15 Jun 2023 19:24:50 +0000 (15:24 -0400)]
When removing a left join, clean out references in EquivalenceClasses.
Since commit
b448f1c8d, we've been able to remove left joins
(that are otherwise removable) even when they are underneath
other left joins, a case that was previously prevented by a
delay_upper_joins check. This is a clear improvement, but
it has a surprising side-effect: it's now possible that there
are EquivalenceClasses whose relid sets mention the removed
baserel and/or outer join. If we fail to clean those up,
we may drop essential join quals due to not having any join
level that appears to satisfy their relid sets.
(It's not quite 100% clear that this was impossible before.
But the lack of complaints since we added join removal a dozen
years ago strongly suggests that it was impossible.)
Richard Guo and Tom Lane, per bug #17976 from Zuming Jiang
Discussion: https://postgr.es/m/17976-
4b638b525e9a983b@postgresql.org
Amit Langote [Thu, 15 Jun 2023 09:39:45 +0000 (18:39 +0900)]
Remove outdated reference to a removed file
parse_jsontable.c was removed as part of
2f2b18bd3f55, though its
mention in src/backend/parser/README was not. Fix that.
Discussion: https://postgr.es/m/CA%2BHiwqHDzw8AP8p_dEkFr0xg458ZTf58zbivAHhK4UeNrx9Tdg%40mail.gmail.com
Peter Eisentraut [Thu, 15 Jun 2023 11:54:37 +0000 (13:54 +0200)]
libpq: Fix up some error message coding
This applies the new error message API from commit
0873b2d354 to the
changes introduced by
bbf9c282ce. The latter was committed shortly
after the former, so it probably didn't get the news in time.