Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit 89937d0

Browse filesBrowse files
committed
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
1 parent 35421a4 commit 89937d0
Copy full SHA for 89937d0

File tree

Expand file treeCollapse file tree

2 files changed

+8
-4
lines changed
Filter options
Expand file treeCollapse file tree

2 files changed

+8
-4
lines changed

‎src/test/regress/expected/reloptions.out

Copy file name to clipboardExpand all lines: src/test/regress/expected/reloptions.out
+4-2Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,8 @@ SELECT reloptions FROM pg_class WHERE oid = 'reloptions_test'::regclass;
102102
INSERT INTO reloptions_test VALUES (1, NULL), (NULL, NULL);
103103
ERROR: null value in column "i" of relation "reloptions_test" violates not-null constraint
104104
DETAIL: Failing row contains (null, null).
105-
VACUUM reloptions_test;
105+
-- Do an aggressive vacuum to prevent page-skipping.
106+
VACUUM FREEZE reloptions_test;
106107
SELECT pg_relation_size('reloptions_test') > 0;
107108
?column?
108109
----------
@@ -127,7 +128,8 @@ SELECT reloptions FROM pg_class WHERE oid = 'reloptions_test'::regclass;
127128
INSERT INTO reloptions_test VALUES (1, NULL), (NULL, NULL);
128129
ERROR: null value in column "i" of relation "reloptions_test" violates not-null constraint
129130
DETAIL: Failing row contains (null, null).
130-
VACUUM reloptions_test;
131+
-- Do an aggressive vacuum to prevent page-skipping.
132+
VACUUM FREEZE reloptions_test;
131133
SELECT pg_relation_size('reloptions_test') = 0;
132134
?column?
133135
----------

‎src/test/regress/sql/reloptions.sql

Copy file name to clipboardExpand all lines: src/test/regress/sql/reloptions.sql
+4-2Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,8 @@ CREATE TABLE reloptions_test(i INT NOT NULL, j text)
6161
autovacuum_enabled=false);
6262
SELECT reloptions FROM pg_class WHERE oid = 'reloptions_test'::regclass;
6363
INSERT INTO reloptions_test VALUES (1, NULL), (NULL, NULL);
64-
VACUUM reloptions_test;
64+
-- Do an aggressive vacuum to prevent page-skipping.
65+
VACUUM FREEZE reloptions_test;
6566
SELECT pg_relation_size('reloptions_test') > 0;
6667

6768
SELECT reloptions FROM pg_class WHERE oid =
@@ -71,7 +72,8 @@ SELECT reloptions FROM pg_class WHERE oid =
7172
ALTER TABLE reloptions_test RESET (vacuum_truncate);
7273
SELECT reloptions FROM pg_class WHERE oid = 'reloptions_test'::regclass;
7374
INSERT INTO reloptions_test VALUES (1, NULL), (NULL, NULL);
74-
VACUUM reloptions_test;
75+
-- Do an aggressive vacuum to prevent page-skipping.
76+
VACUUM FREEZE reloptions_test;
7577
SELECT pg_relation_size('reloptions_test') = 0;
7678

7779
-- Test toast.* options

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.