From 4685977cc51c91dda0f76b1ef71ba02823a57a1e Mon Sep 17 00:00:00 2001 From: Robert Haas Date: Wed, 8 Oct 2025 09:07:49 -0400 Subject: Add extension_state member to PlannedStmt. Extensions can stash data computed at plan time into this list using planner_shutdown_hook (or perhaps other mechanisms) and then access it from any code that has access to the PlannedStmt (such as explain hooks), allowing for extensible debugging and instrumentation of plans. Reviewed-by: Andrei Lepikhov Reviewed-by: Tom Lane Discussion: http://postgr.es/m/CA+TgmoYWKHU2hKr62Toyzh-kTDEnMDeLw7gkOOnjL-TnOUq0kQ@mail.gmail.com --- src/include/nodes/plannodes.h | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'src') diff --git a/src/include/nodes/plannodes.h b/src/include/nodes/plannodes.h index 3d196f5078e..77ec2bc10b2 100644 --- a/src/include/nodes/plannodes.h +++ b/src/include/nodes/plannodes.h @@ -149,6 +149,15 @@ typedef struct PlannedStmt /* non-null if this is utility stmt */ Node *utilityStmt; + /* + * DefElem objects added by extensions, e.g. using planner_shutdown_hook + * + * Set each DefElem's defname to the name of the plugin or extension, and + * the argument to a tree of nodes that all have copy and read/write + * support. + */ + List *extension_state; + /* statement location in source string (copied from Query) */ /* start location, or -1 if unknown */ ParseLoc stmt_location; -- cgit v1.2.3