config root man

Current Path : /usr/opt/mysql57/mysql-test/suite/gcol/r/

FreeBSD hs32.drive.ne.jp 9.1-RELEASE FreeBSD 9.1-RELEASE #1: Wed Jan 14 12:18:08 JST 2015 root@hs32.drive.ne.jp:/sys/amd64/compile/hs32 amd64
Upload File :
Current File : //usr/opt/mysql57/mysql-test/suite/gcol/r/gcol_column_def_options_innodb.result

SET @@session.default_storage_engine = 'InnoDB';
#
# Section 1. Wrong column definition options
#            - DEFAULT <value>
#            - AUTO_INCREMENT
# NOT NULL
create table t1 (a int, b int generated always as (a+1) virtual not null);
insert into t1(a) values(null);
ERROR 23000: Column 'b' cannot be null
insert into t1(a) values(1);
select * from t1;
a	b
1	2
drop table t1;
create table t1 (a int, b int generated always as (a+1) stored not null);
insert into t1(a) values(null);
ERROR 23000: Column 'b' cannot be null
insert into t1(a) values(1);
select * from t1;
a	b
1	2
drop table t1;
create table t1 (a int);
alter table t1 add column b int generated always as (a+1) virtual not null;
drop table t1;
# NULL  
create table t1 (a int, b int generated always as (a+1) virtual null);
drop table t1;
create table t1 (a int);
alter table t1 add column b int generated always as (a+1) virtual null;
drop table t1;
# Added columns mixed with virtual GC and other columns
create table t1 (a int);
insert into t1 values(1);
alter table t1 add column (b int generated always as (a+1) virtual, c int);
affected rows: 1
info: Records: 1  Duplicates: 0  Warnings: 0
alter table t1 add column (d int, e int generated always as (a+1) virtual);
affected rows: 1
info: Records: 1  Duplicates: 0  Warnings: 0
alter table t1 add column (f int generated always as (a+1) virtual, g int as(5) stored);
affected rows: 1
info: Records: 1  Duplicates: 0  Warnings: 0
alter table t1 add column (h int generated always as (a+1) virtual, i int as(5) virtual);
affected rows: 0
info: Records: 0  Duplicates: 0  Warnings: 0
drop table t1;
# DEFAULT
create table t1 (a int, b int generated always as (a+1) virtual default 0);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'default 0)' at line 1
create table t1 (a int);
alter table t1 add column b int generated always as (a+1) virtual default 0;
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'default 0' at line 1
drop table t1;
# AUTO_INCREMENT
create table t1 (a int, b int generated always as (a+1) virtual AUTO_INCREMENT);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'AUTO_INCREMENT)' at line 1
create table t1 (a int);
alter table t1 add column b int generated always as (a+1) virtual AUTO_INCREMENT;
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'AUTO_INCREMENT' at line 1
drop table t1;
# [PRIMARY] KEY
create table t1 (a int, b int generated always as (a+1) virtual key);
ERROR HY000: 'Defining a virtual generated column as primary key' is not supported for generated columns.
create table t1 (a int, b int generated always as (a+1) stored key);
insert into t1 (a) values (3),(1),(2);
select * from t1;
a	b
1	2
2	3
3	4
drop table t1;
create table t1 (a int, b int generated always as (a+1) virtual primary key);
ERROR HY000: 'Defining a virtual generated column as primary key' is not supported for generated columns.
create table t1 (a int, b int generated always as (a+1) stored primary key);
insert into t1 (a) values (3),(1),(2);
select * from t1 order by b;
a	b
1	2
2	3
3	4
drop table t1;
create table t1 (a int);
alter table t1 add column b int generated always as (a+1) virtual key;
ERROR HY000: 'Defining a virtual generated column as primary key' is not supported for generated columns.
alter table t1 add column b int generated always as (a+1) stored key;
alter table t1 add column c int generated always as (a+2) virtual primary key;
ERROR HY000: 'Defining a virtual generated column as primary key' is not supported for generated columns.
show create table t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `a` int(11) DEFAULT NULL,
  `b` int(11) GENERATED ALWAYS AS ((`a` + 1)) STORED NOT NULL,
  PRIMARY KEY (`b`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
alter table t1 add column c int generated always as (a+2) stored primary key;
ERROR 42000: Multiple primary key defined
drop table t1;
# Section 2. Other column definition options
#            - COMMENT
#            - REFERENCES (only syntax testing here)
#            - STORED (only systax testing here)
create table t1 (a int, b int generated always as (a % 2) virtual comment 'my comment');
show create table t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `a` int(11) DEFAULT NULL,
  `b` int(11) GENERATED ALWAYS AS ((`a` % 2)) VIRTUAL COMMENT 'my comment'
) ENGINE=InnoDB DEFAULT CHARSET=latin1
describe t1;
Field	Type	Null	Key	Default	Extra
a	int(11)	YES		NULL	
b	int(11)	YES		NULL	VIRTUAL GENERATED
drop table t1;
create table t1 (a int, b int generated always as (a % 2) virtual);
alter table t1 modify b int generated always as (a % 2) virtual comment 'my comment';
show create table t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `a` int(11) DEFAULT NULL,
  `b` int(11) GENERATED ALWAYS AS ((`a` % 2)) VIRTUAL COMMENT 'my comment'
) ENGINE=InnoDB DEFAULT CHARSET=latin1
describe t1;
Field	Type	Null	Key	Default	Extra
a	int(11)	YES		NULL	
b	int(11)	YES		NULL	VIRTUAL GENERATED
insert into t1 (a) values (1);
select * from t1;
a	b
1	1
insert into t1 values (2,default);
select a,b from t1 order by a;
a	b
1	1
2	0
create table t2 like t1;
show create table t2;
Table	Create Table
t2	CREATE TABLE `t2` (
  `a` int(11) DEFAULT NULL,
  `b` int(11) GENERATED ALWAYS AS ((`a` % 2)) VIRTUAL COMMENT 'my comment'
) ENGINE=InnoDB DEFAULT CHARSET=latin1
describe t2;
Field	Type	Null	Key	Default	Extra
a	int(11)	YES		NULL	
b	int(11)	YES		NULL	VIRTUAL GENERATED
insert into t2 (a) values (1);
select * from t2;
a	b
1	1
insert into t2 values (2,default);
select a,b from t2 order by a;
a	b
1	1
2	0
drop table t2;
drop table t1;
create table t1 (a int, b int generated always as (a % 2) stored);
show create table t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `a` int(11) DEFAULT NULL,
  `b` int(11) GENERATED ALWAYS AS ((`a` % 2)) STORED
) ENGINE=InnoDB DEFAULT CHARSET=latin1
describe t1;
Field	Type	Null	Key	Default	Extra
a	int(11)	YES		NULL	
b	int(11)	YES		NULL	STORED GENERATED
insert into t1 (a) values (1);
select * from t1;
a	b
1	1
insert into t1 values (2,default);
select a,b from t1 order by a;
a	b
1	1
2	0
drop table t1;
create table t2 (a int);
create table t1 (a int, b int generated always as (a % 2) stored references t2(a));
show create table t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `a` int(11) DEFAULT NULL,
  `b` int(11) GENERATED ALWAYS AS ((`a` % 2)) STORED
) ENGINE=InnoDB DEFAULT CHARSET=latin1
drop table t1;
create table t1 (a int, b int generated always as (a % 2) virtual);
alter table t1 modify b int generated always as (a % 2) stored references t2(a);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'references t2(a)' at line 1
show create table t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `a` int(11) DEFAULT NULL,
  `b` int(11) GENERATED ALWAYS AS ((`a` % 2)) VIRTUAL
) ENGINE=InnoDB DEFAULT CHARSET=latin1
drop table t1;
drop table t2;
FK options
create table t1(a int,  b int as (a % 2), c int as (a) stored);
create table t2 (a int);
alter table t1 add constraint foreign key fk(d) references t2(a);
ERROR 42000: Key column 'd' doesn't exist in table
alter table t1 add constraint foreign key fk(b) references t2(a);
ERROR HY000: Cannot add foreign key constraint
alter table t1 add constraint foreign key fk(c) references t2(a) on delete set null;
ERROR HY000: Cannot define foreign key with ON DELETE SET NULL clause on a generated column.
alter table t1 add constraint foreign key fk(c) references t2(a) on update set null;
ERROR HY000: Cannot define foreign key with ON UPDATE SET NULL clause on a generated column.
alter table t1 add constraint foreign key fk(c) references t2(a) on update cascade;
ERROR HY000: Cannot define foreign key with ON UPDATE CASCADE clause on a generated column.
drop table t1;
drop table t2;
Generated alwasy is optional
create table t1 (a int, b int as (a % 2) virtual);
show create table t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `a` int(11) DEFAULT NULL,
  `b` int(11) GENERATED ALWAYS AS ((`a` % 2)) VIRTUAL
) ENGINE=InnoDB DEFAULT CHARSET=latin1
describe t1;
Field	Type	Null	Key	Default	Extra
a	int(11)	YES		NULL	
b	int(11)	YES		NULL	VIRTUAL GENERATED
drop table t1;
create table t1 (a int, b int as (a % 2) stored);
show create table t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `a` int(11) DEFAULT NULL,
  `b` int(11) GENERATED ALWAYS AS ((`a` % 2)) STORED
) ENGINE=InnoDB DEFAULT CHARSET=latin1
describe t1;
Field	Type	Null	Key	Default	Extra
a	int(11)	YES		NULL	
b	int(11)	YES		NULL	STORED GENERATED
drop table t1;
Default should be non-stored column
create table t1 (a int, b int as (a % 2));
show create table t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `a` int(11) DEFAULT NULL,
  `b` int(11) GENERATED ALWAYS AS ((`a` % 2)) VIRTUAL
) ENGINE=InnoDB DEFAULT CHARSET=latin1
describe t1;
Field	Type	Null	Key	Default	Extra
a	int(11)	YES		NULL	
b	int(11)	YES		NULL	VIRTUAL GENERATED
drop table t1;
Expression can be constant 
create table t1 (a int, b int as (5 * 2));
show create table t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `a` int(11) DEFAULT NULL,
  `b` int(11) GENERATED ALWAYS AS ((5 * 2)) VIRTUAL
) ENGINE=InnoDB DEFAULT CHARSET=latin1
describe t1;
Field	Type	Null	Key	Default	Extra
a	int(11)	YES		NULL	
b	int(11)	YES		NULL	VIRTUAL GENERATED
drop table t1;
Test generated columns referencing other generated columns
create table t1 (a int unique, b int generated always as(-a) virtual, c int generated always as (b + 1) virtual);
insert into t1 (a) values (1), (2);
select * from t1;
a	b	c
1	-1	0
2	-2	-1
insert into t1(a) values (1) on duplicate key update a=3;
select * from t1;
a	b	c
2	-2	-1
3	-3	-2
update t1 set a=4 where a=2;
select * from t1;
a	b	c
3	-3	-2
4	-4	-3
drop table t1;
create table t1 (a int, b int generated always as(-b) virtual, c int generated always as (b + 1) virtual);
ERROR HY000: Generated column can refer only to generated columns defined prior to it.
create table t1 (a int, b int generated always as(-c) virtual, c int generated always as (b + 1) virtual);
ERROR HY000: Generated column can refer only to generated columns defined prior to it.
CREATE TABLE t1 (pk INTEGER AUTO_INCREMENT, col_int_nokey INTEGER GENERATED ALWAYS AS (pk + col_int_key) STORED, col_int_key INTEGER, PRIMARY KEY (pk));
ERROR HY000: Generated column 'col_int_nokey' cannot refer to auto-increment column.
# Bug#20339347: FAIL TO USE CREATE ....SELECT STATEMENT TO CREATE A NEW TABLE
create table t1 (a int, b int generated always as(-a) virtual, c int generated always as (b + 1) stored);
insert into t1(a) values(1),(2);
create table tt as select * from t1;
select * from t1 order by a;
a	b	c
1	-1	0
2	-2	-1
select * from tt order by a;
a	b	c
1	-1	0
2	-2	-1
drop table t1,tt;
# Bug#20745142: GENERATED COLUMNS: ASSERTION FAILED:
#   THD->CHANGE_LIST.IS_EMPTY()
#
CREATE TABLE t1(a bigint AS (a between 1 and 1));
ERROR HY000: Generated column can refer only to generated columns defined prior to it.
# Bug#20757211: GENERATED COLUMNS: ALTER TABLE CRASHES
#  IN FIND_FIELD_IN_TABLE
#
CREATE TABLE t1(a int);
ALTER TABLE t1 ADD COLUMN z int GENERATED ALWAYS AS
( 1 NOT IN (SELECT 1 FROM t1 WHERE c0006) ) virtual;
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'select 1 from `t1` where `c0006`))))' at line 1
DROP TABLE t1;
# Bug#20566243: ERROR WHILE DOING CREATE TABLE T1 SELECT (QUERY ON GC COLUMNS)
CREATE TABLE t1(a int, b int as (a + 1),
c varchar(12) as ("aaaabb") stored, d blob as (c));
INSERT INTO t1(a) VALUES(1),(3);
SHOW CREATE TABLE t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `a` int(11) DEFAULT NULL,
  `b` int(11) GENERATED ALWAYS AS ((`a` + 1)) VIRTUAL,
  `c` varchar(12) GENERATED ALWAYS AS ('aaaabb') STORED,
  `d` blob GENERATED ALWAYS AS (`c`) VIRTUAL
) ENGINE=InnoDB DEFAULT CHARSET=latin1
SELECT * FROM t1 order by a;
a	b	c	d
1	2	aaaabb	aaaabb
3	4	aaaabb	aaaabb
CREATE TABLE t2 LIKE t1;
SHOW CREATE TABLE t2;
Table	Create Table
t2	CREATE TABLE `t2` (
  `a` int(11) DEFAULT NULL,
  `b` int(11) GENERATED ALWAYS AS ((`a` + 1)) VIRTUAL,
  `c` varchar(12) GENERATED ALWAYS AS ('aaaabb') STORED,
  `d` blob GENERATED ALWAYS AS (`c`) VIRTUAL
) ENGINE=InnoDB DEFAULT CHARSET=latin1
CREATE TABLE t3 AS SELECT * FROM t1;
SHOW CREATE TABLE t3;
Table	Create Table
t3	CREATE TABLE `t3` (
  `a` int(11) DEFAULT NULL,
  `b` int(11) DEFAULT NULL,
  `c` varchar(12) DEFAULT NULL,
  `d` blob
) ENGINE=InnoDB DEFAULT CHARSET=latin1
SELECT * FROM t3 order by a;
a	b	c	d
1	2	aaaabb	aaaabb
3	4	aaaabb	aaaabb
CREATE TABLE t4 AS SELECT b,c,d FROM t1;
SHOW CREATE TABLE t4;
Table	Create Table
t4	CREATE TABLE `t4` (
  `b` int(11) DEFAULT NULL,
  `c` varchar(12) DEFAULT NULL,
  `d` blob
) ENGINE=InnoDB DEFAULT CHARSET=latin1
SELECT * FROM t4 order by b;
b	c	d
2	aaaabb	aaaabb
4	aaaabb	aaaabb
DROP TABLE t1,t2,t3,t4;
# Bug#21025003:WL8149:ASSERTION `CTX->NUM_TO_DROP_FK
#  == HA_ALTER_INFO->ALTER_INFO-> FAILED
#
CREATE TABLE t1 (
col1 int(11) DEFAULT NULL,
col2 int(11) DEFAULT NULL,
col3 int(11) DEFAULT NULL,
col4 int(11) DEFAULT NULL,
col5 int(11) GENERATED ALWAYS AS (col4 / col2) VIRTUAL,
col6 text
);
INSERT INTO t1(col1,col2,col3,col4,col6) VALUES(NULL,1,4,0,REPEAT(2,1000));
ALTER TABLE t1 DROP PRIMARY KEY , ADD KEY idx ( col5, col2 );
ERROR 42000: Can't DROP 'PRIMARY'; check that column/key exists
DROP TABLE t1;
# Bug#20949226:i CAN ASSIGN NON-DEFAULT() VALUE TO GENERATED COLUMN
# 
CREATE TABLE t1 (c1 INT, c2 INT AS (c1 * 2)) SELECT 1 AS c1, 5 AS c2;
ERROR HY000: The value specified for generated column 'c2' in table 't1' is not allowed.
CREATE TABLE t2 (a int);
INSERT INTO t2 values(1);
CREATE TABLE t1 (c1 INT, c2 INT AS (c1 * 2)) SELECT 1 AS c1, a AS c2 from t2;
ERROR HY000: The value specified for generated column 'c2' in table 't1' is not allowed.
CREATE TABLE t1 (c1 INT, c2 INT AS (c1 * 2)) SELECT 1 AS c1, 5;
SELECT * FROM t1;
c2	c1	5
2	1	5
DROP TABLE t1, t2;
# Bug#21074624:i WL8149:SIG 11 INNOBASE_GET_COMPUTED_VALUE |
#  INNOBASE/HANDLER/HA_INNODB.CC:19082
CREATE TABLE t1 (
col1 int(11) NOT NULL,
col2 int(11) DEFAULT NULL,
col3 int(11) NOT NULL,
col4 int(11) DEFAULT NULL,
col5 int(11) GENERATED ALWAYS AS (col2 % col4) VIRTUAL,
col6 int(11) GENERATED ALWAYS AS (col3 + col3) VIRTUAL,
col7 int(11) GENERATED ALWAYS AS (col5 / col5) VIRTUAL,
col8 int(11) GENERATED ALWAYS AS (col6 / col5) VIRTUAL,
col9 text,
extra int(11) DEFAULT NULL,
KEY idx (col5)
);
INSERT INTO t1(col1,col2,col3,col4,col9,extra)
VALUES(0,6,3,4,REPEAT(4,1000),0);
ALTER TABLE t1 DROP COLUMN col1;
DROP TABLE t1;
# Bug#21390605:VALGRIND ERROR ON DELETE FROM TABLE CONTAINING
#  AN INDEXED VIRTUAL COLUMN
CREATE TABLE t1 (
a INTEGER,
b INTEGER GENERATED ALWAYS AS (a) VIRTUAL,
c INTEGER GENERATED ALWAYS AS (b) VIRTUAL,
INDEX idx (b,c)
);
INSERT INTO t1 (a) VALUES (42);
DELETE FROM t1 WHERE c = 42;
DROP TABLE t1;
# Bug#20757211: GENERATED COLUMNS: ALTER TABLE CRASHES
#  IN FIND_FIELD_IN_TABLE
# 
CREATE TABLE t1(a int);
ALTER TABLE t1 ADD COLUMN z int GENERATED ALWAYS AS
( 1 NOT IN (SELECT 1 FROM t1 WHERE c0006) ) virtual;
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'select 1 from `t1` where `c0006`))))' at line 1
CREATE TABLE t2(a int, b int as (1 NOT IN (SELECT 1 FROM t1 WHERE not_exist_col)));
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'select 1 from `t1` where `not_exist_col`))))' at line 1
CREATE TABLE t2(a int, b int as (1 NOT IN (SELECT 1 FROM dual)));
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'select 1))))' at line 1
DROP TABLE t1;
# Bug#21142905: PARTITIONED GENERATED COLS -
#  !TABLE || (!TABLE->WRITE_SET || BITMAP_IS_SET
# 
CREATE TABLE t1 (
a int,
b int generated always as (a) virtual,
c int generated always as (b+a) virtual,
d int generated always as (b+a) virtual
) PARTITION BY LINEAR HASH (b);
INSERT INTO t1(a) VALUES(0);
DELETE FROM t1 WHERE c=1;
DROP TABLE t1;
# Bug #20709487: COLLATE OPTION NOT ACCEPTED IN GENERATED COLUMN
#                DEFINITION
#
# Check for a valid syntax:
CREATE TABLE t1 (c CHAR(10) CHARACTER SET utf8 COLLATE utf8_bin GENERATED ALWAYS AS ("foo bar"));
SHOW CREATE TABLE t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `c` char(10) CHARACTER SET utf8 COLLATE utf8_bin GENERATED ALWAYS AS ('foo bar') VIRTUAL
) ENGINE=InnoDB DEFAULT CHARSET=latin1
DROP TABLE t1;
CREATE TABLE t1 (i INT);
ALTER TABLE t1 ADD COLUMN c CHAR(10) CHARACTER SET utf8 COLLATE utf8_bin GENERATED ALWAYS AS ("foo bar");
SHOW CREATE TABLE t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `i` int(11) DEFAULT NULL,
  `c` char(10) CHARACTER SET utf8 COLLATE utf8_bin GENERATED ALWAYS AS ('foo bar') VIRTUAL
) ENGINE=InnoDB DEFAULT CHARSET=latin1
DROP TABLE t1;
CREATE TABLE t1 (i INT COLLATE utf8_bin, c INT COLLATE utf8_bin GENERATED ALWAYS AS (10));
SHOW CREATE TABLE t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `i` int(11) DEFAULT NULL,
  `c` int(11) GENERATED ALWAYS AS (10) VIRTUAL
) ENGINE=InnoDB DEFAULT CHARSET=latin1
DROP TABLE t1;
# Check for a charset mismatch processing:
CREATE TABLE t1 (t CHAR(10) CHARACTER SET utf8 COLLATE ascii_bin GENERATED ALWAYS AS ("foo bar"));
ERROR 42000: COLLATION 'ascii_bin' is not valid for CHARACTER SET 'utf8'
# Check for a sorting order support:
CREATE TABLE t1 (c CHAR(10) CHARSET latin1 COLLATE latin1_bin,
c_ci CHAR(10) CHARSET latin1 COLLATE latin1_general_ci GENERATED ALWAYS AS (c),
c_cs CHAR(10) CHARSET latin1 COLLATE latin1_general_cs GENERATED ALWAYS AS (c));
INSERT INTO t1 (c) VALUES ('a'), ('A'), ('b');
SELECT * FROM t1 ORDER BY c;
c	c_ci	c_cs
A	A	A
a	a	a
b	b	b
SELECT * FROM t1 ORDER BY c_ci, c;
c	c_ci	c_cs
A	A	A
a	a	a
b	b	b
SELECT * FROM t1 ORDER BY c_cs;
c	c_ci	c_cs
A	A	A
a	a	a
b	b	b
SELECT c, c_ci REGEXP 'A', c_cs REGEXP 'A' FROM t1;
c	c_ci REGEXP 'A'	c_cs REGEXP 'A'
A	1	1
a	1	0
b	0	0
DROP TABLE t1;
# Bug #21469535: VALGRIND ERROR (CONDITIONAL JUMP) WHEN INSERT
#                ROWS INTO A PARTITIONED TABLE
#
CREATE TABLE t1 (
id INT NOT NULL,
store_id INT NOT NULL,
x INT GENERATED ALWAYS AS (id + store_id)
)
PARTITION BY RANGE (store_id) (
PARTITION p0 VALUES LESS THAN (6),
PARTITION p1 VALUES LESS THAN (11),
PARTITION p2 VALUES LESS THAN (16),
PARTITION p3 VALUES LESS THAN (21)
);
INSERT INTO t1 VALUES(1, 2, default);
DROP TABLE t1;
# Bug#21465626:ASSERT/CRASH ON DROPPING/ADDING VIRTUAL COLUMN
CREATE TABLE t (a int(11), b int(11),
c int(11) GENERATED ALWAYS AS (a+b) VIRTUAL,
d int(11) GENERATED ALWAYS AS (a+b) VIRTUAL);
INSERT INTO t(a,b) VALUES(1,2);
# Mixed drop/add/rename virtual with non-virtual columns,
# ALGORITHM=INPLACE is not supported for InnoDB
ALTER TABLE t DROP d, ADD e varchar(10);
affected rows: 1
info: Records: 1  Duplicates: 0  Warnings: 0
ALTER TABLE t ADD d int, ADD f char(10) AS ('aaa');
affected rows: 1
info: Records: 1  Duplicates: 0  Warnings: 0
ALTER TABLE t CHANGE d dd int, CHANGE f ff varchar(10) AS ('bbb');
affected rows: 1
info: Records: 1  Duplicates: 0  Warnings: 0
# Only drop/add/change virtual, inplace is supported for Innodb
ALTER TABLE t DROP c, DROP ff;
affected rows: 0
info: Records: 0  Duplicates: 0  Warnings: 0
ALTER TABLE t ADD c int(11) as (a+b), ADD f varchar(10) as ('aaa');
affected rows: 0
info: Records: 0  Duplicates: 0  Warnings: 0
ALTER TABLE t CHANGE c c int(11) as (a), CHANGE f f varchar(10) as('bbb');
affected rows: 1
info: Records: 1  Duplicates: 0  Warnings: 0
# Change order should be ALGORITHM=INPLACE on Innodb
ALTER TABLE t CHANGE c c int(11) as (a) after f;
affected rows: 1
info: Records: 1  Duplicates: 0  Warnings: 0
ALTER TABLE t CHANGE b b int(11) after c;
affected rows: 1
info: Records: 1  Duplicates: 0  Warnings: 0
# TODO: Changing virtual column type should be ALGORITHM=INPLACE on InnoDB, current it goes only with COPY method
ALTER TABLE t CHANGE c c varchar(10) as ('a');
affected rows: 1
info: Records: 1  Duplicates: 0  Warnings: 0
# Changing stored column type is ALGORITHM=COPY
ALTER TABLE t CHANGE dd d varchar(10);
affected rows: 1
info: Records: 1  Duplicates: 0  Warnings: 0
ALTER TABLE t ADD INDEX idx(a), ADD INDEX idx1(c);
affected rows: 0
info: Records: 0  Duplicates: 0  Warnings: 0
ALTER TABLE t RENAME INDEX idx TO idx2, RENAME INDEX idx1 TO idx3;
affected rows: 0
info: Records: 0  Duplicates: 0  Warnings: 0
ALTER TABLE t DROP INDEX idx2, DROP INDEX idx3;
affected rows: 0
info: Records: 0  Duplicates: 0  Warnings: 0
ALTER TABLE t ADD INDEX idx(c), ADD INDEX idx1(d);
affected rows: 0
info: Records: 0  Duplicates: 0  Warnings: 0
ALTER TABLE t DROP INDEX idx, DROP INDEX idx1;
affected rows: 0
info: Records: 0  Duplicates: 0  Warnings: 0
DROP TABLE t;
#
# Bug#21900170: CAN'T CREATE TABLE WITH NULLABLE GENERATED COLUMNS
#
CREATE TABLE t1 (
a INT,
b INT GENERATED ALWAYS AS (-a) VIRTUAL NULL,
c INT GENERATED ALWAYS AS (a + b) STORED NULL);
SHOW FULL COLUMNS FROM t1;
Field	Type	Collation	Null	Key	Default	Extra	Privileges	Comment
a	int(11)	NULL	YES		NULL		#	
b	int(11)	NULL	YES		NULL	VIRTUAL GENERATED	#	
c	int(11)	NULL	YES		NULL	STORED GENERATED	#	
INSERT INTO t1 (a) VALUES (NULL), (1);
SELECT * FROM t1;
a	b	c
NULL	NULL	NULL
1	-1	0
DROP TABLE t1;
# Bug#21854004: GCOLS:INNODB: FAILING ASSERTION: I < TABLE->N_DEF
CREATE TABLE t1(
col1 INTEGER PRIMARY KEY,
col2 INTEGER,
col3 INTEGER,
col4 INTEGER,
vgc1 INTEGER AS (col2 + col3) VIRTUAL,
sgc1 INTEGER AS (col2 - col3) STORED
);
INSERT INTO t1(col1, col2, col3) VALUES
(1, 10, 100), (2, 20, 200);
SELECT * FROM t1 order by col1;
col1	col2	col3	col4	vgc1	sgc1
1	10	100	NULL	110	-90
2	20	200	NULL	220	-180
ALTER TABLE t1 MODIFY COLUMN vgc1 INTEGER AS (col2 * col3) VIRTUAL;
SELECT * FROM t1 order by col1;
col1	col2	col3	col4	vgc1	sgc1
1	10	100	NULL	1000	-90
2	20	200	NULL	4000	-180
ALTER TABLE t1 MODIFY COLUMN sgc1 INTEGER AS (col2 / col3) STORED;
SELECT * FROM t1 order by col1;
col1	col2	col3	col4	vgc1	sgc1
1	10	100	NULL	1000	0
2	20	200	NULL	4000	0
ALTER TABLE t1 MODIFY COLUMN vgc1 INTEGER AS (col2 + col3) VIRTUAL;
ALTER TABLE t1 MODIFY COLUMN sgc1 INTEGER AS (col2 - col3) STORED;
ALTER TABLE t1 ADD INDEX vgc1 (vgc1);
ALTER TABLE t1 ADD INDEX sgc1 (sgc1);
ALTER TABLE t1 MODIFY COLUMN vgc1 INTEGER AS (col2 * col3) VIRTUAL;
SELECT * FROM t1 order by col1;
col1	col2	col3	col4	vgc1	sgc1
1	10	100	NULL	1000	-90
2	20	200	NULL	4000	-180
SELECT vgc1 FROM t1 order by vgc1;
vgc1
1000
4000
ALTER TABLE t1 MODIFY COLUMN sgc1 INTEGER AS (col2 / col3) STORED;
SELECT * FROM t1 order by col1;
col1	col2	col3	col4	vgc1	sgc1
1	10	100	NULL	1000	0
2	20	200	NULL	4000	0
SELECT sgc1 FROM t1 order by sgc1;
sgc1
0
0
ALTER TABLE t1 DROP INDEX vgc1;
ALTER TABLE t1 DROP INDEX sgc1;
ALTER TABLE t1 MODIFY COLUMN vgc1 INTEGER AS (col2 + col3) VIRTUAL;
ALTER TABLE t1 ADD UNIQUE INDEX vgc1 (vgc1);
ALTER TABLE t1 MODIFY COLUMN sgc1 INTEGER AS (col2 - col3) STORED;
ALTER TABLE t1 ADD UNIQUE INDEX sgc1 (sgc1);
ALTER TABLE t1 MODIFY COLUMN vgc1 INTEGER AS (col2 / col3) VIRTUAL;
ERROR 23000: Duplicate entry '0' for key 'vgc1'
ALTER TABLE t1 MODIFY COLUMN sgc1 INTEGER AS (col2 / col3) STORED;
ERROR 23000: Duplicate entry '0' for key 'sgc1'
ALTER TABLE t1 MODIFY COLUMN vgc1 INTEGER AS (col2 * col3) VIRTUAL;
SELECT * FROM t1 order by col1;
col1	col2	col3	col4	vgc1	sgc1
1	10	100	NULL	1000	-90
2	20	200	NULL	4000	-180
SELECT vgc1 FROM t1 order by col1;
vgc1
1000
4000
ALTER TABLE t1 MODIFY COLUMN sgc1 INTEGER AS (col2 * col3) STORED;
SELECT * FROM t1 order by col1;
col1	col2	col3	col4	vgc1	sgc1
1	10	100	NULL	1000	1000
2	20	200	NULL	4000	4000
SELECT sgc1 FROM t1 order by sgc1;
sgc1
1000
4000
ALTER TABLE t1 MODIFY COLUMN vgc1 INTEGER AS (col2 * col3) STORED;
ERROR HY000: 'Changing the STORED status' is not supported for generated columns.
ALTER TABLE t1 MODIFY COLUMN sgc1 INTEGER AS (col2 / col3) VIRTUAL;
ERROR HY000: 'Changing the STORED status' is not supported for generated columns.
ALTER TABLE t1 MODIFY COLUMN col4 INTEGER AS (col1 + col2 + col3) STORED;
SELECT * FROM t1 order by col1;
col1	col2	col3	col4	vgc1	sgc1
1	10	100	111	1000	1000
2	20	200	222	4000	4000
ALTER TABLE t1 MODIFY COLUMN col4 INTEGER;
SELECT * FROM t1 order by col1;
col1	col2	col3	col4	vgc1	sgc1
1	10	100	111	1000	1000
2	20	200	222	4000	4000
DROP TABLE t1;
#
# bug#22018979: RECORD NOT FOUND ON UPDATE,
#                VIRTUAL COLUMN, ASSERTION 0
SET @sql_mode_save= @@sql_mode;
SET sql_mode= 'ANSI';
CREATE TABLE t1 (
a INT,
b VARCHAR(10),
c CHAR(3) GENERATED ALWAYS AS (substr(b,1,3)) VIRTUAL,
PRIMARY KEY (a),
KEY c(c)
);
INSERT INTO t1(a, b) values(1, 'bbbb'), (2, 'cc');
SHOW CREATE TABLE t1;
Table	Create Table
t1	CREATE TABLE "t1" (
  "a" int(11) NOT NULL,
  "b" varchar(10) DEFAULT NULL,
  "c" char(3) GENERATED ALWAYS AS (substr(`b`,1,3)) VIRTUAL,
  PRIMARY KEY ("a"),
  KEY "c" ("c")
)
SELECT * FROM t1 order by a;
a	b	c
1	bbbb	bbb
2	cc	cc
SET sql_mode= '';
FLUSH TABLE t1;
SHOW CREATE TABLE t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `a` int(11) NOT NULL,
  `b` varchar(10) DEFAULT NULL,
  `c` char(3) GENERATED ALWAYS AS (substr(`b`,1,3)) VIRTUAL,
  PRIMARY KEY (`a`),
  KEY `c` (`c`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
SELECT * FROM t1 order by a;
a	b	c
1	bbbb	bbb
2	cc	cc
DELETE FROM t1 where a= 2;
SET sql_mode= @sql_mode_save;
DROP TABLE t1;
#
# Bug#22680839: DEFAULT IS NOT DETERMINISTIC AND SHOULD NOT BE
#               ALLOWED IN GENERATED COLUMNS
#
CREATE TABLE tzz(a INT DEFAULT 5,
gc1 INT AS (a+DEFAULT(a)) VIRTUAL,
gc2 INT AS (a+DEFAULT(a)) STORED,
KEY k1(gc1));
INSERT INTO tzz(A) VALUES (1);
SELECT * FROM tzz;
a	gc1	gc2
1	6	6
SELECT gc1 FROM tzz;
gc1
6
ALTER TABLE tzz MODIFY COLUMN a INT DEFAULT 6;
SELECT * FROM tzz;
a	gc1	gc2
1	7	7
SELECT gc1 FROM tzz;
gc1
7
DROP TABLE tzz;
# Test 1: ALTER DEFAULT
#
CREATE TABLE t1(a INT PRIMARY KEY DEFAULT 5,
b INT AS (1 + DEFAULT(a)) STORED,
c INT AS (1 + DEFAULT(a)) VIRTUAL);
INSERT INTO t1 VALUES ();
ALTER TABLE t1 ALTER COLUMN a SET DEFAULT 7, ALGORITHM = INPLACE;
ERROR 0A000: ALGORITHM=INPLACE is not supported for this operation. Try ALGORITHM=COPY.
ALTER TABLE t1 ALTER COLUMN a SET DEFAULT 7;
affected rows: 1
info: Records: 1  Duplicates: 0  Warnings: 0
ALTER TABLE t1 MODIFY COLUMN a INT DEFAULT 8;
affected rows: 1
info: Records: 1  Duplicates: 0  Warnings: 0
ALTER TABLE t1 CHANGE COLUMN a a DOUBLE DEFAULT 5;
affected rows: 1
info: Records: 1  Duplicates: 0  Warnings: 0
DROP TABLE t1;
# Test 2: ALTER DEFAULT + ADD GCOL
#
CREATE TABLE t1(a INT PRIMARY KEY DEFAULT 5);
INSERT INTO t1 VALUES();
ALTER TABLE t1 ALTER COLUMN a SET DEFAULT 7,
ADD COLUMN b INT AS (1 + DEFAULT(a)) STORED,
ALGORITHM = INPLACE;
ERROR 0A000: ALGORITHM=INPLACE is not supported for this operation. Try ALGORITHM=COPY.
ALTER TABLE t1 ALTER COLUMN a SET DEFAULT 7,
ADD COLUMN c INT AS (1 + DEFAULT(a)) VIRTUAL,
ALGORITHM = INPLACE;
Got one of the listed errors
ALTER TABLE t1 ALTER COLUMN a SET DEFAULT 7,
ADD COLUMN b INT AS (1 + DEFAULT(a)) STORED,
ADD COLUMN c INT AS (1 + DEFAULT(a)) VIRTUAL;
affected rows: 1
info: Records: 1  Duplicates: 0  Warnings: 0
DROP TABLE t1;
DROP VIEW  IF EXISTS v1,v2;
DROP TABLE IF EXISTS t1,t2,t3;
DROP PROCEDURE IF EXISTS p1;
DROP FUNCTION IF EXISTS f1;
DROP TRIGGER IF EXISTS trg1;
DROP TRIGGER IF EXISTS trg2;
set sql_warnings = 0;

Man Man