diff --git a/contrib/pg_stat_statements/expected/dml.out b/contrib/pg_stat_statements/expected/dml.out index acc2c5e5241..347cb8699e4 100644 --- a/contrib/pg_stat_statements/expected/dml.out +++ b/contrib/pg_stat_statements/expected/dml.out @@ -80,7 +80,7 @@ SELECT calls, rows, query FROM pg_stat_statements ORDER BY query COLLATE "C"; 1 | 10 | INSERT INTO pgss_dml_tab VALUES(generate_series($1, $2), $3) 1 | 12 | SELECT * FROM pgss_dml_tab ORDER BY a 2 | 4 | SELECT * FROM pgss_dml_tab WHERE a > $1 ORDER BY a - 1 | 8 | SELECT * FROM pgss_dml_tab WHERE a IN ($1, $2, $3, $4, $5) + 1 | 8 | SELECT * FROM pgss_dml_tab WHERE a IN ($1 /*, ... */) 1 | 1 | SELECT pg_stat_statements_reset() IS NOT NULL AS t 1 | 0 | SET pg_stat_statements.track_utility = $1 6 | 6 | UPDATE pgss_dml_tab SET b = $1 WHERE a = $2 diff --git a/contrib/pg_stat_statements/expected/squashing.out b/contrib/pg_stat_statements/expected/squashing.out index 55aa5109433..7b138af098c 100644 --- a/contrib/pg_stat_statements/expected/squashing.out +++ b/contrib/pg_stat_statements/expected/squashing.out @@ -4,39 +4,7 @@ CREATE EXTENSION pg_stat_statements; CREATE TABLE test_squash (id int, data int); -- IN queries --- No squashing is performed, as a baseline result -SELECT pg_stat_statements_reset() IS NOT NULL AS t; - t ---- - t -(1 row) - -SELECT * FROM test_squash WHERE id IN (1, 2, 3, 4, 5, 6, 7, 8, 9); - id | data -----+------ -(0 rows) - -SELECT * FROM test_squash WHERE id IN (1, 2, 3, 4, 5, 6, 7, 8, 9, 10); - id | data -----+------ -(0 rows) - -SELECT * FROM test_squash WHERE id IN (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11); - id | data -----+------ -(0 rows) - -SELECT query, calls FROM pg_stat_statements ORDER BY query COLLATE "C"; - query | calls ---------------------------------------------------------------------------------------+------- - SELECT * FROM test_squash WHERE id IN ($1, $2, $3, $4, $5, $6, $7, $8, $9) | 1 - SELECT * FROM test_squash WHERE id IN ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10) | 1 - SELECT * FROM test_squash WHERE id IN ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11) | 1 - SELECT pg_stat_statements_reset() IS NOT NULL AS t | 1 -(4 rows) - -- Normal scenario, too many simple constants for an IN query -SET query_id_squash_values = on; SELECT pg_stat_statements_reset() IS NOT NULL AS t; t --- @@ -461,4 +429,3 @@ SELECT query, calls FROM pg_stat_statements ORDER BY query COLLATE "C"; SELECT pg_stat_statements_reset() IS NOT NULL AS t | 1 (2 rows) -RESET query_id_squash_values; diff --git a/contrib/pg_stat_statements/sql/squashing.sql b/contrib/pg_stat_statements/sql/squashing.sql index 56ee8ccb9a1..908be81ff2b 100644 --- a/contrib/pg_stat_statements/sql/squashing.sql +++ b/contrib/pg_stat_statements/sql/squashing.sql @@ -7,16 +7,7 @@ CREATE TABLE test_squash (id int, data int); -- IN queries --- No squashing is performed, as a baseline result -SELECT pg_stat_statements_reset() IS NOT NULL AS t; -SELECT * FROM test_squash WHERE id IN (1, 2, 3, 4, 5, 6, 7, 8, 9); -SELECT * FROM test_squash WHERE id IN (1, 2, 3, 4, 5, 6, 7, 8, 9, 10); -SELECT * FROM test_squash WHERE id IN (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11); -SELECT query, calls FROM pg_stat_statements ORDER BY query COLLATE "C"; - -- Normal scenario, too many simple constants for an IN query -SET query_id_squash_values = on; - SELECT pg_stat_statements_reset() IS NOT NULL AS t; SELECT * FROM test_squash WHERE id IN (1); SELECT * FROM test_squash WHERE id IN (1, 2, 3); @@ -177,4 +168,3 @@ SELECT pg_stat_statements_reset() IS NOT NULL AS t; SELECT ARRAY[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; SELECT query, calls FROM pg_stat_statements ORDER BY query COLLATE "C"; -RESET query_id_squash_values; diff --git a/doc/src/sgml/config.sgml b/doc/src/sgml/config.sgml index f86135fbe1d..65ab95be370 100644 --- a/doc/src/sgml/config.sgml +++ b/doc/src/sgml/config.sgml @@ -8726,36 +8726,6 @@ COPY postgres_log FROM '/full/path/to/logfile.csv' WITH csv; - - query_id_squash_values (bool) - - query_id_squash_values configuration parameter - - - - - Specifies how a list of constants (e.g., for an IN - clause) contributes to the query identifier computation. - Normally, every element of such a list contributes to the query - identifier separately, which means that two queries that only differ - in the number of elements in such a list would get different query - identifiers. - If this parameter is on, a list of constants will not contribute - to the query identifier. This means that two queries whose only - difference is the number of constants in such a list are going to get the - same query identifier. - - - Only constants are affected; bind parameters do not benefit from this - functionality. The default value is off. - - - This parameter also affects how - generates normalized query texts. - - - - log_statement_stats (boolean) diff --git a/doc/src/sgml/pgstatstatements.sgml b/doc/src/sgml/pgstatstatements.sgml index 625b84ebfef..7baa07dcdbf 100644 --- a/doc/src/sgml/pgstatstatements.sgml +++ b/doc/src/sgml/pgstatstatements.sgml @@ -632,13 +632,11 @@ In some cases, queries with visibly different texts might get merged into a single pg_stat_statements entry; as explained above, this is expected to happen for semantically equivalent queries. - In addition, if query_id_squash_values is enabled - and the only difference between queries is the number of elements in a list - of constants, the list will get squashed down to a single element but shown + In addition, if the only difference between queries is the number of elements + in a list of constants, the list will get squashed down to a single element but shown with a commented-out list indicator: -=# SET query_id_squash_values = on; =# SELECT pg_stat_statements_reset(); =# SELECT * FROM test WHERE a IN (1, 2, 3, 4, 5, 6, 7); =# SELECT * FROM test WHERE a IN (1, 2, 3, 4, 5, 6, 7, 8); diff --git a/src/backend/nodes/queryjumblefuncs.c b/src/backend/nodes/queryjumblefuncs.c index 1d9abd89028..513cf92d357 100644 --- a/src/backend/nodes/queryjumblefuncs.c +++ b/src/backend/nodes/queryjumblefuncs.c @@ -46,9 +46,6 @@ /* GUC parameters */ int compute_query_id = COMPUTE_QUERY_ID_AUTO; -/* Whether to merge constants in a list when computing query_id */ -bool query_id_squash_values = false; - /* * True when compute_query_id is ON or AUTO, and a module requests them. * @@ -472,7 +469,7 @@ IsSquashableConstList(List *elements, Node **firstExpr, Node **lastExpr) * If squashing is disabled, or the list is too short, we don't try to * squash it. */ - if (!query_id_squash_values || list_length(elements) < 2) + if (list_length(elements) < 2) return false; foreach(temp, elements) @@ -520,13 +517,10 @@ do { \ #include "queryjumblefuncs.funcs.c" /* - * When query_id_squash_values is enabled, we jumble lists of constant - * elements as one individual item regardless of how many elements are - * in the list. This means different queries jumble to the same query_id, - * if the only difference is the number of elements in the list. - * - * If query_id_squash_values is disabled or the list is not "simple - * enough", we jumble each element normally. + * We jumble lists of constant elements as one individual item regardless + * of how many elements are in the list. This means different queries + * jumble to the same query_id, if the only difference is the number of + * elements in the list. */ static void _jumbleElements(JumbleState *jstate, List *elements) diff --git a/src/backend/postmaster/launch_backend.c b/src/backend/postmaster/launch_backend.c index 9e6c900d146..bf6b55ee830 100644 --- a/src/backend/postmaster/launch_backend.c +++ b/src/backend/postmaster/launch_backend.c @@ -116,7 +116,6 @@ typedef struct bool redirection_done; bool IsBinaryUpgrade; bool query_id_enabled; - bool query_id_squash_values; int max_safe_fds; int MaxBackends; int num_pmchild_slots; @@ -778,7 +777,6 @@ save_backend_variables(BackendParameters *param, param->redirection_done = redirection_done; param->IsBinaryUpgrade = IsBinaryUpgrade; param->query_id_enabled = query_id_enabled; - param->query_id_squash_values = query_id_squash_values; param->max_safe_fds = max_safe_fds; param->MaxBackends = MaxBackends; @@ -1039,7 +1037,6 @@ restore_backend_variables(BackendParameters *param) redirection_done = param->redirection_done; IsBinaryUpgrade = param->IsBinaryUpgrade; query_id_enabled = param->query_id_enabled; - query_id_squash_values = param->query_id_squash_values; max_safe_fds = param->max_safe_fds; MaxBackends = param->MaxBackends; diff --git a/src/backend/utils/misc/guc_tables.c b/src/backend/utils/misc/guc_tables.c index 989825d3a9c..76c7c6bb4b1 100644 --- a/src/backend/utils/misc/guc_tables.c +++ b/src/backend/utils/misc/guc_tables.c @@ -2122,16 +2122,6 @@ struct config_bool ConfigureNamesBool[] = NULL, NULL, NULL }, - { - {"query_id_squash_values", PGC_USERSET, STATS_MONITORING, - gettext_noop("Allows to merge constants in a list when computing " - "query_id."), - }, - &query_id_squash_values, - false, - NULL, NULL, NULL - }, - { {"vacuum_truncate", PGC_USERSET, VACUUM_DEFAULT, gettext_noop("Enables vacuum to truncate empty pages at the end of the table."), diff --git a/src/backend/utils/misc/postgresql.conf.sample b/src/backend/utils/misc/postgresql.conf.sample index 2246ccb85a7..7c12434efa2 100644 --- a/src/backend/utils/misc/postgresql.conf.sample +++ b/src/backend/utils/misc/postgresql.conf.sample @@ -664,7 +664,6 @@ # - Monitoring - #compute_query_id = auto -#query_id_squash_values = off #log_statement_stats = off #log_parser_stats = off #log_planner_stats = off diff --git a/src/include/nodes/queryjumble.h b/src/include/nodes/queryjumble.h index 62794c5a901..da7c7abed2e 100644 --- a/src/include/nodes/queryjumble.h +++ b/src/include/nodes/queryjumble.h @@ -86,7 +86,6 @@ extern JumbleState *JumbleQuery(Query *query); extern void EnableQueryId(void); extern PGDLLIMPORT bool query_id_enabled; -extern PGDLLIMPORT bool query_id_squash_values; /* * Returns whether query identifier computation has been enabled, either