v14-0002-Pass-cursorOptions-to-planner_setup_hook.patch

application/octet-stream

Filename: v14-0002-Pass-cursorOptions-to-planner_setup_hook.patch
Type: application/octet-stream
Part: 3
Message: Re: pg_plan_advice

Patch

Same data as JSON: GET /api/v1/attachments/:id/patch the parsed metadata as JSON — format, series position, per-file stats; never the diff bytes. API reference →
Format: format-patch
Series: patch v14-0002
Subject: Pass cursorOptions to planner_setup_hook.
File+
src/backend/optimizer/plan/planner.c 2 1
src/include/optimizer/planner.h 1 0
From 688ed1cf8d06ac4843c04fa92abd42cd08f26d33 Mon Sep 17 00:00:00 2001
From: Robert Haas <rhaas@postgresql.org>
Date: Wed, 28 Jan 2026 12:59:29 -0500
Subject: [PATCH v14 02/10] Pass cursorOptions to planner_setup_hook.

Commit 94f3ad3961a2cb32d30c79f01a70db4caff13318 failed to do this
because I couldn't think of a use for the information, but this has
proven to be short-sighted. Best to fix it before this code is
officially released.

Now, the only argument to standard_planenr that isn't passed to
planner_setup_hook is boundParams, but that is accessible via
glob->boundParams, and so doesn't need to be passed separately.
---
 src/backend/optimizer/plan/planner.c | 3 ++-
 src/include/optimizer/planner.h      | 1 +
 2 files changed, 3 insertions(+), 1 deletion(-)

diff --git a/src/backend/optimizer/plan/planner.c b/src/backend/optimizer/plan/planner.c
index 757bdc7b1de..0c93f41ffff 100644
--- a/src/backend/optimizer/plan/planner.c
+++ b/src/backend/optimizer/plan/planner.c
@@ -511,7 +511,8 @@ standard_planner(Query *parse, const char *query_string, int cursorOptions,
 
 	/* Allow plugins to take control after we've initialized "glob" */
 	if (planner_setup_hook)
-		(*planner_setup_hook) (glob, parse, query_string, &tuple_fraction, es);
+		(*planner_setup_hook) (glob, parse, query_string, cursorOptions,
+							   &tuple_fraction, es);
 
 	/* primary planning entry point (may recurse for subqueries) */
 	root = subquery_planner(glob, parse, NULL, NULL, false, tuple_fraction,
diff --git a/src/include/optimizer/planner.h b/src/include/optimizer/planner.h
index ae3f7f2edb6..80509773c01 100644
--- a/src/include/optimizer/planner.h
+++ b/src/include/optimizer/planner.h
@@ -35,6 +35,7 @@ extern PGDLLIMPORT planner_hook_type planner_hook;
 /* Hook for plugins to get control after PlannerGlobal is initialized */
 typedef void (*planner_setup_hook_type) (PlannerGlobal *glob, Query *parse,
 										 const char *query_string,
+										 int cursorOptions,
 										 double *tuple_fraction,
 										 ExplainState *es);
 extern PGDLLIMPORT planner_setup_hook_type planner_setup_hook;
-- 
2.51.0