diff --git a/contrib/pg_stat_statements/expected/level_tracking.out b/contrib/pg_stat_statements/expected/level_tracking.out index 35e889fabd2..a15d897e59b 100644 --- a/contrib/pg_stat_statements/expected/level_tracking.out +++ b/contrib/pg_stat_statements/expected/level_tracking.out @@ -1543,6 +1543,13 @@ SELECT pg_stat_statements_reset() IS NOT NULL AS t; -- planner - all-level tracking. SET pg_stat_statements.track_planning = TRUE; +-- Release all cached plans before the first function call. This matters +-- when debug_discard_caches is enabled, which would store a normalized +-- version of the inner query of the function. Forcing a plan rebuild +-- ensures that a normalized version is always stored with the stats entry, +-- while checking that the nesting level is computed correctly in the +-- planner hook. +DISCARD PLANS; SELECT PLUS_THREE(8); plus_three ------------ @@ -1560,7 +1567,7 @@ SELECT toplevel, calls, rows, plans, query FROM pg_stat_statements toplevel | calls | rows | plans | query ----------+-------+------+-------+-------------------------------------------------------------------- t | 2 | 2 | 2 | SELECT PLUS_THREE($1) - f | 2 | 2 | 2 | SELECT i + 3 LIMIT 1 + f | 2 | 2 | 2 | SELECT i + $2 LIMIT $3 t | 1 | 1 | 0 | SELECT pg_stat_statements_reset() IS NOT NULL AS t t | 0 | 0 | 1 | SELECT toplevel, calls, rows, plans, query FROM pg_stat_statements+ | | | | ORDER BY query COLLATE "C" diff --git a/contrib/pg_stat_statements/sql/level_tracking.sql b/contrib/pg_stat_statements/sql/level_tracking.sql index 8dd3fc2df08..003efb8184b 100644 --- a/contrib/pg_stat_statements/sql/level_tracking.sql +++ b/contrib/pg_stat_statements/sql/level_tracking.sql @@ -435,7 +435,13 @@ SELECT pg_stat_statements_reset() IS NOT NULL AS t; -- planner - all-level tracking. SET pg_stat_statements.track_planning = TRUE; - +-- Release all cached plans before the first function call. This matters +-- when debug_discard_caches is enabled, which would store a normalized +-- version of the inner query of the function. Forcing a plan rebuild +-- ensures that a normalized version is always stored with the stats entry, +-- while checking that the nesting level is computed correctly in the +-- planner hook. +DISCARD PLANS; SELECT PLUS_THREE(8); SELECT PLUS_THREE(10);