1
0
mirror of https://github.com/postgres/postgres.git synced 2025-06-20 15:22:23 +03:00

Move pg_stat_statements query jumbling to core.

Add compute_query_id GUC to control whether a query identifier should be
computed by the core (off by default).  It's thefore now possible to
disable core queryid computation and use pg_stat_statements with a
different algorithm to compute the query identifier by using a
third-party module.

To ensure that a single source of query identifier can be used and is
well defined, modules that calculate a query identifier should throw an
error if compute_query_id specified to compute a query id and if a query
idenfitier was already calculated.

Discussion: https://postgr.es/m/20210407125726.tkvjdbw76hxnpwfi@nol

Author: Julien Rouhaud

Reviewed-by: Alvaro Herrera, Nitin Jadhav, Zhihong Yu
This commit is contained in:
Bruce Momjian
2021-04-07 13:06:47 -04:00
parent a282ee68a0
commit 5fd9dfa5f5
13 changed files with 995 additions and 785 deletions

View File

@ -668,6 +668,7 @@ pg_analyze_and_rewrite_params(RawStmt *parsetree,
ParseState *pstate;
Query *query;
List *querytree_list;
JumbleState *jstate = NULL;
Assert(query_string != NULL); /* required as of 8.4 */
@ -686,8 +687,11 @@ pg_analyze_and_rewrite_params(RawStmt *parsetree,
query = transformTopLevelStmt(pstate, parsetree);
if (compute_query_id)
jstate = JumbleQuery(query, query_string);
if (post_parse_analyze_hook)
(*post_parse_analyze_hook) (pstate, query);
(*post_parse_analyze_hook) (pstate, query, jstate);
free_parsestate(pstate);