mirror of
https://github.com/postgres/postgres.git
synced 2025-08-28 18:48:04 +03:00
Match RelOptInfos by relids not pointer equality.
Commit 1c2cb2744
added some code that tried to detect whether two
RelOptInfos were the "same" rel by pointer comparison; but it turns
out that inheritance_planner breaks that, through its shenanigans
with copying some relations forward into new subproblems. Compare
relid sets instead. Add a regression test case to exercise this
area.
Problem reported by Rushabh Lathia; diagnosis and fix by Amit Langote,
modified a bit by me.
Discussion: https://postgr.es/m/CAGPqQf3anJGj65bqAQ9edDr8gF7qig6_avRgwMT9MsZ19COUPw@mail.gmail.com
This commit is contained in:
@@ -384,7 +384,7 @@ make_partitionedrel_pruneinfo(PlannerInfo *root, RelOptInfo *parentrel,
|
||||
* because in later iterations of the loop for child partitions,
|
||||
* we want to translate from parent to child variables.
|
||||
*/
|
||||
if (parentrel != subpart)
|
||||
if (!bms_equal(parentrel->relids, subpart->relids))
|
||||
{
|
||||
int nappinfos;
|
||||
AppendRelInfo **appinfos = find_appinfos_by_relids(root,
|
||||
|
Reference in New Issue
Block a user