fix some stuff
authorRobert Haas <rhaas@postgresql.org>
Wed, 21 May 2025 18:32:16 +0000 (14:32 -0400)
committerRobert Haas <rhaas@postgresql.org>
Wed, 21 May 2025 18:32:16 +0000 (14:32 -0400)
contrib/pg_plan_advice/pg_plan_advice.c
contrib/pg_plan_advice/pgpa_walker.c
contrib/pg_plan_advice/pgpa_walker.h [new file with mode: 0644]

index 293ba7f915faa39ca1481d13778f99dc68af6bcf..4c867a136940590e407fb9669806eab10e586ddb 100644 (file)
@@ -12,7 +12,7 @@
 #include "postgres.h"
 
 #include "funcapi.h"
-#include "pgpa_join.h"
+#include "pgpa_walker.h"
 
 PG_MODULE_MAGIC;
 
@@ -20,7 +20,7 @@ PG_MODULE_MAGIC;
 static ExecutorStart_hook_type prev_ExecutorStart = NULL;
 
 static bool pg_plan_advice_ExecutorStart(QueryDesc *queryDesc, int eflags);
-static void pgpa_check_plan(PlannedStmt *pstmt, Plan *plan);
+static void pgpa_check_plan(PlannedStmt *pstmt);
 
 /*
  * Initialize this module
@@ -37,7 +37,7 @@ pg_plan_advice_ExecutorStart(QueryDesc *queryDesc, int eflags)
 {
        PlannedStmt *pstmt = queryDesc->plannedstmt;
 
-       pgpa_check_plan(pstmt, pstmt->planTree);
+       pgpa_check_plan(pstmt);
 
        if (prev_ExecutorStart)
                return prev_ExecutorStart(queryDesc, eflags);
@@ -46,11 +46,11 @@ pg_plan_advice_ExecutorStart(QueryDesc *queryDesc, int eflags)
 }
 
 static void
-pgpa_check_plan(PlannedStmt *pstmt, Plan *plan)
+pgpa_check_plan(PlannedStmt *pstmt)
 {
-       if (pgpa_get_join_class(plan) == PGPA_UNROLLED_JOIN)
-       {
-               (void) pgpa_make_unrolled_join(pstmt, plan);
-               return;
-       }
+       pgpa_plan_walker_context context;
+
+       memset(&context, 0, sizeof(pgpa_plan_walker_context));
+       context.pstmt = pstmt;
+       pgpa_plan_walker(&context, pstmt->planTree, NULL);
 }
index 9fc21f8ad0b5f33e2b7a213f83fdbc3a59ec3fd8..4d2e3a95bd301c7c324b175229eea8576f229da9 100644 (file)
@@ -1,19 +1,10 @@
 #include "postgres.h"
 
 #include "pgpa_join.h"
+#include "pgpa_walker.h"
 
 #include "nodes/plannodes.h"
 
-typedef struct pgpa_plan_walker_context
-{
-       PlannedStmt *pstmt;
-       List *unrolled_joins;
-} pgpa_plan_walker_context;
-
-extern void
-pgpa_plan_walker(pgpa_plan_walker_context *context, Plan *plan,
-                                pgpa_join_unroller *join_unroller);
-
 void
 pgpa_plan_walker(pgpa_plan_walker_context *context, Plan *plan,
                                 pgpa_join_unroller *join_unroller)
diff --git a/contrib/pg_plan_advice/pgpa_walker.h b/contrib/pg_plan_advice/pgpa_walker.h
new file mode 100644 (file)
index 0000000..b50bb68
--- /dev/null
@@ -0,0 +1,11 @@
+#include "pgpa_join.h"
+
+typedef struct pgpa_plan_walker_context
+{
+       PlannedStmt *pstmt;
+       List *unrolled_joins;
+} pgpa_plan_walker_context;
+
+extern void
+pgpa_plan_walker(pgpa_plan_walker_context *context, Plan *plan,
+                                pgpa_join_unroller *join_unroller);