mirror of https://github.com/citusdata/citus.git
243 lines
8.5 KiB
Ruby
243 lines
8.5 KiB
Ruby
#include "isolation_mx_common.include.spec"
|
|
|
|
setup
|
|
{
|
|
SELECT citus_set_coordinator_host('localhost', 57636);
|
|
|
|
CREATE TABLE dist_table(a int);
|
|
CREATE TABLE citus_local_table(a int);
|
|
CREATE TABLE local_table(a int);
|
|
CREATE TABLE ref_table(a int);
|
|
|
|
CREATE TABLE partitioned_table(a int)
|
|
PARTITION BY RANGE(a);
|
|
|
|
CREATE TABLE partition_1 PARTITION OF partitioned_table
|
|
FOR VALUES FROM (1) TO (11);
|
|
|
|
CREATE TABLE partition_2 PARTITION OF partitioned_table
|
|
FOR VALUES FROM (11) TO (21);
|
|
|
|
SELECT create_distributed_table('dist_table', 'a');
|
|
SELECT create_reference_table('ref_table');
|
|
SELECT citus_add_local_table_to_metadata('citus_local_table');
|
|
SELECT create_distributed_table('partitioned_table', 'a');
|
|
|
|
CREATE VIEW sub_view(a) AS
|
|
SELECT 2 * a AS a
|
|
FROM ref_table;
|
|
|
|
CREATE VIEW main_view AS
|
|
SELECT t1.a a1, t2.a a2, t3.a a3
|
|
FROM dist_table t1
|
|
JOIN citus_local_table t2 ON t1.a = t2.a
|
|
JOIN sub_view t3 ON t2.a = t3.a;
|
|
|
|
INSERT INTO dist_table SELECT n FROM generate_series(1, 5) n;
|
|
INSERT INTO citus_local_table SELECT n FROM generate_series(1, 5) n;
|
|
INSERT INTO local_table SELECT n FROM generate_series(1, 5) n;
|
|
INSERT INTO ref_table SELECT n FROM generate_series(1, 5) n;
|
|
INSERT INTO partitioned_table SELECT n FROM generate_series(8, 12) n;
|
|
}
|
|
|
|
teardown
|
|
{
|
|
DROP VIEW main_view;
|
|
DROP VIEW sub_view;
|
|
DROP TABLE dist_table;
|
|
DROP TABLE citus_local_table;
|
|
DROP TABLE local_table;
|
|
DROP TABLE ref_table;
|
|
DROP TABLE partitioned_table;
|
|
|
|
SELECT citus_remove_node('localhost', 57636);
|
|
|
|
SELECT citus_internal.restore_isolation_tester_func();
|
|
}
|
|
|
|
// coordinator session
|
|
session "coor"
|
|
|
|
step "coor-begin"
|
|
{
|
|
BEGIN;
|
|
}
|
|
|
|
step "coor-acquire-aggresive-lock-on-dist-table"
|
|
{
|
|
LOCK dist_table IN ACCESS EXCLUSIVE MODE;
|
|
}
|
|
|
|
step "coor-acquire-aggresive-lock-on-dist-table-nowait"
|
|
{
|
|
LOCK dist_table IN ACCESS EXCLUSIVE MODE NOWAIT;
|
|
}
|
|
|
|
step "coor-acquire-weak-lock-on-dist-table"
|
|
{
|
|
LOCK dist_table IN ACCESS SHARE MODE;
|
|
}
|
|
|
|
step "coor-acquire-aggresive-lock-on-view"
|
|
{
|
|
LOCK main_view IN ACCESS EXCLUSIVE MODE;
|
|
}
|
|
|
|
step "coor-acquire-aggresive-lock-on-only-view"
|
|
{
|
|
LOCK ONLY main_view IN ACCESS EXCLUSIVE MODE;
|
|
}
|
|
|
|
step "coor-acquire-aggresive-lock-on-view-nowait"
|
|
{
|
|
LOCK main_view IN ACCESS EXCLUSIVE MODE NOWAIT;
|
|
}
|
|
|
|
step "coor-lock-all"
|
|
{
|
|
LOCK dist_table, citus_local_table, ref_table, main_view, sub_view, local_table IN ACCESS EXCLUSIVE MODE;
|
|
}
|
|
|
|
step "coor-read-dist-table"
|
|
{
|
|
SELECT COUNT(*) FROM dist_table;
|
|
}
|
|
|
|
step "coor-read-ref-table"
|
|
{
|
|
SELECT COUNT(*) FROM ref_table;
|
|
}
|
|
|
|
step "coor-acquire-aggresive-lock-on-partitioned-table"
|
|
{
|
|
LOCK partitioned_table IN ACCESS EXCLUSIVE MODE;
|
|
}
|
|
|
|
step "coor-acquire-aggresive-lock-on-partitioned-table-with-*-syntax"
|
|
{
|
|
LOCK partitioned_table * IN ACCESS EXCLUSIVE MODE;
|
|
}
|
|
|
|
step "coor-acquire-aggresive-lock-on-only-partitioned-table"
|
|
{
|
|
LOCK ONLY partitioned_table IN ACCESS EXCLUSIVE MODE;
|
|
}
|
|
|
|
step "coor-acquire-aggresive-lock-on-ref-table"
|
|
{
|
|
LOCK ref_table IN ACCESS EXCLUSIVE MODE;
|
|
}
|
|
|
|
step "coor-rollback"
|
|
{
|
|
ROLLBACK;
|
|
}
|
|
|
|
// worker 1 xact session
|
|
session "w1"
|
|
|
|
step "w1-start-session-level-connection"
|
|
{
|
|
SELECT start_session_level_connection_to_node('localhost', 57637);
|
|
}
|
|
|
|
step "w1-begin"
|
|
{
|
|
SELECT run_commands_on_session_level_connection_to_node('BEGIN');
|
|
}
|
|
|
|
step "w1-read-dist-table"
|
|
{
|
|
SELECT run_commands_on_session_level_connection_to_node('SELECT COUNT(*) FROM dist_table');
|
|
}
|
|
|
|
step "w1-read-ref-table"
|
|
{
|
|
SELECT run_commands_on_session_level_connection_to_node('SELECT COUNT(*) FROM ref_table');
|
|
}
|
|
|
|
step "w1-read-citus-local-table"
|
|
{
|
|
SELECT run_commands_on_session_level_connection_to_node('SELECT COUNT(*) FROM citus_local_table');
|
|
}
|
|
|
|
step "w1-acquire-aggressive-lock-dist-table" {
|
|
SELECT run_commands_on_session_level_connection_to_node('LOCK dist_table IN ACCESS EXCLUSIVE MODE');
|
|
}
|
|
|
|
step "w1-lock-reference-table"
|
|
{
|
|
SELECT run_commands_on_session_level_connection_to_node('LOCK ref_table IN ACCESS EXCLUSIVE MODE');
|
|
}
|
|
|
|
step "w1-read-partitioned-table"
|
|
{
|
|
SELECT run_commands_on_session_level_connection_to_node('SELECT COUNT(*) FROM partitioned_table');
|
|
}
|
|
|
|
step "w1-read-partition-of-partitioned-table"
|
|
{
|
|
SELECT run_commands_on_session_level_connection_to_node('SELECT COUNT(*) FROM partition_1');
|
|
}
|
|
|
|
step "w1-read-main-view"
|
|
{
|
|
SELECT run_commands_on_session_level_connection_to_node('SELECT COUNT(*) FROM main_view');
|
|
}
|
|
|
|
step "w1-rollback"
|
|
{
|
|
SELECT run_commands_on_session_level_connection_to_node('ROLLBACK');
|
|
}
|
|
|
|
step "w1-stop-connection"
|
|
{
|
|
SELECT stop_session_level_connection_to_node();
|
|
}
|
|
|
|
// worker 2 xact session
|
|
session "w2"
|
|
|
|
step "w2-start-session-level-connection"
|
|
{
|
|
SELECT start_session_level_connection_to_node('localhost', 57638);
|
|
}
|
|
|
|
step "w2-begin"
|
|
{
|
|
SELECT run_commands_on_session_level_connection_to_node('BEGIN');
|
|
}
|
|
|
|
step "w2-acquire-aggressive-lock-dist-table" {
|
|
SELECT run_commands_on_session_level_connection_to_node('LOCK dist_table IN ACCESS EXCLUSIVE MODE');
|
|
}
|
|
|
|
step "w2-rollback"
|
|
{
|
|
SELECT run_commands_on_session_level_connection_to_node('ROLLBACK');
|
|
}
|
|
|
|
step "w2-stop-connection"
|
|
{
|
|
SELECT stop_session_level_connection_to_node();
|
|
}
|
|
|
|
permutation "coor-begin" "coor-acquire-aggresive-lock-on-dist-table" "w1-start-session-level-connection" "w1-begin" "w1-read-dist-table" "coor-rollback" "w1-rollback" "w1-stop-connection"
|
|
permutation "coor-begin" "coor-acquire-aggresive-lock-on-dist-table" "w1-start-session-level-connection" "w1-begin" "w1-acquire-aggressive-lock-dist-table" "coor-rollback" "coor-read-dist-table" "w1-rollback" "w1-stop-connection"
|
|
permutation "w1-start-session-level-connection" "w1-begin" "w1-acquire-aggressive-lock-dist-table" "coor-begin" "coor-acquire-aggresive-lock-on-dist-table-nowait" "coor-rollback" "w1-rollback" "w1-stop-connection"
|
|
permutation "w1-start-session-level-connection" "w1-begin" "w2-start-session-level-connection" "w2-begin" "w1-acquire-aggressive-lock-dist-table" "w2-acquire-aggressive-lock-dist-table" "w1-rollback" "w1-read-dist-table" "w2-rollback" "w1-stop-connection" "w2-stop-connection"
|
|
permutation "coor-begin" "coor-acquire-weak-lock-on-dist-table" "w1-start-session-level-connection" "w1-begin" "w1-read-dist-table" "w1-acquire-aggressive-lock-dist-table" "coor-rollback" "w1-rollback" "w1-stop-connection"
|
|
permutation "w1-start-session-level-connection" "w1-begin" "w1-lock-reference-table" "coor-begin" "coor-read-ref-table" "w1-rollback" "coor-rollback" "w1-stop-connection"
|
|
permutation "coor-begin" "coor-acquire-aggresive-lock-on-view" "w1-start-session-level-connection" "w1-begin" "w1-read-dist-table" "coor-rollback" "w1-rollback" "w1-stop-connection"
|
|
permutation "coor-begin" "coor-acquire-aggresive-lock-on-view" "w1-start-session-level-connection" "w1-begin" "w1-acquire-aggressive-lock-dist-table" "coor-rollback" "w1-rollback" "w1-stop-connection"
|
|
permutation "coor-begin" "coor-acquire-aggresive-lock-on-view" "w1-start-session-level-connection" "w1-begin" "w1-read-ref-table" "coor-rollback" "w1-rollback" "w1-stop-connection"
|
|
permutation "coor-begin" "coor-acquire-aggresive-lock-on-only-view" "w1-start-session-level-connection" "w1-begin" "w1-read-ref-table" "coor-rollback" "w1-rollback" "w1-stop-connection"
|
|
permutation "w1-start-session-level-connection" "w1-begin" "w1-acquire-aggressive-lock-dist-table" "coor-begin" "coor-acquire-aggresive-lock-on-view-nowait" "coor-rollback" "w1-rollback" "w1-stop-connection"
|
|
permutation "coor-begin" "coor-lock-all" "w1-start-session-level-connection" "w1-begin" "w1-read-citus-local-table" "coor-rollback" "w1-rollback" "w1-stop-connection"
|
|
permutation "coor-begin" "coor-acquire-aggresive-lock-on-partitioned-table" "w1-start-session-level-connection" "w1-begin" "w1-read-partitioned-table" "coor-rollback" "w1-rollback" "w1-stop-connection"
|
|
permutation "coor-begin" "coor-acquire-aggresive-lock-on-partitioned-table" "w1-start-session-level-connection" "w1-begin" "w1-read-partition-of-partitioned-table" "coor-rollback" "w1-rollback" "w1-stop-connection"
|
|
permutation "coor-begin" "coor-acquire-aggresive-lock-on-partitioned-table-with-*-syntax" "w1-start-session-level-connection" "w1-begin" "w1-read-partition-of-partitioned-table" "coor-rollback" "w1-rollback" "w1-stop-connection"
|
|
permutation "coor-begin" "coor-acquire-aggresive-lock-on-only-partitioned-table" "w1-start-session-level-connection" "w1-begin" "w1-read-partitioned-table" "coor-rollback" "w1-rollback" "w1-stop-connection"
|
|
permutation "coor-begin" "coor-acquire-aggresive-lock-on-only-partitioned-table" "w1-start-session-level-connection" "w1-begin" "w1-read-partition-of-partitioned-table" "coor-rollback" "w1-rollback" "w1-stop-connection"
|
|
permutation "coor-begin" "coor-acquire-aggresive-lock-on-ref-table" "w1-start-session-level-connection" "w1-begin" "w1-read-main-view" "coor-rollback" "w1-rollback" "w1-stop-connection"
|