PG-645: pg_stat_monitor crashes PostgreSQL if there is citus ..

Do not look for the query in the hash if no query string is
provided in the planner hook.
pull/425/head
Muhammad Usama 2023-11-01 10:54:35 +05:00
parent 67493acda4
commit 823bfb9aa7
1 changed files with 4 additions and 4 deletions

View File

@ -853,7 +853,6 @@ static PlannedStmt *
pgsm_planner_hook(Query *parse, const char *query_string, int cursorOptions, ParamListInfo boundParams) pgsm_planner_hook(Query *parse, const char *query_string, int cursorOptions, ParamListInfo boundParams)
{ {
PlannedStmt *result; PlannedStmt *result;
pgsmEntry *entry = NULL;
/* /*
@ -868,13 +867,11 @@ pgsm_planner_hook(Query *parse, const char *query_string, int cursorOptions, Par
* So testing the planner nesting level only is not enough to detect real * So testing the planner nesting level only is not enough to detect real
* top level planner call. * top level planner call.
*/ */
if (MemoryContextIsValid(MessageContext))
entry = pgsm_get_entry_for_query(parse->queryId, NULL, query_string, strlen(query_string), true);
if (pgsm_enabled(plan_nested_level + exec_nested_level) && if (pgsm_enabled(plan_nested_level + exec_nested_level) &&
pgsm_track_planning && query_string && parse->queryId != UINT64CONST(0)) pgsm_track_planning && query_string && parse->queryId != UINT64CONST(0))
{ {
pgsmEntry *entry = NULL;
instr_time start; instr_time start;
instr_time duration; instr_time duration;
BufferUsage bufusage_start; BufferUsage bufusage_start;
@ -892,6 +889,9 @@ pgsm_planner_hook(Query *parse, const char *query_string, int cursorOptions, Par
walusage_start = pgWalUsage; walusage_start = pgWalUsage;
INSTR_TIME_SET_CURRENT(start); INSTR_TIME_SET_CURRENT(start);
if (MemoryContextIsValid(MessageContext))
entry = pgsm_get_entry_for_query(parse->queryId, NULL, query_string, strlen(query_string), true);
plan_nested_level++; plan_nested_level++;
PG_TRY(); PG_TRY();
{ {