pg.ddx.io  pgsql-committers@postgresql.org mailing list archive  
help / color / mirror / Atom feed
From: Tom Lane <tgl@sss.pgh.pa.us>
To: pgsql-committers@lists.postgresql.org
Subject: pgsql: Fix some issues with tracking nesting level in pg_stat_statement
Date: Wed, 08 Nov 2023 17:01:44 +0000
Message-ID: <E1r0lw0-004VOd-BE@gemulon.postgresql.org> (raw)

Fix some issues with tracking nesting level in pg_stat_statements.

When we decide that we don't want to track execution time of a
specific planner or ProcessUtility call, we still have to increment
the nesting depth, or we'll make the wrong determination of whether
we are at top level when considering nested statements.  (PREPARE
and EXECUTE are exceptions, for reasons explained in the code.)

Counting planner nesting depth separately from executor nesting depth
was a mistake: it causes us to make the wrong determination of whether
we are at top level when considering nested statements that get
executed during planning (as a result of constant-folding of
functions, for example).  Merge those counters into one.

In passing, get rid of the PGSS_HANDLED_UTILITY macro in favor of
explicitly listing statement types.  It seems somewhat coincidental
that PREPARE and EXECUTE are handled alike in each of the places where
that was used: the reasoning tends to be different for each one.
Thus, the macro seems as likely to encourage future bugs as prevent
them, since it's quite unclear whether any future statement type that
might need special-casing here would also need the same choices at
each spot.

Sergei Kornilov, Julien Rouhaud, and Tom Lane, per bug #17552 from
Maxim Boguk.  This is pretty clearly a bug fix, but it's also a
behavioral change that might surprise somebody, so no back-patch.

Discussion: https://postgr.es/m/17552-213b534c56ab5d02@postgresql.org

Branch
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/76db9cb6368eb553ec334fe05e1258f2439bf07f

Modified Files
--------------
.../pg_stat_statements/expected/level_tracking.out | 110 +++++++++++++++++-
contrib/pg_stat_statements/pg_stat_statements.c    | 126 +++++++++++++--------
contrib/pg_stat_statements/sql/level_tracking.sql  |  53 ++++++++-
3 files changed, 242 insertions(+), 47 deletions(-)



Message-ID: <E1r0lw0-004VOd-BE@gemulon.postgresql.org>
Permalink:  ../E1r0lw0-004VOd-BE@gemulon.postgresql.org/
Also on:    postgresql.org/message-id/E1r0lw0-004VOd-BE@gemulon.postgresql.org

 · 

reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: pgsql-committers@postgresql.org
  Cc: tgl@sss.pgh.pa.us, pgsql-committers@lists.postgresql.org
  Subject: Re: pgsql: Fix some issues with tracking nesting level in pg_stat_statement
  In-Reply-To: <E1r0lw0-004VOd-BE@gemulon.postgresql.org>

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox