Skip to content

Commit 1f8025e

Browse files
committed
add sql logic tests (provided by @SkyFan2002)
1 parent addb30d commit 1f8025e

File tree

3 files changed

+263
-0
lines changed

3 files changed

+263
-0
lines changed
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
statement ok
2+
create or replace database test_txn_dedup_label;
3+
4+
statement ok
5+
use test_txn_dedup_label;
6+
7+
statement ok
8+
CREATE TABLE t1(a Int, b bool);
9+
10+
onlyif mysql
11+
statement ok
12+
begin;
13+
14+
onlyif mysql
15+
statement ok
16+
INSERT /*+ SET_VAR(deduplicate_label='databend') */ INTO t1 (a, b) VALUES(1, false);
17+
18+
onlyif mysql
19+
statement ok
20+
UPDATE /*+ SET_VAR(deduplicate_label='databend') */ t1 SET a = 20 WHERE b = false;
21+
22+
onlyif mysql
23+
query II
24+
SELECT * FROM t1;
25+
----
26+
1 0
27+
28+
onlyif mysql
29+
statement ok
30+
commit;
31+
32+
onlyif mysql
33+
query II
34+
SELECT * FROM t1;
35+
----
36+
1 0
37+
38+
onlyif mysql
39+
statement ok
40+
REPLACE /*+ SET_VAR(deduplicate_label='databend') */ INTO t1 on(a,b) VALUES(40, false);
41+
42+
onlyif mysql
43+
query II
44+
SELECT * FROM t1;
45+
----
46+
1 0
47+
48+
statement ok
49+
drop database test_txn_dedup_label;
Lines changed: 134 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,134 @@
1+
statement ok
2+
create or replace database test_txn_stream;
3+
4+
statement ok
5+
use test_txn_stream;
6+
7+
statement ok
8+
CREATE TABLE t_append_only(a INT);
9+
10+
statement ok
11+
CREATE STREAM s_append_only ON TABLE t_append_only APPEND_ONLY=true;
12+
13+
statement ok
14+
CREATE STREAM s_append_only_1 ON TABLE t_append_only APPEND_ONLY=true;
15+
16+
statement ok
17+
INSERT INTO t_append_only VALUES(2), (3);
18+
19+
statement ok
20+
CREATE TABLE t_consume_append_only_1(b INT);
21+
22+
statement ok
23+
CREATE TABLE t_consume_append_only_2(b INT);
24+
25+
statement ok
26+
CREATE TABLE t_consume_append_only_3(b INT);
27+
28+
statement ok
29+
CREATE TABLE t_consume_append_only_4(b INT);
30+
31+
statement ok
32+
CREATE TABLE t_consume_append_only_5(b INT);
33+
34+
statement ok
35+
CREATE TABLE t_consume_append_only_6(b INT);
36+
37+
query I
38+
select a from s_append_only;
39+
----
40+
2
41+
3
42+
43+
onlyif mysql
44+
statement ok
45+
BEGIN;
46+
47+
onlyif mysql
48+
statement ok
49+
INSERT INTO t_append_only VALUES(4), (5);
50+
51+
onlyif mysql
52+
statement ok
53+
INSERT INTO t_consume_append_only_1 SELECT a FROM s_append_only;
54+
55+
onlyif mysql
56+
statement ok
57+
INSERT INTO t_consume_append_only_2 SELECT a FROM s_append_only;
58+
59+
onlyif mysql
60+
statement ok
61+
INSERT INTO t_append_only VALUES(6), (7);
62+
63+
onlyif mysql
64+
statement ok
65+
INSERT INTO t_consume_append_only_3 SELECT a FROM s_append_only;
66+
67+
onlyif mysql
68+
statement ok
69+
INSERT INTO t_consume_append_only_4 SELECT a FROM s_append_only_1;
70+
71+
onlyif mysql
72+
statement ok
73+
COMMIT;
74+
75+
onlyif mysql
76+
statement ok
77+
INSERT INTO t_consume_append_only_5 SELECT a FROM s_append_only;
78+
79+
onlyif mysql
80+
statement ok
81+
INSERT INTO t_consume_append_only_6 SELECT a FROM s_append_only_1;
82+
83+
onlyif mysql
84+
query I
85+
SELECT * FROM t_consume_append_only_1 order by b; -- 2,3,4,5
86+
----
87+
2
88+
3
89+
4
90+
5
91+
92+
onlyif mysql
93+
query I
94+
SELECT * FROM t_consume_append_only_2 order by b; -- 2,3,4,5
95+
----
96+
2
97+
3
98+
4
99+
5
100+
101+
onlyif mysql
102+
query I
103+
SELECT * FROM t_consume_append_only_3 order by b; -- 2,3,4,5
104+
----
105+
2
106+
3
107+
4
108+
5
109+
110+
onlyif mysql
111+
query I
112+
SELECT * FROM t_consume_append_only_4 order by b; -- 2,3,4,5,6,7
113+
----
114+
2
115+
3
116+
4
117+
5
118+
6
119+
7
120+
121+
onlyif mysql
122+
query I
123+
SELECT * FROM t_consume_append_only_5 order by b; -- 6,7
124+
----
125+
6
126+
7
127+
128+
onlyif mysql
129+
query I
130+
SELECT * FROM t_consume_append_only_6; -- empty
131+
----
132+
133+
statement ok
134+
drop database test_txn_stream;
Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
statement ok
2+
create or replace database test_txn_merge_into;
3+
4+
statement ok
5+
use test_txn_merge_into;
6+
7+
statement ok
8+
set enable_experimental_merge_into = 1;
9+
10+
statement ok
11+
CREATE TABLE employees (
12+
employee_id INT,
13+
employee_name VARCHAR(255),
14+
department VARCHAR(255)
15+
);
16+
17+
statement ok
18+
CREATE TABLE salaries (
19+
employee_id INT,
20+
salary DECIMAL(10, 2)
21+
);
22+
23+
onlyif mysql
24+
statement ok
25+
BEGIN;
26+
27+
onlyif mysql
28+
statement ok
29+
INSERT INTO employees VALUES
30+
(1, 'Alice', 'HR'),
31+
(2, 'Bob', 'IT'),
32+
(3, 'Charlie', 'Finance'),
33+
(4, 'David', 'HR');
34+
35+
onlyif mysql
36+
statement ok
37+
INSERT INTO salaries VALUES
38+
(1, 50000.00),
39+
(2, 60000.00);
40+
41+
onlyif mysql
42+
statement ok
43+
MERGE INTO salaries
44+
USING (SELECT * FROM employees) AS employees
45+
ON salaries.employee_id = employees.employee_id
46+
WHEN MATCHED AND employees.department = 'HR' THEN
47+
UPDATE SET
48+
salaries.salary = salaries.salary + 1000.00
49+
WHEN MATCHED THEN
50+
UPDATE SET
51+
salaries.salary = salaries.salary + 500.00
52+
WHEN NOT MATCHED THEN
53+
INSERT (employee_id, salary)
54+
VALUES (employees.employee_id, 55000.00);
55+
56+
onlyif mysql
57+
query IF
58+
SELECT employee_id, salary FROM salaries order by employee_id;
59+
----
60+
1 51000.00
61+
2 60500.00
62+
3 55000.00
63+
4 55000.00
64+
65+
onlyif mysql
66+
statement ok
67+
COMMIT;
68+
69+
onlyif mysql
70+
query IF
71+
SELECT employee_id, salary FROM salaries order by employee_id;
72+
----
73+
1 51000.00
74+
2 60500.00
75+
3 55000.00
76+
4 55000.00
77+
78+
79+
statement ok
80+
drop database test_txn_merge_into;

0 commit comments

Comments
 (0)