postgresql/src/test/isolation/specs/reindex-schema.spec

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