mirror of
https://github.com/timescale/timescaledb.git
synced 2025-05-15 10:11:29 +08:00
VACUUM VERBOSE is the source for flaky tests and we don't gain much by including the verbose output in the test. Additionally removing the verbose option prevents us from having to make the vacuum tests pg-version specific as PG14 slightly changes the formatting of the VACUUM VERBOSE output.
42 lines
1.8 KiB
SQL
42 lines
1.8 KiB
SQL
-- This file and its contents are licensed under the Apache License 2.0.
|
|
-- Please see the included NOTICE for copyright information and
|
|
-- LICENSE-APACHE for a copy of the license.
|
|
|
|
-- PG13 introduced parallel VACUUM functionality. It gets invoked when a table
|
|
-- has two or more indexes on it. Read up more at
|
|
-- https://www.postgresql.org/docs/13/sql-vacuum.html#PARALLEL
|
|
|
|
CREATE TABLE vacuum_test(time timestamp NOT NULL, temp1 float, temp2 int);
|
|
|
|
-- create hypertable
|
|
-- we create chunks in public schema cause otherwise we would need
|
|
-- elevated privileges to create indexes directly
|
|
SELECT create_hypertable('vacuum_test', 'time', create_default_indexes => false, associated_schema_name => 'public');
|
|
|
|
-- parallel vacuum needs the index size to be larger than min_parallel_index_scan_size to kick in
|
|
SET min_parallel_index_scan_size TO 0;
|
|
INSERT INTO vacuum_test SELECT TIMESTAMP 'epoch' + (i * INTERVAL '4h'),
|
|
i, i+1 FROM generate_series(1, 100) as T(i);
|
|
|
|
-- create indexes on the temp columns
|
|
-- we create indexes manually because otherwise vacuum verbose output
|
|
-- would be different between 13.2 and 13.3+
|
|
-- 13.2 would try to vacuum the parent table index too while 13.3+ wouldn't
|
|
CREATE INDEX ON _hyper_1_1_chunk(time);
|
|
CREATE INDEX ON _hyper_1_1_chunk(temp1);
|
|
CREATE INDEX ON _hyper_1_1_chunk(temp2);
|
|
CREATE INDEX ON _hyper_1_2_chunk(time);
|
|
CREATE INDEX ON _hyper_1_2_chunk(temp1);
|
|
CREATE INDEX ON _hyper_1_2_chunk(temp2);
|
|
CREATE INDEX ON _hyper_1_3_chunk(time);
|
|
CREATE INDEX ON _hyper_1_3_chunk(temp1);
|
|
CREATE INDEX ON _hyper_1_3_chunk(temp2);
|
|
|
|
-- INSERT only will not trigger vacuum on indexes for PG13.3+
|
|
UPDATE vacuum_test SET time = time + '1s'::interval, temp1 = random(), temp2 = random();
|
|
|
|
-- we should see two parallel workers for each chunk
|
|
VACUUM (PARALLEL 3) vacuum_test;
|
|
|
|
DROP TABLE vacuum_test;
|