Skip to content

Commit b4f959e

Browse files
Benny.WangBenny.Wang
Benny.Wang
authored and
Benny.Wang
committed
WL#411: Generated columns
Fixed bug#19803511: CREATE TABLE OUTPUT NOT ACCEPTED FOR VIRTUAL COLUMNS.
1 parent a72aaf2 commit b4f959e

10 files changed

+437
-439
lines changed

mysql-test/suite/gcol/r/gcol_column_def_options_innodb.result

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ show create table t1;
7676
Table Create Table
7777
t1 CREATE TABLE `t1` (
7878
`a` int(11) DEFAULT NULL,
79-
`b` VIRTUAL int(11) AS (a+1) STORED NOT NULL,
79+
`b` int(11) GENERATED ALWAYS AS (a+1) STORED NOT NULL,
8080
PRIMARY KEY (`b`)
8181
) ENGINE=InnoDB DEFAULT CHARSET=latin1
8282
alter table t1 add column c int generated always as (a+2) stored primary key;
@@ -91,25 +91,25 @@ show create table t1;
9191
Table Create Table
9292
t1 CREATE TABLE `t1` (
9393
`a` int(11) DEFAULT NULL,
94-
`b` VIRTUAL int(11) AS (a % 2) COMMENT 'my comment'
94+
`b` int(11) GENERATED ALWAYS AS (a % 2) VIRTUAL COMMENT 'my comment'
9595
) ENGINE=InnoDB DEFAULT CHARSET=latin1
9696
describe t1;
9797
Field Type Null Key Default Extra
9898
a int(11) YES NULL
99-
b int(11) YES NULL VIRTUAL
99+
b int(11) YES NULL GENERATED
100100
drop table t1;
101101
create table t1 (a int, b int generated always as (a % 2) virtual);
102102
alter table t1 modify b int generated always as (a % 2) virtual comment 'my comment';
103103
show create table t1;
104104
Table Create Table
105105
t1 CREATE TABLE `t1` (
106106
`a` int(11) DEFAULT NULL,
107-
`b` VIRTUAL int(11) AS (a % 2) COMMENT 'my comment'
107+
`b` int(11) GENERATED ALWAYS AS (a % 2) VIRTUAL COMMENT 'my comment'
108108
) ENGINE=InnoDB DEFAULT CHARSET=latin1
109109
describe t1;
110110
Field Type Null Key Default Extra
111111
a int(11) YES NULL
112-
b int(11) YES NULL VIRTUAL
112+
b int(11) YES NULL GENERATED
113113
insert into t1 (a) values (1);
114114
select * from t1;
115115
a b
@@ -124,12 +124,12 @@ show create table t2;
124124
Table Create Table
125125
t2 CREATE TABLE `t2` (
126126
`a` int(11) DEFAULT NULL,
127-
`b` VIRTUAL int(11) AS (a % 2) COMMENT 'my comment'
127+
`b` int(11) GENERATED ALWAYS AS (a % 2) VIRTUAL COMMENT 'my comment'
128128
) ENGINE=InnoDB DEFAULT CHARSET=latin1
129129
describe t2;
130130
Field Type Null Key Default Extra
131131
a int(11) YES NULL
132-
b int(11) YES NULL VIRTUAL
132+
b int(11) YES NULL GENERATED
133133
insert into t2 (a) values (1);
134134
select * from t2;
135135
a b
@@ -146,12 +146,12 @@ show create table t1;
146146
Table Create Table
147147
t1 CREATE TABLE `t1` (
148148
`a` int(11) DEFAULT NULL,
149-
`b` VIRTUAL int(11) AS (a % 2) STORED
149+
`b` int(11) GENERATED ALWAYS AS (a % 2) STORED
150150
) ENGINE=InnoDB DEFAULT CHARSET=latin1
151151
describe t1;
152152
Field Type Null Key Default Extra
153153
a int(11) YES NULL
154-
b int(11) YES NULL VIRTUAL
154+
b int(11) YES NULL GENERATED
155155
insert into t1 (a) values (1);
156156
select * from t1;
157157
a b
@@ -168,7 +168,7 @@ show create table t1;
168168
Table Create Table
169169
t1 CREATE TABLE `t1` (
170170
`a` int(11) DEFAULT NULL,
171-
`b` VIRTUAL int(11) AS (a % 2) STORED
171+
`b` int(11) GENERATED ALWAYS AS (a % 2) STORED
172172
) ENGINE=InnoDB DEFAULT CHARSET=latin1
173173
drop table t1;
174174
create table t1 (a int, b int generated always as (a % 2) virtual);
@@ -178,7 +178,7 @@ show create table t1;
178178
Table Create Table
179179
t1 CREATE TABLE `t1` (
180180
`a` int(11) DEFAULT NULL,
181-
`b` VIRTUAL int(11) AS (a % 2)
181+
`b` int(11) GENERATED ALWAYS AS (a % 2) VIRTUAL
182182
) ENGINE=InnoDB DEFAULT CHARSET=latin1
183183
drop table t1;
184184
Generated alwasy is optional
@@ -187,50 +187,50 @@ show create table t1;
187187
Table Create Table
188188
t1 CREATE TABLE `t1` (
189189
`a` int(11) DEFAULT NULL,
190-
`b` VIRTUAL int(11) AS (a % 2)
190+
`b` int(11) GENERATED ALWAYS AS (a % 2) VIRTUAL
191191
) ENGINE=InnoDB DEFAULT CHARSET=latin1
192192
describe t1;
193193
Field Type Null Key Default Extra
194194
a int(11) YES NULL
195-
b int(11) YES NULL VIRTUAL
195+
b int(11) YES NULL GENERATED
196196
drop table t1;
197197
create table t1 (a int, b int as (a % 2) stored);
198198
show create table t1;
199199
Table Create Table
200200
t1 CREATE TABLE `t1` (
201201
`a` int(11) DEFAULT NULL,
202-
`b` VIRTUAL int(11) AS (a % 2) STORED
202+
`b` int(11) GENERATED ALWAYS AS (a % 2) STORED
203203
) ENGINE=InnoDB DEFAULT CHARSET=latin1
204204
describe t1;
205205
Field Type Null Key Default Extra
206206
a int(11) YES NULL
207-
b int(11) YES NULL VIRTUAL
207+
b int(11) YES NULL GENERATED
208208
drop table t1;
209209
Default should be non-stored column
210210
create table t1 (a int, b int as (a % 2));
211211
show create table t1;
212212
Table Create Table
213213
t1 CREATE TABLE `t1` (
214214
`a` int(11) DEFAULT NULL,
215-
`b` VIRTUAL int(11) AS (a % 2)
215+
`b` int(11) GENERATED ALWAYS AS (a % 2) VIRTUAL
216216
) ENGINE=InnoDB DEFAULT CHARSET=latin1
217217
describe t1;
218218
Field Type Null Key Default Extra
219219
a int(11) YES NULL
220-
b int(11) YES NULL VIRTUAL
220+
b int(11) YES NULL GENERATED
221221
drop table t1;
222222
Expression can be constant
223223
create table t1 (a int, b int as (5 * 2));
224224
show create table t1;
225225
Table Create Table
226226
t1 CREATE TABLE `t1` (
227227
`a` int(11) DEFAULT NULL,
228-
`b` VIRTUAL int(11) AS (5 * 2)
228+
`b` int(11) GENERATED ALWAYS AS (5 * 2) VIRTUAL
229229
) ENGINE=InnoDB DEFAULT CHARSET=latin1
230230
describe t1;
231231
Field Type Null Key Default Extra
232232
a int(11) YES NULL
233-
b int(11) YES NULL VIRTUAL
233+
b int(11) YES NULL GENERATED
234234
drop table t1;
235235
Test generated columns referencing other generated columns
236236
create table t1 (a int unique, b int generated always as(-a) virtual, c int generated always as (b + 1) virtual);

mysql-test/suite/gcol/r/gcol_column_def_options_myisam.result

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ show create table t1;
7676
Table Create Table
7777
t1 CREATE TABLE `t1` (
7878
`a` int(11) DEFAULT NULL,
79-
`b` VIRTUAL int(11) AS (a+1) STORED NOT NULL,
79+
`b` int(11) GENERATED ALWAYS AS (a+1) STORED NOT NULL,
8080
PRIMARY KEY (`b`)
8181
) ENGINE=MyISAM DEFAULT CHARSET=latin1
8282
alter table t1 add column c int generated always as (a+2) stored primary key;
@@ -91,25 +91,25 @@ show create table t1;
9191
Table Create Table
9292
t1 CREATE TABLE `t1` (
9393
`a` int(11) DEFAULT NULL,
94-
`b` VIRTUAL int(11) AS (a % 2) COMMENT 'my comment'
94+
`b` int(11) GENERATED ALWAYS AS (a % 2) VIRTUAL COMMENT 'my comment'
9595
) ENGINE=MyISAM DEFAULT CHARSET=latin1
9696
describe t1;
9797
Field Type Null Key Default Extra
9898
a int(11) YES NULL
99-
b int(11) YES NULL VIRTUAL
99+
b int(11) YES NULL GENERATED
100100
drop table t1;
101101
create table t1 (a int, b int generated always as (a % 2) virtual);
102102
alter table t1 modify b int generated always as (a % 2) virtual comment 'my comment';
103103
show create table t1;
104104
Table Create Table
105105
t1 CREATE TABLE `t1` (
106106
`a` int(11) DEFAULT NULL,
107-
`b` VIRTUAL int(11) AS (a % 2) COMMENT 'my comment'
107+
`b` int(11) GENERATED ALWAYS AS (a % 2) VIRTUAL COMMENT 'my comment'
108108
) ENGINE=MyISAM DEFAULT CHARSET=latin1
109109
describe t1;
110110
Field Type Null Key Default Extra
111111
a int(11) YES NULL
112-
b int(11) YES NULL VIRTUAL
112+
b int(11) YES NULL GENERATED
113113
insert into t1 (a) values (1);
114114
select * from t1;
115115
a b
@@ -124,12 +124,12 @@ show create table t2;
124124
Table Create Table
125125
t2 CREATE TABLE `t2` (
126126
`a` int(11) DEFAULT NULL,
127-
`b` VIRTUAL int(11) AS (a % 2) COMMENT 'my comment'
127+
`b` int(11) GENERATED ALWAYS AS (a % 2) VIRTUAL COMMENT 'my comment'
128128
) ENGINE=MyISAM DEFAULT CHARSET=latin1
129129
describe t2;
130130
Field Type Null Key Default Extra
131131
a int(11) YES NULL
132-
b int(11) YES NULL VIRTUAL
132+
b int(11) YES NULL GENERATED
133133
insert into t2 (a) values (1);
134134
select * from t2;
135135
a b
@@ -146,12 +146,12 @@ show create table t1;
146146
Table Create Table
147147
t1 CREATE TABLE `t1` (
148148
`a` int(11) DEFAULT NULL,
149-
`b` VIRTUAL int(11) AS (a % 2) STORED
149+
`b` int(11) GENERATED ALWAYS AS (a % 2) STORED
150150
) ENGINE=MyISAM DEFAULT CHARSET=latin1
151151
describe t1;
152152
Field Type Null Key Default Extra
153153
a int(11) YES NULL
154-
b int(11) YES NULL VIRTUAL
154+
b int(11) YES NULL GENERATED
155155
insert into t1 (a) values (1);
156156
select * from t1;
157157
a b
@@ -168,7 +168,7 @@ show create table t1;
168168
Table Create Table
169169
t1 CREATE TABLE `t1` (
170170
`a` int(11) DEFAULT NULL,
171-
`b` VIRTUAL int(11) AS (a % 2) STORED
171+
`b` int(11) GENERATED ALWAYS AS (a % 2) STORED
172172
) ENGINE=MyISAM DEFAULT CHARSET=latin1
173173
drop table t1;
174174
create table t1 (a int, b int generated always as (a % 2) virtual);
@@ -178,7 +178,7 @@ show create table t1;
178178
Table Create Table
179179
t1 CREATE TABLE `t1` (
180180
`a` int(11) DEFAULT NULL,
181-
`b` VIRTUAL int(11) AS (a % 2)
181+
`b` int(11) GENERATED ALWAYS AS (a % 2) VIRTUAL
182182
) ENGINE=MyISAM DEFAULT CHARSET=latin1
183183
drop table t1;
184184
Generated alwasy is optional
@@ -187,50 +187,50 @@ show create table t1;
187187
Table Create Table
188188
t1 CREATE TABLE `t1` (
189189
`a` int(11) DEFAULT NULL,
190-
`b` VIRTUAL int(11) AS (a % 2)
190+
`b` int(11) GENERATED ALWAYS AS (a % 2) VIRTUAL
191191
) ENGINE=MyISAM DEFAULT CHARSET=latin1
192192
describe t1;
193193
Field Type Null Key Default Extra
194194
a int(11) YES NULL
195-
b int(11) YES NULL VIRTUAL
195+
b int(11) YES NULL GENERATED
196196
drop table t1;
197197
create table t1 (a int, b int as (a % 2) stored);
198198
show create table t1;
199199
Table Create Table
200200
t1 CREATE TABLE `t1` (
201201
`a` int(11) DEFAULT NULL,
202-
`b` VIRTUAL int(11) AS (a % 2) STORED
202+
`b` int(11) GENERATED ALWAYS AS (a % 2) STORED
203203
) ENGINE=MyISAM DEFAULT CHARSET=latin1
204204
describe t1;
205205
Field Type Null Key Default Extra
206206
a int(11) YES NULL
207-
b int(11) YES NULL VIRTUAL
207+
b int(11) YES NULL GENERATED
208208
drop table t1;
209209
Default should be non-stored column
210210
create table t1 (a int, b int as (a % 2));
211211
show create table t1;
212212
Table Create Table
213213
t1 CREATE TABLE `t1` (
214214
`a` int(11) DEFAULT NULL,
215-
`b` VIRTUAL int(11) AS (a % 2)
215+
`b` int(11) GENERATED ALWAYS AS (a % 2) VIRTUAL
216216
) ENGINE=MyISAM DEFAULT CHARSET=latin1
217217
describe t1;
218218
Field Type Null Key Default Extra
219219
a int(11) YES NULL
220-
b int(11) YES NULL VIRTUAL
220+
b int(11) YES NULL GENERATED
221221
drop table t1;
222222
Expression can be constant
223223
create table t1 (a int, b int as (5 * 2));
224224
show create table t1;
225225
Table Create Table
226226
t1 CREATE TABLE `t1` (
227227
`a` int(11) DEFAULT NULL,
228-
`b` VIRTUAL int(11) AS (5 * 2)
228+
`b` int(11) GENERATED ALWAYS AS (5 * 2) VIRTUAL
229229
) ENGINE=MyISAM DEFAULT CHARSET=latin1
230230
describe t1;
231231
Field Type Null Key Default Extra
232232
a int(11) YES NULL
233-
b int(11) YES NULL VIRTUAL
233+
b int(11) YES NULL GENERATED
234234
drop table t1;
235235
Test generated columns referencing other generated columns
236236
create table t1 (a int unique, b int generated always as(-a) virtual, c int generated always as (b + 1) virtual);

mysql-test/suite/gcol/r/gcol_keys_innodb.result

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -13,13 +13,13 @@ show create table t1;
1313
Table Create Table
1414
t1 CREATE TABLE `t1` (
1515
`a` int(11) DEFAULT NULL,
16-
`b` VIRTUAL int(11) AS (a*2) STORED,
16+
`b` int(11) GENERATED ALWAYS AS (a*2) STORED,
1717
UNIQUE KEY `b` (`b`)
1818
) ENGINE=InnoDB DEFAULT CHARSET=latin1
1919
describe t1;
2020
Field Type Null Key Default Extra
2121
a int(11) YES NULL
22-
b int(11) YES UNI NULL VIRTUAL
22+
b int(11) YES UNI NULL GENERATED
2323
drop table t1;
2424
create table t1 (a int, b int generated always as (a*2) virtual, unique key (b));
2525
ERROR HY000: Key/Index cannot be defined on a virtual generated column.
@@ -28,13 +28,13 @@ show create table t1;
2828
Table Create Table
2929
t1 CREATE TABLE `t1` (
3030
`a` int(11) DEFAULT NULL,
31-
`b` VIRTUAL int(11) AS (a*2) STORED,
31+
`b` int(11) GENERATED ALWAYS AS (a*2) STORED,
3232
UNIQUE KEY `b` (`b`)
3333
) ENGINE=InnoDB DEFAULT CHARSET=latin1
3434
describe t1;
3535
Field Type Null Key Default Extra
3636
a int(11) YES NULL
37-
b int(11) YES UNI NULL VIRTUAL
37+
b int(11) YES UNI NULL GENERATED
3838
drop table t1;
3939
create table t1 (a int, b int generated always as (a*2) virtual);
4040
alter table t1 add unique key (b);
@@ -58,26 +58,26 @@ show create table t1;
5858
Table Create Table
5959
t1 CREATE TABLE `t1` (
6060
`a` int(11) DEFAULT NULL,
61-
`b` VIRTUAL int(11) AS (a*2) STORED,
61+
`b` int(11) GENERATED ALWAYS AS (a*2) STORED,
6262
KEY `b` (`b`)
6363
) ENGINE=InnoDB DEFAULT CHARSET=latin1
6464
describe t1;
6565
Field Type Null Key Default Extra
6666
a int(11) YES NULL
67-
b int(11) YES MUL NULL VIRTUAL
67+
b int(11) YES MUL NULL GENERATED
6868
drop table t1;
6969
create table t1 (a int, b int generated always as (a*2) stored, index (a,b));
7070
show create table t1;
7171
Table Create Table
7272
t1 CREATE TABLE `t1` (
7373
`a` int(11) DEFAULT NULL,
74-
`b` VIRTUAL int(11) AS (a*2) STORED,
74+
`b` int(11) GENERATED ALWAYS AS (a*2) STORED,
7575
KEY `a` (`a`,`b`)
7676
) ENGINE=InnoDB DEFAULT CHARSET=latin1
7777
describe t1;
7878
Field Type Null Key Default Extra
7979
a int(11) YES MUL NULL
80-
b int(11) YES NULL VIRTUAL
80+
b int(11) YES NULL GENERATED
8181
drop table t1;
8282
create table t1 (a int, b int generated always as (a*2) virtual);
8383
alter table t1 add index (b);

0 commit comments

Comments
 (0)