Merge pull request #84 from darkfronza/PG-197_fix_conflict_pg_stat_statements

PG-197: Fix conflict with pg_stat_statements
This commit is contained in:
Ibrar Ahmed
2021-07-26 18:26:14 +05:00
committed by GitHub

View File

@@ -699,9 +699,17 @@ pgss_planner_hook(Query *parse, const char *query_string, int cursorOptions, Par
plan_nested_level++; plan_nested_level++;
PG_TRY(); PG_TRY();
{ {
if (planner_hook_next) /*
result = planner_hook_next(parse, query_string, cursorOptions, boundParams); * If there is a previous installed hook, then assume it's going to call
result = standard_planner(parse, query_string, cursorOptions, boundParams); * standard_planner() function, otherwise we call the function here.
* This is to avoid calling standard_planner() function twice, since it
* modifies the first argument (Query *), the second call would trigger an
* assertion failure.
*/
if (planner_hook_next)
result = planner_hook_next(parse, query_string, cursorOptions, boundParams);
else
result = standard_planner(parse, query_string, cursorOptions, boundParams);
} }
PG_FINALLY(); PG_FINALLY();
{ {
@@ -734,9 +742,17 @@ pgss_planner_hook(Query *parse, const char *query_string, int cursorOptions, Par
} }
else else
{ {
/*
* If there is a previous installed hook, then assume it's going to call
* standard_planner() function, otherwise we call the function here.
* This is to avoid calling standard_planner() function twice, since it
* modifies the first argument (Query *), the second call would trigger an
* assertion failure.
*/
if (planner_hook_next) if (planner_hook_next)
result = planner_hook_next(parse, query_string, cursorOptions, boundParams); result = planner_hook_next(parse, query_string, cursorOptions, boundParams);
result = standard_planner(parse, query_string, cursorOptions, boundParams); else
result = standard_planner(parse, query_string, cursorOptions, boundParams);
} }
return result; return result;
} }