=== Applying patches on top of PostgreSQL commit ID 53a49365052026907afff7613929710d1e7f0da0 === /etc/rc.d/jail: WARNING: Per-jail configuration via jail_* variables is obsolete. Please consider migrating to /etc/jail.conf. Sat Feb 1 01:46:31 UTC 2025 On branch cf/4458 nothing to commit, working tree clean === applying patch ./v4-0001-Retiring-is_pushed_down.patch Applied patch to 'contrib/postgres_fdw/postgres_fdw.c' cleanly. Applied patch to 'src/backend/optimizer/path/costsize.c' cleanly. Applied patch to 'src/backend/optimizer/path/equivclass.c' cleanly. Applied patch to 'src/backend/optimizer/path/joinpath.c' cleanly. Applied patch to 'src/backend/optimizer/path/joinrels.c' cleanly. Applied patch to 'src/backend/optimizer/plan/analyzejoins.c' cleanly. Applied patch to 'src/backend/optimizer/plan/createplan.c' cleanly. Applied patch to 'src/backend/optimizer/plan/initsplan.c' cleanly. Applied patch to 'src/backend/optimizer/plan/subselect.c' cleanly. Applied patch to 'src/backend/optimizer/util/inherit.c' cleanly. Applied patch to 'src/backend/optimizer/util/joininfo.c' cleanly. Applied patch to 'src/backend/optimizer/util/orclauses.c' cleanly. Applied patch to 'src/backend/optimizer/util/pathnode.c' cleanly. Applied patch to 'src/backend/optimizer/util/relnode.c' with conflicts. Applied patch to 'src/backend/optimizer/util/restrictinfo.c' with conflicts. Applied patch to 'src/include/nodes/pathnodes.h' cleanly. Applied patch to 'src/include/optimizer/cost.h' cleanly. Applied patch to 'src/include/optimizer/restrictinfo.h' cleanly. U src/backend/optimizer/util/relnode.c U src/backend/optimizer/util/restrictinfo.c diff --cc src/backend/optimizer/util/relnode.c index ff507331a0,f03c8c2fa2..0000000000 --- a/src/backend/optimizer/util/relnode.c +++ b/src/backend/optimizer/util/relnode.c @@@ -2066,9 -2102,13 +2076,18 @@@ have_partkey_equi_join(PlannerInfo *roo JoinType jointype, List *restrictlist) { PartitionScheme part_scheme = rel1->part_scheme; + bool pk_known_equal[PARTITION_MAX_KEYS]; + int num_equal_pks; ListCell *lc; ++<<<<<<< ours ++======= + int cnt_pks; + bool pk_has_clause[PARTITION_MAX_KEYS]; + bool strict_op; + Relids ojrelids = CALC_OUTER_JOIN_RELIDS(joinrel->relids, + rel1->relids, + rel2->relids); ++>>>>>>> theirs /* * This function must only be called when the joined relations have same diff --cc src/backend/optimizer/util/restrictinfo.c index a80083d232,5d05287bf3..0000000000 --- a/src/backend/optimizer/util/restrictinfo.c +++ b/src/backend/optimizer/util/restrictinfo.c @@@ -21,9 -21,18 +21,21 @@@ #include "optimizer/restrictinfo.h" ++<<<<<<< ours ++======= + static RestrictInfo *make_restrictinfo_internal(PlannerInfo *root, + Expr *clause, + Expr *orclause, + bool has_clone, + bool is_clone, + bool pseudoconstant, + Index security_level, + Relids required_relids, + Relids incompatible_relids, + Relids outer_relids); ++>>>>>>> theirs static Expr *make_sub_restrictinfos(PlannerInfo *root, Expr *clause, - bool is_pushed_down, bool has_clone, bool is_clone, bool pseudoconstant, @@@ -79,38 -86,34 +89,65 @@@ make_restrictinfo(PlannerInfo *root /* Shouldn't be an AND clause, else AND/OR flattening messed up */ Assert(!is_andclause(clause)); ++<<<<<<< ours + return make_plain_restrictinfo(root, + clause, + NULL, + is_pushed_down, + has_clone, + is_clone, + pseudoconstant, + security_level, + required_relids, + incompatible_relids, + outer_relids); ++======= + return make_restrictinfo_internal(root, + clause, + NULL, + has_clone, + is_clone, + pseudoconstant, + security_level, + required_relids, + incompatible_relids, + outer_relids); ++>>>>>>> theirs } /* - * make_restrictinfo_internal + * make_plain_restrictinfo * - * Common code for the main entry points and the recursive cases. + * Common code for the main entry points and the recursive cases. Also, + * useful while constructing RestrictInfos above OR clause, which already has + * RestrictInfos above its subclauses. */ ++<<<<<<< ours +RestrictInfo * +make_plain_restrictinfo(PlannerInfo *root, + Expr *clause, + Expr *orclause, + bool is_pushed_down, + bool has_clone, + bool is_clone, + bool pseudoconstant, + Index security_level, + Relids required_relids, + Relids incompatible_relids, + Relids outer_relids) ++======= + static RestrictInfo * + make_restrictinfo_internal(PlannerInfo *root, + Expr *clause, + Expr *orclause, + bool has_clone, + bool is_clone, + bool pseudoconstant, + Index security_level, + Relids required_relids, + Relids incompatible_relids, + Relids outer_relids) ++>>>>>>> theirs { RestrictInfo *restrictinfo = makeNode(RestrictInfo); Relids baserels; @@@ -287,17 -287,16 +321,30 @@@ make_sub_restrictinfos(PlannerInfo *roo NULL, incompatible_relids, outer_relids)); ++<<<<<<< ours + return (Expr *) make_plain_restrictinfo(root, + clause, + make_orclause(orlist), + is_pushed_down, + has_clone, + is_clone, + pseudoconstant, + security_level, + required_relids, + incompatible_relids, + outer_relids); ++======= + return (Expr *) make_restrictinfo_internal(root, + clause, + make_orclause(orlist), + has_clone, + is_clone, + pseudoconstant, + security_level, + required_relids, + incompatible_relids, + outer_relids); ++>>>>>>> theirs } else if (is_andclause(clause)) { @@@ -319,17 -317,16 +365,30 @@@ return make_andclause(andlist); } else ++<<<<<<< ours + return (Expr *) make_plain_restrictinfo(root, + clause, + NULL, + is_pushed_down, + has_clone, + is_clone, + pseudoconstant, + security_level, + required_relids, + incompatible_relids, + outer_relids); ++======= + return (Expr *) make_restrictinfo_internal(root, + clause, + NULL, + has_clone, + is_clone, + pseudoconstant, + security_level, + required_relids, + incompatible_relids, + outer_relids); ++>>>>>>> theirs } /*