=== Applying patches on top of PostgreSQL commit ID a0a0c0c20ec5f8787bb1be5f476c4e59f6810634 === /etc/rc.d/jail: WARNING: Per-jail configuration via jail_* variables is obsolete. Please consider migrating to /etc/jail.conf. Wed May 6 07:24:21 UTC 2026 On branch cf/6699 nothing to commit, working tree clean === using 'git am' to apply patch ./0001-Allow-SJE-to-recognize-GiST-backed-temporal-primary-.patch === Applying: Allow SJE to recognize GiST-backed temporal primary keys Using index info to reconstruct a base tree... M src/backend/optimizer/path/indxpath.c Falling back to patching base and 3-way merge... Auto-merging src/backend/optimizer/path/indxpath.c CONFLICT (content): Merge conflict in src/backend/optimizer/path/indxpath.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 Allow SJE to recognize GiST-backed temporal primary keys 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". === using patch(1) to apply patch ./0001-Allow-SJE-to-recognize-GiST-backed-temporal-primary-.patch === patching file src/backend/optimizer/path/indxpath.c Hunk #1 FAILED at 4227. 1 out of 1 hunk FAILED -- saving rejects to file src/backend/optimizer/path/indxpath.c.rej patching file src/test/regress/expected/join.out patching file src/test/regress/sql/join.sql Unstaged changes after reset: M src/test/regress/expected/join.out M src/test/regress/sql/join.sql Removing src/backend/optimizer/path/indxpath.c.rej === using 'git apply' to apply patch ./0001-Allow-SJE-to-recognize-GiST-backed-temporal-primary-.patch === Applied patch to 'src/backend/optimizer/path/indxpath.c' with conflicts. Applied patch to 'src/test/regress/expected/join.out' cleanly. Applied patch to 'src/test/regress/sql/join.sql' cleanly. U src/backend/optimizer/path/indxpath.c diff --cc src/backend/optimizer/path/indxpath.c index 3f5d4fa3182,990ada34a00..00000000000 --- a/src/backend/optimizer/path/indxpath.c +++ b/src/backend/optimizer/path/indxpath.c @@@ -4226,9 -4226,18 +4226,22 @@@ relation_has_unique_index_for(PlannerIn * The condition's equality operator must be a member of the * index opfamily, else it is not asserting the right kind of * equality behavior for this index. We check this first ++<<<<<<< ours + * since it's probably the cheapest test. ++======= + * since it's probably cheaper than match_index_to_operand(). + * + * For non-btree unique indexes (e.g., GiST-backed temporal + * primary keys created with WITHOUT OVERLAPS), the index + * opfamily won't appear in mergeopfamilies, which only lists + * btree opfamilies. Fall back to checking whether the + * clause's equality operator is directly a member of the + * index's opfamily. ++>>>>>>> theirs */ - if (!list_member_oid(rinfo->mergeopfamilies, ind->opfamily[c])) + if (!list_member_oid(rinfo->mergeopfamilies, ind->opfamily[c]) && + !op_in_opfamily(castNode(OpExpr, rinfo->clause)->opno, + ind->opfamily[c])) continue; /*