Re: pg_stat_statements: add missing tests for nesting_level

From: Alexander Lakhin <exclusion(at)gmail(dot)com>
To: Michael Paquier <michael(at)paquier(dot)xyz>, Sami Imseih <samimseih(at)gmail(dot)com>
Cc: PostgreSQL Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org>
Subject: Re: pg_stat_statements: add missing tests for nesting_level
Date: 2026-01-25 06:00:00
Message-ID: 82dd02bb-4e0f-40ad-a60b-baa1763ff0bd@gmail.com
Views: Whole Thread | Raw Message | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Hello Michael and Sami,

21.01.2026 02:41, Michael Paquier wrote:
> On Tue, Jan 20, 2026 at 06:08:14PM -0600, Sami Imseih wrote:
>> While looking at pg_stat_statements nesting_level, I realized that there
>> are missing nesting_level tests for pgss_planner and pgss_ExecutorFinish.
>> That is, if you remove nesting_level++ and nesting_level-- in those 2 hooks,
>> the tests will still succeed.
>>
>> For pgss_planner the nesting_level updates missing tests are the ones
>> when track_planning is enabled.
>>
>> Attached is a quick patch to add coverage.
> Confirmed these two deficiencies, nice catch. If one does the same
> removal of the nesting level calculation in other code paths like
> pgss_ExecutorRun(), one get complaints. Will see to get this addition
> done.

Two buildfarm animals [1], [2] say that that addition is incompatible with
the CLOBBER_CACHE_ALWAYS mode:
not ok 5     - level_tracking                          52571 ms

diff -U3 /home/buildfarm/avocet/buildroot/HEAD/pgsql.build/contrib/pg_stat_statements/expected/level_tracking.out
/home/buildfarm/avocet/buildroot/HEAD/pgsql.build/contrib/pg_stat_statements/results/level_tracking.out
--- /home/buildfarm/avocet/buildroot/HEAD/pgsql.build/contrib/pg_stat_statements/expected/level_tracking.out 2026-01-22
01:59:12.213054121 +0100
+++ /home/buildfarm/avocet/buildroot/HEAD/pgsql.build/contrib/pg_stat_statements/results/level_tracking.out 2026-01-22
05:24:17.363666155 +0100
@@ -1560,7 +1560,7 @@
  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"

I can reproduce this locally with no extra tricks. Could you please adjust
the test for this mode?

[1] https://buildfarm.postgresql.org/cgi-bin/show_log.pl?nm=avocet&dt=2026-01-22%2000%3A58%3A36
[2] https://buildfarm.postgresql.org/cgi-bin/show_log.pl?nm=trilobite&dt=2026-01-24%2023%3A10%3A13

Best regards,
Alexander

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Junwang Zhao 2026-01-25 06:48:15 [PATCH] Replace COUNT(NULL) with '0'::bigint
Previous Message Meng Zhang 2026-01-25 04:09:27 Fix a reference error for window functions: In the function 'find_window_functions', the deduplication logic should be removed