aboutsummaryrefslogtreecommitdiff
path: root/src/include/optimizer
diff options
context:
space:
mode:
authorFujii Masao <fujii@postgresql.org>2020-03-30 13:51:05 +0900
committerFujii Masao <fujii@postgresql.org>2020-03-30 13:51:05 +0900
commit6aba63ef3e606db71beb596210dd95fa73c44ce2 (patch)
tree0edd3aa8848fa5785287551a9a36e6356bcd8696 /src/include/optimizer
parent4a539a25ebfc48329fd656a95f3c1eb2cda38af3 (diff)
downloadpostgresql-6aba63ef3e606db71beb596210dd95fa73c44ce2.tar.gz
postgresql-6aba63ef3e606db71beb596210dd95fa73c44ce2.zip
Allow the planner-related functions and hook to accept the query string.
This commit adds query_string argument into the planner-related functions and hook and allows us to pass the query string to them. Currently there is no user of the query string passed. But the upcoming patch for the planning counters will add the planning hook function into pg_stat_statements and the function will need the query string. So this change will be necessary for that patch. Also this change is useful for some extensions that want to use the query string in their planner hook function. Author: Pascal Legrand, Julien Rouhaud Reviewed-by: Yoshikazu Imai, Tom Lane, Fujii Masao Discussion: https://postgr.es/m/CAOBaU_bU1m3_XF5qKYtSj1ua4dxd=FWDyh2SH4rSJAUUfsGmAQ@mail.gmail.com Discussion: https://postgr.es/m/1583789487074-0.post@n3.nabble.com
Diffstat (limited to 'src/include/optimizer')
-rw-r--r--src/include/optimizer/optimizer.h3
-rw-r--r--src/include/optimizer/planner.h4
2 files changed, 5 insertions, 2 deletions
diff --git a/src/include/optimizer/optimizer.h b/src/include/optimizer/optimizer.h
index 5283995df8f..3e4171056e8 100644
--- a/src/include/optimizer/optimizer.h
+++ b/src/include/optimizer/optimizer.h
@@ -102,7 +102,8 @@ typedef enum
extern int force_parallel_mode;
extern bool parallel_leader_participation;
-extern struct PlannedStmt *planner(Query *parse, int cursorOptions,
+extern struct PlannedStmt *planner(Query *parse, const char *query_string,
+ int cursorOptions,
struct ParamListInfoData *boundParams);
extern Expr *expression_planner(Expr *expr);
diff --git a/src/include/optimizer/planner.h b/src/include/optimizer/planner.h
index 93df62d1361..beb7dbbcbe8 100644
--- a/src/include/optimizer/planner.h
+++ b/src/include/optimizer/planner.h
@@ -24,6 +24,7 @@
/* Hook for plugins to get control in planner() */
typedef PlannedStmt *(*planner_hook_type) (Query *parse,
+ const char *query_string,
int cursorOptions,
ParamListInfo boundParams);
extern PGDLLIMPORT planner_hook_type planner_hook;
@@ -37,7 +38,8 @@ typedef void (*create_upper_paths_hook_type) (PlannerInfo *root,
extern PGDLLIMPORT create_upper_paths_hook_type create_upper_paths_hook;
-extern PlannedStmt *standard_planner(Query *parse, int cursorOptions,
+extern PlannedStmt *standard_planner(Query *parse, const char *query_string,
+ int cursorOptions,
ParamListInfo boundParams);
extern PlannerInfo *subquery_planner(PlannerGlobal *glob, Query *parse,