index 49deebdfcacd6351f7c2b991a7695995c5af4fa0..89fde503ed6477787aa2138aa7dbc9d4e71a0fd4 100644 (file)
@@ -462,6 +462,35 @@ SELECT query, calls, rows FROM pg_stat_statements ORDER BY query COLLATE "C";
SELECT query, calls, rows FROM pg_stat_statements ORDER BY query COLLATE "C" | 0 | 0
(6 rows)
+-- normalization of constants and parameters, with constant locations
+-- recorded one or more times.
+SELECT pg_stat_statements_reset() IS NOT NULL AS t;
+ t
+---
+ t
+(1 row)
+
+SELECT WHERE '1' IN ('1'::int, '3'::int::text);
+--
+(1 row)
+
+SELECT WHERE (1, 2) IN ((1, 2), (2, 3));
+--
+(1 row)
+
+SELECT WHERE (3, 4) IN ((5, 6), (8, 7));
+--
+(0 rows)
+
+SELECT query, calls FROM pg_stat_statements ORDER BY query COLLATE "C";
+ query | calls
+------------------------------------------------------------------------+-------
+ SELECT WHERE 1ドル IN (2ドル::int, 3ドル::int::text) | 1
+ SELECT WHERE (1,ドル 2ドル) IN ((3,ドル 4ドル), (5,ドル 6ドル)) | 2
+ SELECT pg_stat_statements_reset() IS NOT NULL AS t | 1
+ SELECT query, calls FROM pg_stat_statements ORDER BY query COLLATE "C" | 0
+(4 rows)
+
--
-- queries with locking clauses
--
index 486652c959340af5f31d50ee9cdffe59522e30b7..93d238ba34ade72c832b06bf9762fcd671bc2275 100644 (file)
@@ -2674,6 +2674,7 @@ generate_normalized_query(JumbleState *jstate, const char *query,
n_quer_loc = 0, /* Normalized query byte location */
last_off = 0, /* Offset from start for previous tok */
last_tok_len = 0; /* Length (in bytes) of that tok */
+ int num_constants_replaced = 0;
/*
* Get constants' lengths (core system only gives us locations). Note
@@ -2717,7 +2718,8 @@ generate_normalized_query(JumbleState *jstate, const char *query,
/* And insert a param symbol in place of the constant token */
n_quer_loc += sprintf(norm_query + n_quer_loc, "$%d",
- i + 1 + jstate->highest_extern_param_id);
+ num_constants_replaced + 1 + jstate->highest_extern_param_id);
+ num_constants_replaced++;
quer_loc = off + tok_len;
last_off = off;
index 8828e74e8942b3dbb1f5457b242334ecf3332b0a..7bf379a0a76df0aeb368523f482841b98c5bbd42 100644 (file)
SELECT query, calls, rows FROM pg_stat_statements ORDER BY query COLLATE "C";
+-- normalization of constants and parameters, with constant locations
+-- recorded one or more times.
+SELECT pg_stat_statements_reset() IS NOT NULL AS t;
+SELECT WHERE '1' IN ('1'::int, '3'::int::text);
+SELECT WHERE (1, 2) IN ((1, 2), (2, 3));
+SELECT WHERE (3, 4) IN ((5, 6), (8, 7));
+SELECT query, calls FROM pg_stat_statements ORDER BY query COLLATE "C";
+
--
-- queries with locking clauses
--