Re: FailedAssertion("pd_idx == pinfo->nparts", File: "execPartition.c", Line: 1689)
Tom Lane <tgl@sss.pgh.pa.us>
From: Tom Lane <tgl@sss.pgh.pa.us>
To: Amit Langote <amitlangote09@gmail.com>
Cc: Justin Pryzby <pryzby@telsasoft.com>, Robert Haas <robertmhaas@gmail.com>,
"pgsql-hackers@postgresql.org" <pgsql-hackers@postgresql.org>
Date: 2020-08-05T17:30:30Z
Lists: pgsql-hackers
Attachments
- fix-sloppy-partition-mapping-2.patch (text/x-diff) patch
Amit Langote <amitlangote09@gmail.com> writes: > The crash reported here is in the other case where the concurrently > added partitions cause the execution-time PartitionDesc to have more > partitions than the one that PartitionedRelPruneInfo is based on. > I was able to reproduce such a crash as follows: Yeah, I can repeat the case per these directions. I concur that the issue is that ExecCreatePartitionPruneState is failing to cope with zeroes in the relid_map. > The attached patch should fix that. I don't like this patch at all though; I do not think it is being nearly careful enough to ensure that it's matched the surviving relation OIDs correctly. In particular it blithely assumes that a zero in relid_map *must* match the immediately next entry in partdesc->oids, which is easy to break if the new partition is adjacent to the one the planner managed to prune. So I think we should do it more like the attached. I'm strongly tempted to convert the trailing Assert to an actual test-and-elog, too, but didn't do so here. regards, tom lane
Commits
-
Support testing of cases where table schemas change after planning.
- 6f0b632f083b 14.0 landed
-
Fix matching of sub-partitions when a partitioned plan is stale.
- f992da210ff8 12.4 landed
- c43a36fa8fff 13.0 landed
- 7a980dfc6c15 14.0 landed
-
Speed up planning when partitions can be pruned at plan time.
- 428b260f87e8 12.0 cited
-
Allow ATTACH PARTITION with only ShareUpdateExclusiveLock.
- 898e5e3290a7 12.0 cited