99 lines
1.6 KiB
SQL
99 lines
1.6 KiB
SQL
# name: test/sql/transactions/test_multi_version.test
|
|
# description: Test multiple versions of the same data
|
|
# group: [transactions]
|
|
|
|
statement ok
|
|
PRAGMA enable_verification
|
|
|
|
# initialize the database
|
|
statement ok con1
|
|
CREATE TABLE integers(i INTEGER);
|
|
|
|
statement ok con1
|
|
INSERT INTO integers VALUES (1), (2), (3);
|
|
|
|
# we can query the database using both connections
|
|
query R con1
|
|
SELECT SUM(i) FROM integers
|
|
----
|
|
6.000000
|
|
|
|
query R con2
|
|
SELECT SUM(i) FROM integers
|
|
----
|
|
6.000000
|
|
|
|
# now update the database in connection 1
|
|
statement ok con1
|
|
BEGIN TRANSACTION;
|
|
|
|
statement ok con1
|
|
UPDATE integers SET i=5 WHERE i=1;
|
|
|
|
query R con1
|
|
SELECT SUM(i) FROM integers
|
|
----
|
|
10.000000
|
|
|
|
# con 2 still has the same result
|
|
query R con2
|
|
SELECT SUM(i) FROM integers
|
|
----
|
|
6.000000
|
|
|
|
# we can update the same data point again in con 1
|
|
statement ok con1
|
|
UPDATE integers SET i=10 WHERE i=5;
|
|
|
|
query R con1
|
|
SELECT SUM(i) FROM integers
|
|
----
|
|
15.000000
|
|
|
|
# con 2 still has the same result
|
|
query R con2
|
|
SELECT SUM(i) FROM integers
|
|
----
|
|
6.000000
|
|
|
|
# now delete it
|
|
statement ok con1
|
|
DELETE FROM integers WHERE i>5;
|
|
|
|
query R con1
|
|
SELECT SUM(i) FROM integers
|
|
----
|
|
5.000000
|
|
|
|
# con 2 still has the same result
|
|
query R con2
|
|
SELECT SUM(i) FROM integers
|
|
----
|
|
6.000000
|
|
|
|
# insert some new data again
|
|
statement ok con1
|
|
INSERT INTO integers VALUES (1), (2)
|
|
|
|
query R con1
|
|
SELECT SUM(i) FROM integers
|
|
----
|
|
8.000000
|
|
|
|
# con 2 still has the same result
|
|
query R con2
|
|
SELECT SUM(i) FROM integers
|
|
----
|
|
6.000000
|
|
|
|
# now commit
|
|
statement ok con1
|
|
COMMIT
|
|
|
|
# con 2 now has the updated results
|
|
query R con2
|
|
SELECT SUM(i) FROM integers
|
|
----
|
|
8.000000
|
|
|