Files
email-tracker/external/duckdb/test/sql/transactions/test_multi_version.test
2025-10-24 19:21:19 -05:00

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