41 lines
1.1 KiB
Ruby
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
|