Improve query denormalization regression test
Add a new test case: 1. Execute a prepared statement with larger execution time first. 2. Execute the same prepared statement with cheap execution time. 3. Ensures that the denormalized heavy query is not replaced by the cheaper.pull/481/head
parent
146e3ec57e
commit
f4b1f35877
|
@ -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
|
||||
|
|
|
@ -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();
|
||||
|
|
Loading…
Reference in New Issue