mirror of
https://github.com/postgres/postgres.git
synced 2025-07-08 11:42:09 +03:00
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
This commit is contained in:
@ -1580,7 +1580,8 @@ BeginCopy(ParseState *pstate,
|
||||
}
|
||||
|
||||
/* plan the query */
|
||||
plan = pg_plan_query(query, CURSOR_OPT_PARALLEL_OK, NULL);
|
||||
plan = pg_plan_query(query, pstate->p_sourcetext,
|
||||
CURSOR_OPT_PARALLEL_OK, NULL);
|
||||
|
||||
/*
|
||||
* With row level security and a user using "COPY relation TO", we
|
||||
|
@ -329,7 +329,8 @@ ExecCreateTableAs(ParseState *pstate, CreateTableAsStmt *stmt,
|
||||
Assert(query->commandType == CMD_SELECT);
|
||||
|
||||
/* plan the query */
|
||||
plan = pg_plan_query(query, CURSOR_OPT_PARALLEL_OK, params);
|
||||
plan = pg_plan_query(query, pstate->p_sourcetext,
|
||||
CURSOR_OPT_PARALLEL_OK, params);
|
||||
|
||||
/*
|
||||
* Use a snapshot with an updated command ID to ensure this query sees
|
||||
|
@ -376,7 +376,7 @@ ExplainOneQuery(Query *query, int cursorOptions,
|
||||
INSTR_TIME_SET_CURRENT(planstart);
|
||||
|
||||
/* plan the query */
|
||||
plan = pg_plan_query(query, cursorOptions, params);
|
||||
plan = pg_plan_query(query, queryString, cursorOptions, params);
|
||||
|
||||
INSTR_TIME_SET_CURRENT(planduration);
|
||||
INSTR_TIME_SUBTRACT(planduration, planstart);
|
||||
|
@ -751,7 +751,7 @@ execute_sql_string(const char *sql)
|
||||
NULL,
|
||||
0,
|
||||
NULL);
|
||||
stmt_list = pg_plan_queries(stmt_list, CURSOR_OPT_PARALLEL_OK, NULL);
|
||||
stmt_list = pg_plan_queries(stmt_list, sql, CURSOR_OPT_PARALLEL_OK, NULL);
|
||||
|
||||
foreach(lc2, stmt_list)
|
||||
{
|
||||
|
@ -391,7 +391,7 @@ refresh_matview_datafill(DestReceiver *dest, Query *query,
|
||||
CHECK_FOR_INTERRUPTS();
|
||||
|
||||
/* Plan the query which will generate data for the refresh. */
|
||||
plan = pg_plan_query(query, 0, NULL);
|
||||
plan = pg_plan_query(query, queryString, 0, NULL);
|
||||
|
||||
/*
|
||||
* Use a snapshot with an updated command ID to ensure this query sees
|
||||
|
@ -90,7 +90,7 @@ PerformCursorOpen(ParseState *pstate, DeclareCursorStmt *cstmt, ParamListInfo pa
|
||||
elog(ERROR, "non-SELECT statement in DECLARE CURSOR");
|
||||
|
||||
/* Plan the query, applying the specified options */
|
||||
plan = pg_plan_query(query, cstmt->options, params);
|
||||
plan = pg_plan_query(query, pstate->p_sourcetext, cstmt->options, params);
|
||||
|
||||
/*
|
||||
* Create a portal and copy the plan and query string into its memory.
|
||||
|
Reference in New Issue
Block a user