33 lines
869 B
Ruby
33 lines
869 B
Ruby
# REINDEX with schemas
|
|
#
|
|
# Check that concurrent drop of relations while doing a REINDEX
|
|
# SCHEMA allows the command to work.
|
|
|
|
setup
|
|
{
|
|
CREATE SCHEMA reindex_schema;
|
|
CREATE TABLE reindex_schema.tab_locked (a int PRIMARY KEY);
|
|
CREATE TABLE reindex_schema.tab_dropped (a int PRIMARY KEY);
|
|
}
|
|
|
|
teardown
|
|
{
|
|
DROP SCHEMA reindex_schema CASCADE;
|
|
}
|
|
|
|
session s1
|
|
step begin1 { BEGIN; }
|
|
step lock1 { LOCK reindex_schema.tab_locked IN SHARE UPDATE EXCLUSIVE MODE; }
|
|
step end1 { COMMIT; }
|
|
|
|
session s2
|
|
step reindex2 { REINDEX SCHEMA reindex_schema; }
|
|
step reindex_conc2 { REINDEX SCHEMA CONCURRENTLY reindex_schema; }
|
|
|
|
session s3
|
|
step drop3 { DROP TABLE reindex_schema.tab_dropped; }
|
|
|
|
# The table can be dropped while reindex is waiting.
|
|
permutation begin1 lock1 reindex2 drop3 end1
|
|
permutation begin1 lock1 reindex_conc2 drop3 end1
|