aboutsummaryrefslogtreecommitdiff
path: root/src/backend/executor/execMain.c
diff options
context:
space:
mode:
authorMichael Paquier <michael@paquier.xyz>2024-09-18 14:43:37 +0900
committerMichael Paquier <michael@paquier.xyz>2024-09-18 14:43:37 +0900
commit24f5205948093a96edf8213294b3d585ac3fe1fb (patch)
tree2d90b0b5871de21cae2959158c25335f9319fb8c /src/backend/executor/execMain.c
parent4f08ab55457751308ffd8d33e82155758cd0e304 (diff)
downloadpostgresql-24f5205948093a96edf8213294b3d585ac3fe1fb.tar.gz
postgresql-24f5205948093a96edf8213294b3d585ac3fe1fb.zip
Add some sanity checks in executor for query ID reporting
This commit adds three sanity checks in code paths of the executor where it is possible to use hooks, checking that a query ID is reported in pg_stat_activity if compute_query_id is enabled: - ExecutorRun() - ExecutorFinish() - ExecutorEnd() This causes the test in pg_stat_statements added in 933848d16dc9 to complain immediately in ExecutorRun(). The idea behind this commit is to help extensions to detect if they are missing query ID reports when a query goes through the executor. Perhaps this will prove to be a bad idea, but let's see where this experience goes in v18 and newer versions. Reviewed-by: Sami Imseih Discussion: https://postgr.es/m/ZuJb5xCKHH0A9tMN@paquier.xyz
Diffstat (limited to 'src/backend/executor/execMain.c')
-rw-r--r--src/backend/executor/execMain.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/backend/executor/execMain.c b/src/backend/executor/execMain.c
index 7042ca6c600..713cf3e802c 100644
--- a/src/backend/executor/execMain.c
+++ b/src/backend/executor/execMain.c
@@ -50,6 +50,7 @@
#include "foreign/fdwapi.h"
#include "mb/pg_wchar.h"
#include "miscadmin.h"
+#include "nodes/queryjumble.h"
#include "parser/parse_relation.h"
#include "rewrite/rewriteHandler.h"
#include "tcop/utility.h"
@@ -295,6 +296,9 @@ ExecutorRun(QueryDesc *queryDesc,
ScanDirection direction, uint64 count,
bool execute_once)
{
+ /* If enabled, the query ID should be set. */
+ Assert(!IsQueryIdEnabled() || pgstat_get_my_query_id() != 0);
+
if (ExecutorRun_hook)
(*ExecutorRun_hook) (queryDesc, direction, count, execute_once);
else
@@ -403,6 +407,9 @@ standard_ExecutorRun(QueryDesc *queryDesc,
void
ExecutorFinish(QueryDesc *queryDesc)
{
+ /* If enabled, the query ID should be set. */
+ Assert(!IsQueryIdEnabled() || pgstat_get_my_query_id() != 0);
+
if (ExecutorFinish_hook)
(*ExecutorFinish_hook) (queryDesc);
else
@@ -463,6 +470,9 @@ standard_ExecutorFinish(QueryDesc *queryDesc)
void
ExecutorEnd(QueryDesc *queryDesc)
{
+ /* If enabled, the query ID should be set. */
+ Assert(!IsQueryIdEnabled() || pgstat_get_my_query_id() != 0);
+
if (ExecutorEnd_hook)
(*ExecutorEnd_hook) (queryDesc);
else