Propagate query IDs of utility statements in functions
authorMichael Paquier <michael@paquier.xyz>
Fri, 19 Jul 2024 01:21:21 +0000 (10:21 +0900)
committerMichael Paquier <michael@paquier.xyz>
Fri, 19 Jul 2024 01:21:21 +0000 (10:21 +0900)
commit38e271d3c2e8c3bfa4d57fd81c3e47b40f1f5eb3
tree3c4c07e6c0b02fb1e701383937763764e8f250ac
parent2b5819e2b4d6c69676c61ee799fd9590be2308ce
Propagate query IDs of utility statements in functions

For utility statements defined within a function, the query tree is
copied to a PlannedStmt as utility commands do not require planning.
However, the query ID was missing from the information passed down.

This leads to plugins relying on the query ID like pg_stat_statements to
not be able to track utility statements within function calls.  Tests
are added to check this behavior, depending on pg_stat_statements.track.

This is an old bug.  Now, query IDs for utilities are compiled using
their parsed trees rather than the query string since v16
(3db72ebcbe20), leading to less bloat with utilities, so backpatch down
only to this version.

Author: Anthonin Bonnefoy
Discussion: https://postgr.es/m/CAO6_XqrGp-uwBqi3vBPLuRULKkddjC7R5QZCgsFren=8E+m2Sg@mail.gmail.com
Backpatch-through: 16
contrib/pg_stat_statements/expected/level_tracking.out
contrib/pg_stat_statements/sql/level_tracking.sql
src/backend/executor/functions.c