From 823bfb9aa78c401b3d6705c5b56ed7be2c414ea6 Mon Sep 17 00:00:00 2001 From: Muhammad Usama Date: Wed, 1 Nov 2023 10:54:35 +0500 Subject: [PATCH] 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. --- pg_stat_monitor.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pg_stat_monitor.c b/pg_stat_monitor.c index d6f5d18a..8f965722 100644 --- a/pg_stat_monitor.c +++ b/pg_stat_monitor.c @@ -853,7 +853,6 @@ static PlannedStmt * pgsm_planner_hook(Query *parse, const char *query_string, int cursorOptions, ParamListInfo boundParams) { 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 * 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) && pgsm_track_planning && query_string && parse->queryId != UINT64CONST(0)) { + pgsmEntry *entry = NULL; instr_time start; instr_time duration; BufferUsage bufusage_start; @@ -892,6 +889,9 @@ pgsm_planner_hook(Query *parse, const char *query_string, int cursorOptions, Par walusage_start = pgWalUsage; 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++; PG_TRY(); {