diff --git a/regression/expected/denorm_prepared_statements.out b/regression/expected/denorm_prepared_statements.out index a4f1846..c0b3811 100644 --- a/regression/expected/denorm_prepared_statements.out +++ b/regression/expected/denorm_prepared_statements.out @@ -7,6 +7,8 @@ SELECT pg_stat_monitor_reset(); (1 row) +-- First test, execute cheap query then heavy query. +-- Ensure denormalized heavy query replaces the cheaper one. PREPARE prepstmt(TEXT, TEXT, TEXT) AS INSERT INTO t1(a, b, c) VALUES($1, $2, $3); EXECUTE prepstmt('A', 'B', 'C'); SELECT SUBSTRING(query, 0, 128), calls FROM pg_stat_monitor ORDER BY query COLLATE "C"; @@ -25,6 +27,32 @@ SELECT SUBSTRING(query, 0, 128), calls FROM pg_stat_monitor ORDER BY query COLLA SELECT pg_stat_monitor_reset() | 1 (3 rows) +TRUNCATE TABLE t1; +SELECT pg_stat_monitor_reset(); + pg_stat_monitor_reset +----------------------- + +(1 row) + +-- Second test, execute heavy query then cheap query. +-- Ensure denormalized heavy query is not replaced by the cheaper one. +EXECUTE prepstmt(REPEAT('XYZ', 8192), md5(random()::text), REPEAT('RANDOM', 4096)); +SELECT SUBSTRING(query, 0, 128), calls FROM pg_stat_monitor ORDER BY query COLLATE "C"; + substring | calls +---------------------------------------------------------------------------------------------------------------------------------+------- + PREPARE prepstmt(TEXT, TEXT, TEXT) AS INSERT INTO t1(a, b, c) VALUES(XYZXYZXYZXYZXYZXYZXYZXYZXYZXYZXYZXYZXYZXYZXYZXYZXYZXYZXYZX | 1 + SELECT pg_stat_monitor_reset() | 1 +(2 rows) + +EXECUTE prepstmt('A', 'B', 'C'); +SELECT SUBSTRING(query, 0, 128), calls FROM pg_stat_monitor ORDER BY query COLLATE "C"; + substring | calls +---------------------------------------------------------------------------------------------------------------------------------+------- + PREPARE prepstmt(TEXT, TEXT, TEXT) AS INSERT INTO t1(a, b, c) VALUES(XYZXYZXYZXYZXYZXYZXYZXYZXYZXYZXYZXYZXYZXYZXYZXYZXYZXYZXYZX | 2 + SELECT SUBSTRING(query, 0, 128), calls FROM pg_stat_monitor ORDER BY query COLLATE "C" | 1 + SELECT pg_stat_monitor_reset() | 1 +(3 rows) + DROP TABLE t1; SELECT pg_stat_monitor_reset(); pg_stat_monitor_reset diff --git a/regression/sql/denorm_prepared_statements.sql b/regression/sql/denorm_prepared_statements.sql index 94c6935..440f9a2 100644 --- a/regression/sql/denorm_prepared_statements.sql +++ b/regression/sql/denorm_prepared_statements.sql @@ -5,6 +5,8 @@ CREATE TABLE t1 (a TEXT, b TEXT, c TEXT); SELECT pg_stat_monitor_reset(); +-- First test, execute cheap query then heavy query. +-- Ensure denormalized heavy query replaces the cheaper one. PREPARE prepstmt(TEXT, TEXT, TEXT) AS INSERT INTO t1(a, b, c) VALUES($1, $2, $3); EXECUTE prepstmt('A', 'B', 'C'); @@ -13,6 +15,18 @@ SELECT SUBSTRING(query, 0, 128), calls FROM pg_stat_monitor ORDER BY query COLLA EXECUTE prepstmt(REPEAT('XYZ', 8192), md5(random()::text), REPEAT('RANDOM', 4096)); SELECT SUBSTRING(query, 0, 128), calls FROM pg_stat_monitor ORDER BY query COLLATE "C"; +TRUNCATE TABLE t1; +SELECT pg_stat_monitor_reset(); + +-- Second test, execute heavy query then cheap query. +-- Ensure denormalized heavy query is not replaced by the cheaper one. + +EXECUTE prepstmt(REPEAT('XYZ', 8192), md5(random()::text), REPEAT('RANDOM', 4096)); +SELECT SUBSTRING(query, 0, 128), calls FROM pg_stat_monitor ORDER BY query COLLATE "C"; + +EXECUTE prepstmt('A', 'B', 'C'); +SELECT SUBSTRING(query, 0, 128), calls FROM pg_stat_monitor ORDER BY query COLLATE "C"; + DROP TABLE t1; SELECT pg_stat_monitor_reset();