File: test_multi_transaction_append.test

package info (click to toggle)
duckdb 1.5.1-2
  • links: PTS, VCS
  • area: main
  • in suites:
  • size: 299,196 kB
  • sloc: cpp: 865,414; ansic: 57,292; python: 18,871; sql: 12,663; lisp: 11,751; yacc: 7,412; lex: 1,682; sh: 747; makefile: 558
file content (107 lines) | stat: -rw-r--r-- 1,535 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
# name: test/sql/transactions/test_multi_transaction_append.test
# description: Test appends with multiple transactions
# group: [transactions]

statement ok
PRAGMA enable_verification

statement ok con1
CREATE TABLE integers(i INTEGER, j INTEGER)

# begin two transactions
statement ok con1
BEGIN TRANSACTION

statement ok con2
BEGIN TRANSACTION

# append a tuple, con2 cannot see this tuple yet
statement ok con1
INSERT INTO integers VALUES (1, 3)

query I con2
SELECT COUNT(*) FROM integers
----
0

query I con2
SELECT COUNT(*) FROM integers WHERE i=1
----
0

# after committing, con2 still cannot see this tuple
statement ok con1
COMMIT

query I con2
SELECT COUNT(*) FROM integers
----
0

query I con2
SELECT COUNT(*) FROM integers WHERE i=1
----
0

# after con2 commits, it can see this tuple
statement ok con2
COMMIT

query I con2
SELECT COUNT(*) FROM integers
----
1

query I con2
SELECT COUNT(*) FROM integers WHERE i=1
----
1

# now both transactions append one tuple
statement ok con1
BEGIN TRANSACTION

statement ok con2
BEGIN TRANSACTION

statement ok con1
INSERT INTO integers VALUES (1, 3)

statement ok con2
INSERT INTO integers VALUES (1, 3)

# they cannot see each others tuple yet
query I con1
SELECT COUNT(*) FROM integers
----
2

query I con2
SELECT COUNT(*) FROM integers
----
2

# until they both commit
statement ok con1
COMMIT

statement ok con2
COMMIT

query I con1
SELECT COUNT(*) FROM integers
----
3

query I con2
SELECT COUNT(*) FROM integers
----
3

query II con1
SELECT * FROM integers
----
1	3
1	3
1	3