mirror of
https://github.com/postgres/postgres.git
synced 2025-11-03 09:13:20 +03:00
Fix alter_table.sql test case to test what it claims to.
The stanza "SET STORAGE may need to add a TOAST table" does not test what it's supposed to, and hasn't done so since we added the ability to store constant column default values as metadata. We need to use a non-constant default to get the expected table rewrite to actually happen. Fix that, and add the missing checks that would have exposed the problem to begin with. Noted while reviewing a patch that made changes in this test case. Back-patch to v11 where the problem came in.
This commit is contained in:
@@ -1528,13 +1528,16 @@ alter table recur1 alter column f2 type recur2; -- fails
|
||||
|
||||
-- SET STORAGE may need to add a TOAST table
|
||||
create table test_storage (a text, c text storage plain);
|
||||
alter table test_storage alter a set storage plain;
|
||||
alter table test_storage add b int default 0; -- rewrite table to remove its TOAST table
|
||||
alter table test_storage alter a set storage extended; -- re-add TOAST table
|
||||
|
||||
select reltoastrelid <> 0 as has_toast_table
|
||||
from pg_class
|
||||
where oid = 'test_storage'::regclass;
|
||||
from pg_class where oid = 'test_storage'::regclass;
|
||||
alter table test_storage alter a set storage plain;
|
||||
-- rewrite table to remove its TOAST table; need a non-constant column default
|
||||
alter table test_storage add b int default random()::int;
|
||||
select reltoastrelid <> 0 as has_toast_table
|
||||
from pg_class where oid = 'test_storage'::regclass;
|
||||
alter table test_storage alter a set storage extended; -- re-add TOAST table
|
||||
select reltoastrelid <> 0 as has_toast_table
|
||||
from pg_class where oid = 'test_storage'::regclass;
|
||||
|
||||
-- check STORAGE correctness
|
||||
create table test_storage_failed (a text, b int storage extended);
|
||||
|
||||
Reference in New Issue
Block a user