mirror of
https://github.com/postgres/postgres.git
synced 2025-09-02 04:21:28 +03:00
Show names of DEALLOCATE as constants in pg_stat_statements
This commit switches query jumbling so as prepared statement names are
treated as constants in DeallocateStmt. A boolean field is added to
DeallocateStmt to make a distinction between ALL and named prepared
statements, as "name" was used to make this difference before, NULL
meaning DEALLOCATE ALL.
Prior to this commit, DEALLOCATE was not tracked in pg_stat_statements,
for the reason that it was not possible to treat its name parameter as a
constant. Now that query jumbling applies to all the utility nodes,
this reason does not apply anymore.
Like 638d42a3c5
, this can be a huge advantage for monitoring where
prepared statement names are randomly generated, preventing bloat in
pg_stat_statements. A couple of tests are added to track the new
behavior.
Author: Dagfinn Ilmari Mannsåker, Michael Paquier
Reviewed-by: Julien Rouhaud
Discussion: https://postgr.es/m/ZMhT9kNtJJsHw6jK@paquier.xyz
This commit is contained in:
@@ -11953,6 +11953,8 @@ DeallocateStmt: DEALLOCATE name
|
||||
DeallocateStmt *n = makeNode(DeallocateStmt);
|
||||
|
||||
n->name = $2;
|
||||
n->isall = false;
|
||||
n->location = @2;
|
||||
$$ = (Node *) n;
|
||||
}
|
||||
| DEALLOCATE PREPARE name
|
||||
@@ -11960,6 +11962,8 @@ DeallocateStmt: DEALLOCATE name
|
||||
DeallocateStmt *n = makeNode(DeallocateStmt);
|
||||
|
||||
n->name = $3;
|
||||
n->isall = false;
|
||||
n->location = @3;
|
||||
$$ = (Node *) n;
|
||||
}
|
||||
| DEALLOCATE ALL
|
||||
@@ -11967,6 +11971,8 @@ DeallocateStmt: DEALLOCATE name
|
||||
DeallocateStmt *n = makeNode(DeallocateStmt);
|
||||
|
||||
n->name = NULL;
|
||||
n->isall = true;
|
||||
n->location = -1;
|
||||
$$ = (Node *) n;
|
||||
}
|
||||
| DEALLOCATE PREPARE ALL
|
||||
@@ -11974,6 +11980,8 @@ DeallocateStmt: DEALLOCATE name
|
||||
DeallocateStmt *n = makeNode(DeallocateStmt);
|
||||
|
||||
n->name = NULL;
|
||||
n->isall = true;
|
||||
n->location = -1;
|
||||
$$ = (Node *) n;
|
||||
}
|
||||
;
|
||||
|
Reference in New Issue
Block a user