Skip to content

Commit 4b03a93

Browse files
authored
feat: introduce generated columns (risingwavelabs#8700)
1 parent 98ea76a commit 4b03a93

File tree

39 files changed

+754
-517
lines changed

39 files changed

+754
-517
lines changed

e2e_test/ddl/table.slt

Lines changed: 1 addition & 261 deletions
Original file line numberDiff line numberDiff line change
@@ -1,261 +1 @@
1-
# Create a table.
2-
statement ok
3-
create table ddl_t (v1 int);
4-
5-
statement ok
6-
explain select v1 from ddl_t;
7-
8-
# Create another table with duplicated name.
9-
statement error
10-
create table ddl_t (v2 int);
11-
12-
# Create a table using a empty string.
13-
statement error
14-
create table ""(v2 int);
15-
16-
statement ok
17-
create table if not exists ddl_t (v2 int);
18-
19-
# Drop the table.
20-
statement ok
21-
drop table ddl_t;
22-
23-
# Drop it again.
24-
statement error
25-
drop table ddl_t;
26-
27-
# Create another table with the same name.
28-
statement ok
29-
create table ddl_t (v2 int);
30-
31-
statement ok
32-
explain select v2 from ddl_t;
33-
34-
# Create a mview on top of it.
35-
statement ok
36-
create materialized view ddl_mv as select v2 from ddl_t;
37-
38-
statement ok
39-
explain select v2 from ddl_t;
40-
41-
statement ok
42-
explain create sink sink_t from ddl_t with ( connector = 'kafka', type = 'append-only', force_append_only = 'true' );
43-
44-
statement ok
45-
explain create sink sink_as as select sum(v2) as sum from ddl_t with ( connector = 'kafka', type = 'append-only', force_append_only = 'true' );
46-
47-
# Create a mview with duplicated name.
48-
statement error
49-
create materialized view ddl_mv as select v2 from ddl_t;
50-
51-
# Drop the table before dropping the mview.
52-
statement error
53-
drop table ddl_t;
54-
55-
# We're not allowed to drop the mview using `DROP TABLE`.
56-
statement error
57-
drop table ddl_mv;
58-
59-
# Drop the mview.
60-
statement ok
61-
drop materialized view ddl_mv;
62-
63-
# Drop it again.
64-
statement error
65-
drop materialized view ddl_mv;
66-
67-
# We're not allowed to drop the table using `DROP MATERIALIZED VIEW`.
68-
statement error
69-
drop materialized view ddl_t;
70-
71-
# Now, we can drop the base table.
72-
statement ok
73-
drop table ddl_t;
74-
75-
# Create table concludes struct column.
76-
statement ok
77-
create table st (v1 int, v2 struct<v1 int, v2 struct<v1 int, v2 int>>);
78-
79-
statement ok
80-
drop table st
81-
82-
# We test the case sensitivity of table name and column name.
83-
statement ok
84-
create table t1 (v1 int);
85-
86-
statement ok
87-
drop table T1;
88-
89-
statement ok
90-
create table T1 (v1 int);
91-
92-
statement ok
93-
drop table t1;
94-
95-
statement ok
96-
create table "T1" (v1 int);
97-
98-
# Since we have not really bound the columns in the insert statement
99-
# this test case cannot be enabled.
100-
# statement error
101-
# insert into "T1" ("V1") values (1);
102-
103-
statement error
104-
drop table t1;
105-
106-
statement error
107-
drop table T1;
108-
109-
statement ok
110-
drop table "T1";
111-
112-
statement ok
113-
create table "T2" ("V1" int);
114-
115-
# Since we have not really bound the columns in the insert statement
116-
# this test case cannot be enabled.
117-
# statement error
118-
# insert into "T2" (V1) values (1);
119-
120-
statement ok
121-
insert into "T2" ("V1") values (1);
122-
123-
statement ok
124-
drop table "T2"
125-
126-
statement error
127-
create table C1 (c1 varchar(5));
128-
129-
statement error
130-
create table t (v1 int not null);
131-
132-
statement error
133-
create table t (v1 varchar collate "en_US");
134-
135-
# Test create-table-as
136-
statement ok
137-
create table t as select 1;
138-
139-
statement ok
140-
drop table t;
141-
142-
statement error
143-
create table t as select 1,2;
144-
145-
statement ok
146-
create table t as select 1 as a, 2 as b;
147-
148-
statement ok
149-
drop table t;
150-
151-
statement ok
152-
create table t(v1) as select 1;
153-
154-
statement ok
155-
drop table t;
156-
157-
statement ok
158-
create table t (v1 int,v2 int);
159-
160-
statement ok
161-
insert into t values (1,1);
162-
163-
statement ok
164-
insert into t values (1,1);
165-
166-
statement ok
167-
insert into t values (1,1);
168-
169-
statement ok
170-
flush
171-
172-
statement ok
173-
create table t1 as select * from t;
174-
175-
statement ok
176-
flush;
177-
178-
query I
179-
select * from t1;
180-
----
181-
1 1
182-
1 1
183-
1 1
184-
185-
statement ok
186-
drop table t1;
187-
188-
statement ok
189-
drop table t;
190-
191-
statement ok
192-
create table t AS SELECT * FROM generate_series(0, 5,1) tbl(i);
193-
194-
statement ok
195-
flush;
196-
197-
query I
198-
select * from t order by i;
199-
----
200-
0
201-
1
202-
2
203-
3
204-
4
205-
5
206-
207-
statement ok
208-
drop table t;
209-
210-
statement ok
211-
create table t (v1 int);
212-
213-
statement ok
214-
insert into t values (1);
215-
216-
statement ok
217-
insert into t values (2);
218-
219-
statement ok
220-
create table n1 as select sum(v1) from t;
221-
222-
statement ok
223-
flush;
224-
225-
query I
226-
select * from n1;
227-
----
228-
3
229-
230-
statement error
231-
create table n1 (v2 int);
232-
233-
statement error
234-
create table n1 as select * from t;
235-
236-
statement ok
237-
create table if not exists n1 (v2 int);
238-
239-
statement ok
240-
drop table n1;
241-
242-
statement ok
243-
drop table t;
244-
245-
statement ok
246-
create table t (v1 int,v2 int);
247-
248-
statement ok
249-
create table t1(a,b) as select v1,v2 from t;
250-
251-
statement ok
252-
create table t2(a) as select v1,v2 from t;
253-
254-
statement ok
255-
drop table t;
256-
257-
statement ok
258-
drop table t1;
259-
260-
statement ok
261-
drop table t2;
1+
include ./table/*.slt.part
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
# Create a table with generated columns.
2+
statement ok
3+
create table t1 (v1 int as v2-1, v2 int, v3 int as v2+1);
4+
5+
statement ok
6+
insert into t1 (v2) values (1), (2);
7+
8+
statement ok
9+
flush;
10+
11+
query III
12+
select * from t1;
13+
----
14+
0 1 2
15+
1 2 3
16+
17+
statement ok
18+
drop table t1;
19+
20+
# Create a table with generated columns.
21+
statement ok
22+
create table t2 (v1 int, v2 int as v1+1);
23+
24+
statement ok
25+
insert into t2 values (1), (2);
26+
27+
statement ok
28+
flush;
29+
30+
query II
31+
select * from t2;
32+
----
33+
1 2
34+
2 3
35+
36+
statement ok
37+
drop table t2;
38+
39+
# Generated column reference another generated column
40+
statement error
41+
create table t2 (v1 int as v2+1, v2 int, v3 int as v1-1);

0 commit comments

Comments
 (0)