mirror of https://github.com/citusdata/citus.git
127 lines
3.7 KiB
Plaintext
127 lines
3.7 KiB
Plaintext
Parsed test spec with 5 sessions
|
|
|
|
starting permutation: s1-grant s1-begin-insert s2-begin-insert s3-as-admin s3-as-user-1 s3-as-readonly s3-as-monitor s1-commit s2-commit
|
|
step s1-grant:
|
|
GRANT ALL ON test_table TO test_user_1;
|
|
GRANT ALL ON test_table TO test_user_2;
|
|
|
|
step s1-begin-insert:
|
|
BEGIN;
|
|
SET ROLE test_user_1;
|
|
INSERT INTO test_table VALUES (100, 100);
|
|
|
|
step s2-begin-insert:
|
|
BEGIN;
|
|
SET ROLE test_user_2;
|
|
INSERT INTO test_table VALUES (200, 200);
|
|
|
|
step s3-as-admin:
|
|
-- Admin should be able to see all transactions
|
|
SELECT count(*) FROM get_all_active_transactions() WHERE transaction_number != 0;
|
|
SELECT count(*) FROM get_global_active_transactions() WHERE transaction_number != 0;
|
|
|
|
count
|
|
---------------------------------------------------------------------
|
|
2
|
|
(1 row)
|
|
|
|
count
|
|
---------------------------------------------------------------------
|
|
4
|
|
(1 row)
|
|
|
|
step s3-as-user-1:
|
|
-- Even though we change the user via SET ROLE, the backends' (e.g., s1/2-begin-insert)
|
|
-- userId (e.g., PG_PROC->userId) does not change, and hence none of the
|
|
-- transactions show up because here we are using test_user_1. This is a
|
|
-- limitation of isolation tester, we should be able to re-connect with
|
|
-- test_user_1 on s1/2-begin-insert to show that test_user_1 sees only its own processes
|
|
SET ROLE test_user_1;
|
|
SELECT count(*) FROM get_all_active_transactions() WHERE transaction_number != 0;
|
|
SELECT count(*) FROM get_global_active_transactions() WHERE transaction_number != 0;
|
|
|
|
count
|
|
---------------------------------------------------------------------
|
|
0
|
|
(1 row)
|
|
|
|
count
|
|
---------------------------------------------------------------------
|
|
1
|
|
(1 row)
|
|
|
|
step s3-as-readonly:
|
|
-- Even though we change the user via SET ROLE, the backends' (e.g., s1/2-begin-insert)
|
|
-- userId (e.g., PG_PROC->userId) does not change, and hence none of the
|
|
-- transactions show up because here we are using test_readonly. This is a
|
|
-- limitation of isolation tester, we should be able to re-connect with
|
|
-- test_readonly on s1/2-begin-insert to show that test_readonly sees only
|
|
-- its own processes
|
|
SET ROLE test_readonly;
|
|
SELECT count(*) FROM get_all_active_transactions() WHERE transaction_number != 0;
|
|
SELECT count(*) FROM get_global_active_transactions() WHERE transaction_number != 0;
|
|
|
|
count
|
|
---------------------------------------------------------------------
|
|
0
|
|
(1 row)
|
|
|
|
count
|
|
---------------------------------------------------------------------
|
|
0
|
|
(1 row)
|
|
|
|
step s3-as-monitor:
|
|
-- Monitor should see all transactions
|
|
SET ROLE test_monitor;
|
|
SELECT count(*) FROM get_all_active_transactions() WHERE transaction_number != 0;
|
|
SELECT count(*) FROM get_global_active_transactions() WHERE transaction_number != 0;
|
|
|
|
count
|
|
---------------------------------------------------------------------
|
|
2
|
|
(1 row)
|
|
|
|
count
|
|
---------------------------------------------------------------------
|
|
4
|
|
(1 row)
|
|
|
|
step s1-commit:
|
|
COMMIT;
|
|
|
|
step s2-commit:
|
|
COMMIT;
|
|
|
|
|
|
starting permutation: s4-record-pid s3-show-activity s5-kill s3-show-activity
|
|
step s4-record-pid:
|
|
SELECT pg_backend_pid() INTO selected_pid;
|
|
|
|
step s3-show-activity:
|
|
SET ROLE postgres;
|
|
select count(*) from get_all_active_transactions() where process_id IN (SELECT * FROM selected_pid);
|
|
|
|
count
|
|
---------------------------------------------------------------------
|
|
1
|
|
(1 row)
|
|
|
|
step s5-kill:
|
|
SELECT pg_terminate_backend(pg_backend_pid) FROM selected_pid;
|
|
|
|
pg_terminate_backend
|
|
---------------------------------------------------------------------
|
|
t
|
|
(1 row)
|
|
|
|
step s3-show-activity:
|
|
SET ROLE postgres;
|
|
select count(*) from get_all_active_transactions() where process_id IN (SELECT * FROM selected_pid);
|
|
|
|
count
|
|
---------------------------------------------------------------------
|
|
0
|
|
(1 row)
|
|
|