mirror of
https://github.com/postgres/postgres.git
synced 2025-04-29 13:56:47 +03:00
Improve stability of test with vacuum_truncate in reloptions.sql
This test has been using a simple VACUUM with pg_relation_size() to check if a relation gets physically truncated or not, but forgot the fact that some concurrent activity, like checkpoint buffer writes, could cause some pages to be skipped. The second test enabling vacuum_truncate could fail, seeing a non-empty relation. The first test would not have failed, but could finish by testing a behavior different than the one aimed for. Both tests gain a FREEZE option, to make the vacuums more aggressive and prevent page skips. This is similar to the issues fixed in c2dc1a7. Author: Arseny Sher Reviewed-by: Masahiko Sawada Discussion: https://postgr.es/m/87tuotr2hh.fsf@ars-thinkpad backpatch-through: 12
This commit is contained in:
parent
1ebdec8c03
commit
fe246d1c11
@ -102,7 +102,8 @@ SELECT reloptions FROM pg_class WHERE oid = 'reloptions_test'::regclass;
|
||||
INSERT INTO reloptions_test VALUES (1, NULL), (NULL, NULL);
|
||||
ERROR: null value in column "i" of relation "reloptions_test" violates not-null constraint
|
||||
DETAIL: Failing row contains (null, null).
|
||||
VACUUM reloptions_test;
|
||||
-- Do an aggressive vacuum to prevent page-skipping.
|
||||
VACUUM FREEZE reloptions_test;
|
||||
SELECT pg_relation_size('reloptions_test') > 0;
|
||||
?column?
|
||||
----------
|
||||
@ -127,7 +128,8 @@ SELECT reloptions FROM pg_class WHERE oid = 'reloptions_test'::regclass;
|
||||
INSERT INTO reloptions_test VALUES (1, NULL), (NULL, NULL);
|
||||
ERROR: null value in column "i" of relation "reloptions_test" violates not-null constraint
|
||||
DETAIL: Failing row contains (null, null).
|
||||
VACUUM reloptions_test;
|
||||
-- Do an aggressive vacuum to prevent page-skipping.
|
||||
VACUUM FREEZE reloptions_test;
|
||||
SELECT pg_relation_size('reloptions_test') = 0;
|
||||
?column?
|
||||
----------
|
||||
|
@ -61,7 +61,8 @@ CREATE TABLE reloptions_test(i INT NOT NULL, j text)
|
||||
autovacuum_enabled=false);
|
||||
SELECT reloptions FROM pg_class WHERE oid = 'reloptions_test'::regclass;
|
||||
INSERT INTO reloptions_test VALUES (1, NULL), (NULL, NULL);
|
||||
VACUUM reloptions_test;
|
||||
-- Do an aggressive vacuum to prevent page-skipping.
|
||||
VACUUM FREEZE reloptions_test;
|
||||
SELECT pg_relation_size('reloptions_test') > 0;
|
||||
|
||||
SELECT reloptions FROM pg_class WHERE oid =
|
||||
@ -71,7 +72,8 @@ SELECT reloptions FROM pg_class WHERE oid =
|
||||
ALTER TABLE reloptions_test RESET (vacuum_truncate);
|
||||
SELECT reloptions FROM pg_class WHERE oid = 'reloptions_test'::regclass;
|
||||
INSERT INTO reloptions_test VALUES (1, NULL), (NULL, NULL);
|
||||
VACUUM reloptions_test;
|
||||
-- Do an aggressive vacuum to prevent page-skipping.
|
||||
VACUUM FREEZE reloptions_test;
|
||||
SELECT pg_relation_size('reloptions_test') = 0;
|
||||
|
||||
-- Test toast.* options
|
||||
|
Loading…
x
Reference in New Issue
Block a user