mirror of https://github.com/citusdata/citus.git
71 lines
1.3 KiB
Ruby
71 lines
1.3 KiB
Ruby
setup
|
|
{
|
|
SELECT 1 FROM master_add_node('localhost', 57637);
|
|
|
|
SET citus.shard_replication_factor TO 1;
|
|
CREATE TABLE update_node(id integer primary key, f1 text);
|
|
SELECT create_distributed_table('update_node', 'id');
|
|
}
|
|
|
|
// we sleep 2 seconds to let isolation test sync metadata
|
|
// which is longer than citus.metadata_sync_interval, 1 second
|
|
teardown
|
|
{
|
|
SELECT pg_sleep(2);
|
|
|
|
RESET citus.shard_replication_factor;
|
|
DROP TABLE update_node CASCADE;
|
|
|
|
SELECT master_remove_node(nodename, nodeport) FROM pg_dist_node;
|
|
SELECT nodeid, nodename, nodeport from pg_dist_node;
|
|
}
|
|
|
|
session "s1"
|
|
|
|
step "s1-begin"
|
|
{
|
|
BEGIN;
|
|
}
|
|
|
|
step "s1-update-node-1"
|
|
{
|
|
SELECT 1 FROM master_update_node(
|
|
(select nodeid from pg_dist_node where nodeport = 57637),
|
|
'localhost',
|
|
57638);
|
|
}
|
|
|
|
step "s1-commit"
|
|
{
|
|
COMMIT;
|
|
}
|
|
|
|
session "s2"
|
|
|
|
step "s2-begin"
|
|
{
|
|
BEGIN;
|
|
}
|
|
|
|
step "s2-insert"
|
|
{
|
|
INSERT INTO update_node(id, f1)
|
|
SELECT id, md5(id::text)
|
|
FROM generate_series(1, 10) as t(id);
|
|
}
|
|
|
|
step "s2-abort"
|
|
{
|
|
ABORT;
|
|
}
|
|
|
|
step "s2-commit"
|
|
{
|
|
COMMIT;
|
|
}
|
|
|
|
// session 1 updates node 1, session 2 writes should be blocked
|
|
permutation "s1-begin" "s1-update-node-1" "s2-begin" "s2-insert" "s1-commit" "s2-abort"
|
|
permutation "s2-begin" "s2-insert" "s1-update-node-1" "s2-commit"
|
|
|