# LogicTest: default parallel-stmts distsql

statement ok
CREATE TABLE t (id INT PRIMARY KEY, v string)

statement ok
GRANT ALL ON t TO testuser

statement ok
INSERT INTO t VALUES (1, 'A'), (2, 'B')

# Test that two transactions both scanning the table can
# perform non-conflicting updates without a restart.

# First case: scan, scan, write, commit, write, commit.

user testuser

statement ok
BEGIN TRANSACTION ISOLATION LEVEL SNAPSHOT

query IT rowsort
SELECT * FROM t
----
1 A
2 B

user root

statement ok
BEGIN TRANSACTION ISOLATION LEVEL SNAPSHOT

query IT rowsort
SELECT * FROM t
----
1 A
2 B

user testuser

statement ok
UPDATE t SET v = 'a' WHERE id = 1

statement ok
COMMIT

user root

statement ok
UPDATE t SET v = 'b' WHERE id = 2

statement ok
COMMIT

# Second case: scan, scan, write, write, commit, commit.

user testuser

statement ok
BEGIN TRANSACTION ISOLATION LEVEL SNAPSHOT

query IT rowsort
SELECT * FROM t
----
1 a
2 b

user root

statement ok
BEGIN TRANSACTION ISOLATION LEVEL SNAPSHOT

query IT rowsort
SELECT * FROM t
----
1 a
2 b

user testuser

statement ok
UPDATE t SET v = 'A' WHERE id = 1

user root

statement ok
UPDATE t SET v = 'B' WHERE id = 2

statement ok
COMMIT

user testuser

statement ok
COMMIT
