From ef1e294f0c3bceee5417fdf836176281f7652f95 Mon Sep 17 00:00:00 2001
From: William Bernbaum <wbernbaum@dwdev.com>
Date: Tue, 25 Aug 2026 19:06:37 -0700
Subject: [PATCH 1/4] semijoin-v1-patch-a

Co-authored-by: Cursor <cursoragent@cursor.com>
---
 src/backend/optimizer/plan/initsplan.c | 4 +---
 src/include/optimizer/planmain.h       | 2 ++
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/optimizer/plan/initsplan.c b/src/backend/optimizer/plan/initsplan.c
index f08a918146c..f2ee16ec803 100644
--- a/src/backend/optimizer/plan/initsplan.c
+++ b/src/backend/optimizer/plan/initsplan.c
@@ -117,8 +117,6 @@ static SpecialJoinInfo *make_outerjoininfo(PlannerInfo *root,
 										   Relids inner_join_rels,
 										   JoinType jointype, Index ojrelid,
 										   List *clause);
-static void compute_semijoin_info(PlannerInfo *root, SpecialJoinInfo *sjinfo,
-								  List *clause);
 static void deconstruct_distribute_oj_quals(PlannerInfo *root,
 											List *jtitems,
 											JoinTreeItem *jtitem);
@@ -2482,7 +2480,7 @@ make_outerjoininfo(PlannerInfo *root,
  * Note: this relies on only the jointype and syn_righthand fields of the
  * SpecialJoinInfo; the rest may not be set yet.
  */
-static void
+void
 compute_semijoin_info(PlannerInfo *root, SpecialJoinInfo *sjinfo, List *clause)
 {
 	List	   *semi_operators;
diff --git a/src/include/optimizer/planmain.h b/src/include/optimizer/planmain.h
index 71c043a25e8..850277f2f2f 100644
--- a/src/include/optimizer/planmain.h
+++ b/src/include/optimizer/planmain.h
@@ -104,6 +104,8 @@ extern RestrictInfo *build_implied_join_equality(PlannerInfo *root,
 												 Index security_level);
 extern void rebuild_joinclause_attr_needed(PlannerInfo *root);
 extern void match_foreign_keys_to_quals(PlannerInfo *root);
+extern void compute_semijoin_info(PlannerInfo *root, SpecialJoinInfo *sjinfo,
+								  List *clause);
 
 /*
  * prototypes for plan/analyzejoins.c
