=== Applying patches on top of PostgreSQL commit ID 144ad723a4484927266a316d1c9550d56745ff67 === /etc/rc.d/jail: WARNING: Per-jail configuration via jail_* variables is obsolete. Please consider migrating to /etc/jail.conf. Sat Jul 5 14:39:19 UTC 2025 On branch cf/4458 nothing to commit, working tree clean === using 'git am' to apply patch ./v4-0001-Retiring-is_pushed_down.patch === Applying: Retiring is_pushed_down Using index info to reconstruct a base tree... M contrib/postgres_fdw/postgres_fdw.c M src/backend/optimizer/path/costsize.c M src/backend/optimizer/path/equivclass.c M src/backend/optimizer/path/joinpath.c M src/backend/optimizer/path/joinrels.c M src/backend/optimizer/plan/analyzejoins.c M src/backend/optimizer/plan/createplan.c M src/backend/optimizer/plan/initsplan.c M src/backend/optimizer/plan/subselect.c M src/backend/optimizer/util/inherit.c M src/backend/optimizer/util/joininfo.c M src/backend/optimizer/util/orclauses.c M src/backend/optimizer/util/pathnode.c M src/backend/optimizer/util/relnode.c M src/backend/optimizer/util/restrictinfo.c M src/include/nodes/pathnodes.h M src/include/optimizer/cost.h M src/include/optimizer/restrictinfo.h Falling back to patching base and 3-way merge... Auto-merging src/include/optimizer/restrictinfo.h Auto-merging src/include/optimizer/cost.h Auto-merging src/include/nodes/pathnodes.h Auto-merging src/backend/optimizer/util/restrictinfo.c CONFLICT (content): Merge conflict in src/backend/optimizer/util/restrictinfo.c Auto-merging src/backend/optimizer/util/relnode.c CONFLICT (content): Merge conflict in src/backend/optimizer/util/relnode.c Auto-merging src/backend/optimizer/util/pathnode.c Auto-merging src/backend/optimizer/util/orclauses.c Auto-merging src/backend/optimizer/util/joininfo.c Auto-merging src/backend/optimizer/util/inherit.c Auto-merging src/backend/optimizer/plan/subselect.c Auto-merging src/backend/optimizer/plan/initsplan.c Auto-merging src/backend/optimizer/plan/createplan.c Auto-merging src/backend/optimizer/plan/analyzejoins.c Auto-merging src/backend/optimizer/path/joinrels.c Auto-merging src/backend/optimizer/path/joinpath.c Auto-merging src/backend/optimizer/path/equivclass.c Auto-merging src/backend/optimizer/path/costsize.c Auto-merging contrib/postgres_fdw/postgres_fdw.c error: Failed to merge in the changes. hint: Use 'git am --show-current-patch=diff' to see the failed patch Patch failed at 0001 Retiring is_pushed_down When you have resolved this problem, run "git am --continue". If you prefer to skip this patch, run "git am --skip" instead. To restore the original branch and stop patching, run "git am --abort". Unstaged changes after reset: M contrib/postgres_fdw/postgres_fdw.c M src/backend/optimizer/path/costsize.c M src/backend/optimizer/path/equivclass.c M src/backend/optimizer/path/joinpath.c M src/backend/optimizer/path/joinrels.c M src/backend/optimizer/plan/analyzejoins.c M src/backend/optimizer/plan/createplan.c M src/backend/optimizer/plan/initsplan.c M src/backend/optimizer/plan/subselect.c M src/backend/optimizer/util/inherit.c M src/backend/optimizer/util/joininfo.c M src/backend/optimizer/util/orclauses.c M src/backend/optimizer/util/pathnode.c M src/backend/optimizer/util/relnode.c M src/backend/optimizer/util/restrictinfo.c M src/include/nodes/pathnodes.h M src/include/optimizer/cost.h M src/include/optimizer/restrictinfo.h === using patch(1) to apply patch ./v4-0001-Retiring-is_pushed_down.patch === patching file contrib/postgres_fdw/postgres_fdw.c Hunk #1 succeeded at 5878 (offset 31 lines). Hunk #2 succeeded at 6664 (offset 55 lines). patching file src/backend/optimizer/path/costsize.c Hunk #1 succeeded at 5094 (offset 96 lines). Hunk #2 succeeded at 5104 (offset 96 lines). Hunk #3 succeeded at 5127 (offset 96 lines). Hunk #4 succeeded at 5179 (offset 96 lines). Hunk #5 succeeded at 5530 (offset 96 lines). patching file src/backend/optimizer/path/equivclass.c Hunk #1 succeeded at 257 (offset 61 lines). Hunk #2 succeeded at 2157 (offset 127 lines). Hunk #3 succeeded at 2184 (offset 127 lines). Hunk #4 succeeded at 2211 (offset 127 lines). patching file src/backend/optimizer/path/joinpath.c Hunk #3 succeeded at 216 (offset -2 lines). Hunk #4 succeeded at 226 (offset -2 lines). Hunk #5 succeeded at 2253 (offset 130 lines). Hunk #6 succeeded at 2502 (offset 146 lines). Hunk #7 succeeded at 2530 (offset 156 lines). patching file src/backend/optimizer/path/joinrels.c Hunk #2 succeeded at 887 (offset -8 lines). Hunk #3 succeeded at 913 (offset -8 lines). Hunk #4 succeeded at 927 (offset -8 lines). Hunk #5 succeeded at 944 (offset -8 lines). Hunk #6 succeeded at 980 (offset -8 lines). Hunk #7 succeeded at 1006 (offset -5 lines). Hunk #8 succeeded at 1021 (offset -5 lines). Hunk #9 succeeded at 1372 (offset -56 lines). Hunk #10 succeeded at 1387 (offset -56 lines). patching file src/backend/optimizer/plan/analyzejoins.c Hunk #1 succeeded at 277 (offset -22 lines). Hunk #2 succeeded at 593 (offset 61 lines). Hunk #3 succeeded at 1468 (offset 83 lines). Hunk #4 succeeded at 1488 (offset 83 lines). patching file src/backend/optimizer/plan/createplan.c Hunk #1 succeeded at 4393 (offset -3 lines). Hunk #2 succeeded at 4539 (offset 54 lines). Hunk #3 succeeded at 4889 (offset 101 lines). patching file src/backend/optimizer/plan/initsplan.c Hunk #1 succeeded at 1306 (offset 344 lines). Hunk #2 succeeded at 2553 (offset 348 lines). Hunk #3 succeeded at 2662 (offset 348 lines). Hunk #4 succeeded at 2688 (offset 348 lines). Hunk #5 succeeded at 2704 (offset 348 lines). Hunk #6 succeeded at 2728 (offset 348 lines). Hunk #7 succeeded at 2983 (offset 358 lines). Hunk #8 succeeded at 3341 (offset 391 lines). Hunk #9 succeeded at 3439 (offset 396 lines). patching file src/backend/optimizer/plan/subselect.c Hunk #1 succeeded at 1594 (offset 79 lines). patching file src/backend/optimizer/util/inherit.c Hunk #1 succeeded at 900 (offset 9 lines). Hunk #2 succeeded at 946 (offset 9 lines). patching file src/backend/optimizer/util/joininfo.c Hunk #1 succeeded at 122 (offset 7 lines). patching file src/backend/optimizer/util/orclauses.c patching file src/backend/optimizer/util/pathnode.c Hunk #1 succeeded at 2602 (offset 78 lines). Hunk #2 succeeded at 2669 (offset 80 lines). Hunk #3 succeeded at 2748 (offset 81 lines). patching file src/backend/optimizer/util/relnode.c Hunk #2 succeeded at 1300 (offset -12 lines). Hunk #3 succeeded at 1342 (offset -12 lines). Hunk #4 succeeded at 1364 (offset -12 lines). Hunk #5 succeeded at 1383 (offset -12 lines). Hunk #6 FAILED at 2106. Hunk #7 succeeded at 2105 (offset -21 lines). 1 out of 7 hunks FAILED -- saving rejects to file src/backend/optimizer/util/relnode.c.rej patching file src/backend/optimizer/util/restrictinfo.c Hunk #1 FAILED at 24. Hunk #2 succeeded at 23 with fuzz 1 (offset -11 lines). Hunk #3 succeeded at 37 (offset -11 lines). Hunk #4 succeeded at 50 (offset -11 lines). Hunk #5 succeeded at 65 (offset -11 lines). Hunk #6 FAILED at 90. Hunk #7 FAILED at 109. Hunk #8 succeeded at 114 (offset -9 lines). Hunk #9 succeeded at 246 (offset -9 lines). Hunk #10 succeeded at 257 (offset -9 lines). Hunk #11 succeeded at 274 (offset -9 lines). Hunk #12 FAILED at 293. Hunk #13 succeeded at 302 (offset -9 lines). Hunk #14 FAILED at 324. Hunk #15 succeeded at 505 (offset -9 lines). Hunk #16 succeeded at 518 (offset -9 lines). 5 out of 16 hunks FAILED -- saving rejects to file src/backend/optimizer/util/restrictinfo.c.rej patching file src/include/nodes/pathnodes.h Hunk #1 succeeded at 2215 (offset 145 lines). Hunk #2 succeeded at 2601 (offset 153 lines). Hunk #3 succeeded at 2697 (offset 153 lines). Hunk #4 succeeded at 2843 (offset 153 lines). Hunk #5 succeeded at 3359 (offset 153 lines). Hunk #6 succeeded at 3370 (offset 153 lines). patching file src/include/optimizer/cost.h Hunk #1 succeeded at 192 (offset 9 lines). patching file src/include/optimizer/restrictinfo.h Hunk #1 FAILED at 19. Hunk #2 succeeded at 52 (offset 11 lines). 1 out of 2 hunks FAILED -- saving rejects to file src/include/optimizer/restrictinfo.h.rej Unstaged changes after reset: M contrib/postgres_fdw/postgres_fdw.c M src/backend/optimizer/path/costsize.c M src/backend/optimizer/path/equivclass.c M src/backend/optimizer/path/joinpath.c M src/backend/optimizer/path/joinrels.c M src/backend/optimizer/plan/analyzejoins.c M src/backend/optimizer/plan/createplan.c M src/backend/optimizer/plan/initsplan.c M src/backend/optimizer/plan/subselect.c M src/backend/optimizer/util/inherit.c M src/backend/optimizer/util/joininfo.c M src/backend/optimizer/util/orclauses.c M src/backend/optimizer/util/pathnode.c M src/backend/optimizer/util/relnode.c M src/backend/optimizer/util/restrictinfo.c M src/include/nodes/pathnodes.h M src/include/optimizer/cost.h M src/include/optimizer/restrictinfo.h Removing src/backend/optimizer/util/relnode.c.rej Removing src/backend/optimizer/util/restrictinfo.c.rej Removing src/include/optimizer/restrictinfo.h.rej === using 'git apply' to apply 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 ff507331a06,f03c8c2fa21..00000000000 --- 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 a80083d2323,5d05287bf3c..00000000000 --- 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 } /*