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

41 lines
1.1 KiB
Ruby

# REINDEX CONCURRENTLY
#
# Ensure that concurrent operations work correctly when a REINDEX is performed
# concurrently.
setup
{
CREATE TABLE reind_con_tab(id serial primary key, data text);
INSERT INTO reind_con_tab(data) VALUES ('aa');
INSERT INTO reind_con_tab(data) VALUES ('aaa');
INSERT INTO reind_con_tab(data) VALUES ('aaaa');
INSERT INTO reind_con_tab(data) VALUES ('aaaaa');
}
teardown
{
DROP TABLE reind_con_tab;
}
session s1
setup { BEGIN; }
step sel1 { SELECT data FROM reind_con_tab WHERE id = 3; }
step end1 { COMMIT; }
session s2
setup { BEGIN; }
step upd2 { UPDATE reind_con_tab SET data = 'bbbb' WHERE id = 3; }
step ins2 { INSERT INTO reind_con_tab(data) VALUES ('cccc'); }
step del2 { DELETE FROM reind_con_tab WHERE data = 'cccc'; }
step end2 { COMMIT; }
session s3
step reindex { REINDEX TABLE CONCURRENTLY reind_con_tab; }
permutation reindex sel1 upd2 ins2 del2 end1 end2
permutation sel1 reindex upd2 ins2 del2 end1 end2
permutation sel1 upd2 reindex ins2 del2 end1 end2
permutation sel1 upd2 ins2 reindex del2 end1 end2
permutation sel1 upd2 ins2 del2 reindex end1 end2
permutation sel1 upd2 ins2 del2 end1 reindex end2