mirror of
https://github.com/MariaDB/server.git
synced 2025-01-27 01:04:19 +01:00
602 lines
15 KiB
Text
602 lines
15 KiB
Text
SET @@session.default_storage_engine = 'InnoDB';
|
|
create table t1 (a int,
|
|
b int generated always as (-a) virtual,
|
|
c int generated always as (-a) stored);
|
|
set sql_warnings = 1;
|
|
#
|
|
# *** INSERT ***
|
|
#
|
|
# INSERT INTO tbl_name VALUES... DEFAULT is specified against gcols
|
|
insert into t1 values (1,default,default);
|
|
select * from t1;
|
|
a b c
|
|
1 -1 -1
|
|
delete from t1;
|
|
select * from t1;
|
|
a b c
|
|
# INSERT INTO tbl_name VALUES... NULL is specified against gcols
|
|
insert into t1 values (1,null,null);
|
|
select * from t1;
|
|
a b c
|
|
1 -1 -1
|
|
delete from t1;
|
|
select * from t1;
|
|
a b c
|
|
# INSERT INTO tbl_name VALUES... a non-NULL value is specified against gcols
|
|
insert into t1 values (1,2,3);
|
|
Warnings:
|
|
Warning 1906 The value specified for generated column 'b' in table 't1' ignored
|
|
Warning 1906 The value specified for generated column 'c' in table 't1' ignored
|
|
select * from t1;
|
|
a b c
|
|
1 -1 -1
|
|
delete from t1;
|
|
select * from t1;
|
|
a b c
|
|
# INSERT INTO tbl_name (<non_gcol_list>) VALUES...
|
|
insert into t1 (a) values (1), (2);
|
|
select * from t1 order by a;
|
|
a b c
|
|
1 -1 -1
|
|
2 -2 -2
|
|
delete from t1;
|
|
select * from t1;
|
|
a b c
|
|
# INSERT INTO tbl_name (<normal+gcols>) VALUES... DEFAULT is specified
|
|
# against gcols
|
|
insert into t1 (a,b) values (1,default), (2,default);
|
|
select * from t1 order by a;
|
|
a b c
|
|
1 -1 -1
|
|
2 -2 -2
|
|
delete from t1;
|
|
select * from t1;
|
|
a b c
|
|
# INSERT INTO tbl_name (<normal+gcols>) VALUES... NULL is specified against gcols
|
|
insert into t1 (a,b) values (1,null), (2,null);
|
|
select * from t1;
|
|
a b c
|
|
1 -1 -1
|
|
2 -2 -2
|
|
delete from t1;
|
|
select * from t1;
|
|
a b c
|
|
# INSERT INTO tbl_name (<normal+gcols>) VALUES... a non-NULL value is specified
|
|
# against gcols
|
|
insert into t1 (a,b) values (1,3), (2,4);
|
|
Warnings:
|
|
Warning 1906 The value specified for generated column 'b' in table 't1' ignored
|
|
Warning 1906 The value specified for generated column 'b' in table 't1' ignored
|
|
select * from t1;
|
|
a b c
|
|
1 -1 -1
|
|
2 -2 -2
|
|
delete from t1;
|
|
select * from t1;
|
|
a b c
|
|
drop table t1;
|
|
# Table with UNIQUE non-gcol field. INSERT INTO tbl_name VALUES... ON DUPLICATE
|
|
# KEY UPDATE <non_gcol>=expr, <gcol>=expr
|
|
create table t1 (a int unique,
|
|
b int generated always as (-a) virtual,
|
|
c int generated always as (-a) stored);
|
|
insert into t1 values (1,default,default);
|
|
insert into t1 values (1,default,default)
|
|
on duplicate key update a=2, b=default;
|
|
select a,b,c from t1;
|
|
a b c
|
|
2 -2 -2
|
|
delete from t1 where b in (1,2);
|
|
select * from t1;
|
|
a b c
|
|
2 -2 -2
|
|
drop table t1;
|
|
# Table with UNIQUE gcol field. INSERT INTO tbl_name VALUES... ON DUPLICATE
|
|
# KEY UPDATE <non_gcol>=expr, <gcol>=expr
|
|
create table t1 (a int,
|
|
b int generated always as (-a) virtual,
|
|
c int generated always as (-a) stored unique);
|
|
insert into t1 values (1,default,default);
|
|
insert into t1 values (1,default,default)
|
|
on duplicate key update a=2, b=default;
|
|
select a,b,c from t1;
|
|
a b c
|
|
2 -2 -2
|
|
# CREATE new_table ... LIKE old_table
|
|
# INSERT INTO new_table SELECT * from old_table
|
|
create table t2 like t1;
|
|
insert into t2(a) select a from t1;
|
|
select * from t2;
|
|
a b c
|
|
2 -2 -2
|
|
drop table t2;
|
|
# CREATE new_table ... LIKE old_table INSERT INTO new_table (<non-gcols>, <gcols>)
|
|
# SELECT <non-gcols>, <gcols> from old_table
|
|
insert into t1 values (1,default,default);
|
|
select * from t1;
|
|
a b c
|
|
2 -2 -2
|
|
1 -1 -1
|
|
create table t2 like t1;
|
|
insert into t2 (a) select a from t1;
|
|
select * from t2 order by a;
|
|
a b c
|
|
1 -1 -1
|
|
2 -2 -2
|
|
drop table t2;
|
|
drop table t1;
|
|
#
|
|
# *** UPDATE ***
|
|
#
|
|
# UPDATE tbl_name SET non-gcol=expr WHERE non-gcol=expr
|
|
create table t1 (a int,
|
|
b int generated always as (-a) virtual,
|
|
c int generated always as (-a) stored);
|
|
insert into t1 (a) values (1), (2);
|
|
select * from t1 order by a;
|
|
a b c
|
|
1 -1 -1
|
|
2 -2 -2
|
|
update t1 set a=3 where a=2;
|
|
select * from t1 order by a;
|
|
a b c
|
|
1 -1 -1
|
|
3 -3 -3
|
|
delete from t1;
|
|
select * from t1;
|
|
a b c
|
|
# UPDATE tbl_name SET gcol=expr WHERE non-gcol=expr
|
|
insert into t1 (a) values (1), (2);
|
|
select * from t1 order by a;
|
|
a b c
|
|
1 -1 -1
|
|
2 -2 -2
|
|
update t1 set c=3 where a=2;
|
|
Warnings:
|
|
Warning 1906 The value specified for generated column 'c' in table 't1' ignored
|
|
select * from t1 order by a;
|
|
a b c
|
|
1 -1 -1
|
|
2 -2 -2
|
|
delete from t1;
|
|
select * from t1;
|
|
a b c
|
|
# UPDATE tbl_name SET non-gcol=expr WHERE gcol=expr
|
|
insert into t1 (a) values (1), (2);
|
|
select * from t1 order by a;
|
|
a b c
|
|
1 -1 -1
|
|
2 -2 -2
|
|
update t1 set a=3 where b=-2;
|
|
select * from t1 order by a;
|
|
a b c
|
|
1 -1 -1
|
|
3 -3 -3
|
|
delete from t1;
|
|
select * from t1;
|
|
a b c
|
|
# UPDATE tbl_name SET gcol=expr WHERE gcol=expr
|
|
insert into t1 (a) values (1), (2);
|
|
select * from t1 order by a;
|
|
a b c
|
|
1 -1 -1
|
|
2 -2 -2
|
|
update t1 set c=3 where b=-2;
|
|
Warnings:
|
|
Warning 1906 The value specified for generated column 'c' in table 't1' ignored
|
|
select * from t1 order by a;
|
|
a b c
|
|
1 -1 -1
|
|
2 -2 -2
|
|
delete from t1;
|
|
select * from t1;
|
|
a b c
|
|
drop table t1;
|
|
# INDEX created on gcol
|
|
# UPDATE tbl_name SET non-gcol=expr WHERE gcol=const
|
|
create table t1 (a int,
|
|
b int generated always as (-a) virtual,
|
|
c int generated always as (-a) stored unique);
|
|
insert into t1 (a) values (1), (2);
|
|
select * from t1 order by a;
|
|
a b c
|
|
1 -1 -1
|
|
2 -2 -2
|
|
update t1 set a=3 where c=-2;
|
|
select * from t1;
|
|
a b c
|
|
1 -1 -1
|
|
3 -3 -3
|
|
delete from t1;
|
|
select * from t1;
|
|
a b c
|
|
# INDEX created on gcol
|
|
# UPDATE tbl_name SET non-gcol=expr WHERE gcol=between const1 and const2
|
|
insert into t1 (a) values (1), (2);
|
|
select * from t1 order by a;
|
|
a b c
|
|
1 -1 -1
|
|
2 -2 -2
|
|
update t1 set a=3 where c between -3 and -2;
|
|
select * from t1 order by a;
|
|
a b c
|
|
1 -1 -1
|
|
3 -3 -3
|
|
delete from t1;
|
|
select * from t1;
|
|
a b c
|
|
# No INDEX created on gcol
|
|
# UPDATE tbl_name SET non-gcol=expr WHERE gcol=between const1 and const2
|
|
insert into t1 (a) values (1), (2);
|
|
select * from t1 order by a;
|
|
a b c
|
|
1 -1 -1
|
|
2 -2 -2
|
|
update t1 set a=3 where b between -3 and -2;
|
|
select * from t1 order by a;
|
|
a b c
|
|
1 -1 -1
|
|
3 -3 -3
|
|
delete from t1;
|
|
select * from t1;
|
|
a b c
|
|
# INDEX created on gcol
|
|
# UPDATE tbl_name SET non-gcol=expr
|
|
# WHERE gcol=between const1 and const2 ORDER BY gcol
|
|
insert into t1 (a) values (1), (2), (3), (4), (5);
|
|
select * from t1 order by a;
|
|
a b c
|
|
1 -1 -1
|
|
2 -2 -2
|
|
3 -3 -3
|
|
4 -4 -4
|
|
5 -5 -5
|
|
update t1 set a=6 where c between -1 and 0
|
|
order by c;
|
|
select * from t1 order by a;
|
|
a b c
|
|
2 -2 -2
|
|
3 -3 -3
|
|
4 -4 -4
|
|
5 -5 -5
|
|
6 -6 -6
|
|
delete from t1 where c between -6 and 0;
|
|
select * from t1;
|
|
a b c
|
|
# INDEX created on gcol
|
|
# UPDATE tbl_name SET non-gcol=expr
|
|
# WHERE gcol=between const1 and const2 ORDER BY gcol LIMIT 2
|
|
insert into t1 (a) values (1), (2), (3), (4), (5);
|
|
select * from t1 order by a;
|
|
a b c
|
|
1 -1 -1
|
|
2 -2 -2
|
|
3 -3 -3
|
|
4 -4 -4
|
|
5 -5 -5
|
|
update t1 set a=6 where c between -1 and 0
|
|
order by c limit 2;
|
|
select * from t1 order by a;
|
|
a b c
|
|
2 -2 -2
|
|
3 -3 -3
|
|
4 -4 -4
|
|
5 -5 -5
|
|
6 -6 -6
|
|
delete from t1 where c between -2 and 0 order by c;
|
|
select * from t1 order by a;
|
|
a b c
|
|
3 -3 -3
|
|
4 -4 -4
|
|
5 -5 -5
|
|
6 -6 -6
|
|
delete from t1;
|
|
# INDEX created on gcol
|
|
# UPDATE tbl_name SET non-gcol=expr
|
|
# WHERE indexed gcol=between const1 and const2 and non-indexed gcol=const3
|
|
insert into t1 (a) values (1), (2), (3), (4), (5);
|
|
select * from t1 order by a;
|
|
a b c
|
|
1 -1 -1
|
|
2 -2 -2
|
|
3 -3 -3
|
|
4 -4 -4
|
|
5 -5 -5
|
|
update t1 set a=6 where (c between -2 and 0) and (b=-1);
|
|
select * from t1 order by a;
|
|
a b c
|
|
2 -2 -2
|
|
3 -3 -3
|
|
4 -4 -4
|
|
5 -5 -5
|
|
6 -6 -6
|
|
delete from t1;
|
|
# INDEX created on gcol
|
|
# UPDATE tbl_name SET non-gcol=expr
|
|
# WHERE indexed gcol=between const1 and const2 and non-indexed gcol=const3
|
|
# ORDER BY indexed gcol
|
|
insert into t1 (a) values (1), (2), (3), (4), (5);
|
|
select * from t1 order by a;
|
|
a b c
|
|
1 -1 -1
|
|
2 -2 -2
|
|
3 -3 -3
|
|
4 -4 -4
|
|
5 -5 -5
|
|
update t1 set a=6 where (c between -2 and 0) and (b=-1) order by c;
|
|
select * from t1 order by a;
|
|
a b c
|
|
2 -2 -2
|
|
3 -3 -3
|
|
4 -4 -4
|
|
5 -5 -5
|
|
6 -6 -6
|
|
delete from t1;
|
|
drop table t1;
|
|
#
|
|
# Verify ON UPDATE/DELETE actions of FOREIGN KEYs
|
|
create table t2 (a int primary key, name varchar(10));
|
|
create table t1 (a int primary key, b int generated always as (a % 10) stored);
|
|
insert into t2 values (1, 'value1'), (2,'value2'), (3,'value3');
|
|
insert into t1 (a) values (1),(2),(3);
|
|
select * from t1 order by a;
|
|
a b
|
|
1 1
|
|
2 2
|
|
3 3
|
|
select * from t2 order by a;
|
|
a name
|
|
1 value1
|
|
2 value2
|
|
3 value3
|
|
select t1.a, t1.b, t2.name from t1,t2 where t1.b=t2.a order by t1.a;
|
|
a b name
|
|
1 1 value1
|
|
2 2 value2
|
|
3 3 value3
|
|
# - ON UPDATE RESTRICT
|
|
alter table t1 add foreign key (b) references t2(a) on update restrict;
|
|
insert into t1 (a) values (4);
|
|
ERROR 23000: Cannot add or update a child row: a foreign key constraint fails (`test`.`t1`, CONSTRAINT `t1_ibfk_1` FOREIGN KEY (`b`) REFERENCES `t2` (`a`))
|
|
update t2 set a=4 where a=3;
|
|
ERROR 23000: Cannot delete or update a parent row: a foreign key constraint fails (`test`.`t1`, CONSTRAINT `t1_ibfk_1` FOREIGN KEY (`b`) REFERENCES `t2` (`a`))
|
|
select t1.a, t1.b, t2.name from t1,t2 where t1.b=t2.a;
|
|
a b name
|
|
1 1 value1
|
|
2 2 value2
|
|
3 3 value3
|
|
alter table t1 drop foreign key t1_ibfk_1;
|
|
# - ON DELETE RESTRICT
|
|
alter table t1 add foreign key (b) references t2(a) on delete restrict;
|
|
delete from t2 where a=3;
|
|
ERROR 23000: Cannot delete or update a parent row: a foreign key constraint fails (`test`.`t1`, CONSTRAINT `t1_ibfk_1` FOREIGN KEY (`b`) REFERENCES `t2` (`a`))
|
|
select t1.a, t1.b, t2.name from t1,t2 where t1.b=t2.a;
|
|
a b name
|
|
1 1 value1
|
|
2 2 value2
|
|
3 3 value3
|
|
select t1.a, t1.b, t2.name from t1 left outer join t2 on (t1.b=t2.a);
|
|
a b name
|
|
1 1 value1
|
|
2 2 value2
|
|
3 3 value3
|
|
alter table t1 drop foreign key t1_ibfk_1;
|
|
# - ON DELETE CASCADE
|
|
alter table t1 add foreign key (b) references t2(a) on delete cascade;
|
|
delete from t2 where a=3;
|
|
select t1.a, t1.b, t2.name from t1,t2 where t1.b=t2.a;
|
|
a b name
|
|
1 1 value1
|
|
2 2 value2
|
|
select t1.a, t1.b, t2.name from t1 left outer join t2 on (t1.b=t2.a);
|
|
a b name
|
|
1 1 value1
|
|
2 2 value2
|
|
alter table t1 drop foreign key t1_ibfk_1;
|
|
drop table t1;
|
|
drop table t2;
|
|
#
|
|
# *** REPLACE ***
|
|
#
|
|
# UNIQUE INDEX on gcol
|
|
# REPLACE tbl_name (non-gcols) VALUES (non-gcols);
|
|
create table t1 (a int,
|
|
b int generated always as (-a) virtual,
|
|
c int generated always as (-a) stored unique,
|
|
d varchar(16));
|
|
insert into t1 (a,d) values (1,'a'), (2,'b');
|
|
select * from t1 order by a;
|
|
a b c d
|
|
1 -1 -1 a
|
|
2 -2 -2 b
|
|
replace t1 (a,d) values (1,'c');
|
|
select * from t1 order by a;
|
|
a b c d
|
|
1 -1 -1 c
|
|
2 -2 -2 b
|
|
delete from t1;
|
|
select * from t1;
|
|
a b c d
|
|
set sql_warnings = 0;
|
|
drop table t1;
|
|
Bug#20170778: WL411:FAILING ASSERTION `!TABLE || (!TABLE->WRITE_SET ||
|
|
BITMAP_IS_SET(TABLE->WR
|
|
#
|
|
CREATE TABLE t1 (col1 INT, col2 INT, col3 INT, col4 INT, col5
|
|
INT GENERATED ALWAYS AS (col3 * col2) VIRTUAL, col6 INT GENERATED ALWAYS AS
|
|
(col4 * col1) STORED, col7 INT GENERATED ALWAYS AS (col6 + col6) VIRTUAL,
|
|
col8 INT GENERATED ALWAYS AS (col6 / col5) STORED, col9 TEXT);
|
|
SET @fill_amount = (@@innodb_page_size / 2 ) + 1;
|
|
INSERT INTO t1 (col1,col2,col3,col4,col5,col6,col7,col8,col9) VALUES /* 3 */
|
|
(3, 3 / 3, 3 + 3, 3 / 3, DEFAULT, DEFAULT, DEFAULT, DEFAULT ,REPEAT(CAST(3 AS
|
|
CHAR(1)),@fill_amount)) , (3, 3 * 3, 3 + 3, 3 / 3, DEFAULT, DEFAULT, DEFAULT,
|
|
DEFAULT ,REPEAT(CAST(3 AS CHAR(1)),@fill_amount));
|
|
UPDATE t1 SET col1 = 2;
|
|
UPDATE t1 SET col7 = DEFAULT;
|
|
UPDATE t1 SET col8 = DEFAULT;
|
|
DROP TABLE t1;
|
|
# Bug#21081742: ASSERTION !TABLE || (!TABLE->WRITE_SET ||
|
|
# BITMAP_IS_SET(TABLE->WRITE_SET
|
|
#
|
|
CREATE TABLE b (
|
|
pk INTEGER AUTO_INCREMENT,
|
|
col_varchar_nokey VARCHAR(1),
|
|
col_varchar_key VARCHAR(2) GENERATED ALWAYS AS
|
|
(CONCAT(col_varchar_nokey, col_varchar_nokey)),
|
|
PRIMARY KEY (pk)
|
|
);
|
|
INSERT INTO b (col_varchar_nokey) VALUES ('v'),('v');
|
|
CREATE TABLE d (
|
|
pk INTEGER AUTO_INCREMENT,
|
|
col_varchar_nokey VARCHAR(1),
|
|
col_varchar_key VARCHAR(2) GENERATED ALWAYS AS
|
|
(CONCAT(col_varchar_nokey, col_varchar_nokey)),
|
|
PRIMARY KEY (pk)
|
|
) ;
|
|
INSERT INTO d (col_varchar_nokey) VALUES ('q'),('g'),('e'),('l'),(NULL),('v'),('c'),('u'),('x');
|
|
CREATE TABLE bb (
|
|
pk INTEGER AUTO_INCREMENT,
|
|
col_varchar_nokey VARCHAR(1) /*! NULL */,
|
|
col_varchar_key VARCHAR(2) GENERATED ALWAYS AS
|
|
(CONCAT(col_varchar_nokey, col_varchar_nokey)),
|
|
PRIMARY KEY (pk)
|
|
);
|
|
INSERT INTO bb (col_varchar_nokey) VALUES ('j'),('h');
|
|
EXPLAIN UPDATE
|
|
d AS OUTR1, b AS OUTR2
|
|
SET OUTR1.col_varchar_nokey = NULL
|
|
WHERE
|
|
( 't', 'b' ) IN
|
|
(
|
|
SELECT
|
|
INNR1.col_varchar_nokey AS x,
|
|
INNR1.col_varchar_key AS y
|
|
FROM bb AS INNR1
|
|
WHERE OUTR1.pk = 1
|
|
);
|
|
id select_type table type possible_keys key key_len ref rows Extra
|
|
1 PRIMARY OUTR1 const PRIMARY PRIMARY 4 const 1
|
|
1 PRIMARY INNR1 ALL NULL NULL NULL NULL 2 Using where; FirstMatch(OUTR1)
|
|
1 PRIMARY OUTR2 index NULL PRIMARY 4 NULL 2 Using index
|
|
DROP TABLE IF EXISTS b,bb,d;
|
|
#
|
|
# Bug#21216067 ASSERTION FAILED ROW_UPD_SEC_INDEX_ENTRY (INNOBASE/ROW/ROW0UPD.CC:2103)
|
|
#
|
|
CREATE TABLE t (
|
|
x INT, y INT, gc INT GENERATED ALWAYS AS (x+1) STORED
|
|
);
|
|
INSERT INTO t VALUES ();
|
|
UPDATE t t1, t t2 SET t2.y = 1, t1.x = 2;
|
|
SELECT * FROM t;
|
|
x y gc
|
|
2 1 3
|
|
DROP TABLE t;
|
|
# stored
|
|
CREATE TABLE C (
|
|
col_varchar_nokey VARCHAR(1),
|
|
col_varchar_key VARCHAR(2) GENERATED ALWAYS AS
|
|
(CONCAT(col_varchar_nokey, col_varchar_nokey)) STORED
|
|
);
|
|
INSERT INTO C (col_varchar_nokey) VALUES ('c');
|
|
EXPLAIN UPDATE C AS OUTR1, C AS OUTR2
|
|
SET OUTR1.`col_varchar_nokey` = 'f',
|
|
OUTR2.`col_varchar_nokey` = "a";
|
|
id select_type table type possible_keys key key_len ref rows Extra
|
|
1 SIMPLE OUTR1 ALL NULL NULL NULL NULL 1
|
|
1 SIMPLE OUTR2 ALL NULL NULL NULL NULL 1
|
|
UPDATE C AS OUTR1, C AS OUTR2
|
|
SET OUTR1.`col_varchar_nokey` = 'f',
|
|
OUTR2.`col_varchar_nokey` = "a";
|
|
SELECT * from C;
|
|
col_varchar_nokey col_varchar_key
|
|
a aa
|
|
DROP TABLE C;
|
|
# stored, indexed
|
|
CREATE TABLE C (
|
|
col_varchar_nokey VARCHAR(1),
|
|
col_varchar_key VARCHAR(2) GENERATED ALWAYS AS
|
|
(CONCAT(col_varchar_nokey, col_varchar_nokey)) STORED,
|
|
KEY (col_varchar_key, col_varchar_nokey)
|
|
);
|
|
INSERT INTO C (col_varchar_nokey) VALUES ('c');
|
|
EXPLAIN UPDATE C AS OUTR1, C AS OUTR2
|
|
SET OUTR1.`col_varchar_nokey` = 'f',
|
|
OUTR2.`col_varchar_nokey` = "a";
|
|
id select_type table type possible_keys key key_len ref rows Extra
|
|
1 SIMPLE OUTR1 ALL NULL NULL NULL NULL 1
|
|
1 SIMPLE OUTR2 ALL NULL NULL NULL NULL 1
|
|
UPDATE C AS OUTR1, C AS OUTR2
|
|
SET OUTR1.`col_varchar_nokey` = 'f',
|
|
OUTR2.`col_varchar_nokey` = "a";
|
|
SELECT * from C;
|
|
col_varchar_nokey col_varchar_key
|
|
a aa
|
|
DROP TABLE C;
|
|
# virtual
|
|
CREATE TABLE C (
|
|
col_varchar_nokey VARCHAR(1),
|
|
col_varchar_key VARCHAR(2) GENERATED ALWAYS AS
|
|
(CONCAT(col_varchar_nokey, col_varchar_nokey)) VIRTUAL
|
|
);
|
|
INSERT INTO C (col_varchar_nokey) VALUES ('c');
|
|
EXPLAIN UPDATE C AS OUTR1, C AS OUTR2
|
|
SET OUTR1.`col_varchar_nokey` = 'f',
|
|
OUTR2.`col_varchar_nokey` = "a";
|
|
id select_type table type possible_keys key key_len ref rows Extra
|
|
1 SIMPLE OUTR1 ALL NULL NULL NULL NULL 1
|
|
1 SIMPLE OUTR2 ALL NULL NULL NULL NULL 1
|
|
UPDATE C AS OUTR1, C AS OUTR2
|
|
SET OUTR1.`col_varchar_nokey` = 'f',
|
|
OUTR2.`col_varchar_nokey` = "a";
|
|
SELECT * from C;
|
|
col_varchar_nokey col_varchar_key
|
|
a aa
|
|
DROP TABLE C;
|
|
#Bug#21929967:GCOLS:GCOL VALUE CHANGES WHEN SESSION CHANGES SQL_MODE
|
|
CREATE TABLE t(c1 INT GENERATED ALWAYS AS (1) VIRTUAL,
|
|
c2 INT GENERATED ALWAYS AS(2) STORED);
|
|
INSERT INTO t VALUES(DEFAULT, DEFAULT);
|
|
SELECT * FROM t;
|
|
c1 c2
|
|
1 2
|
|
CREATE TABLE t1(c1 INT, c2 INT GENERATED ALWAYS AS(c1 + 1) STORED);
|
|
INSERT INTO t1(c2) VALUES(DEFAULT);
|
|
SELECT * FROM t1;
|
|
c1 c2
|
|
NULL NULL
|
|
CREATE TABLE t2(c1 INT DEFAULT 1, c2 INT GENERATED ALWAYS AS(c1 + 1) STORED);
|
|
INSERT INTO t2(c2) VALUES(DEFAULT);
|
|
SELECT * FROM t2;
|
|
c1 c2
|
|
1 2
|
|
DROP TABLE t, t1, t2;
|
|
# Bug#22179637: INSERT INTO TABLE FROM SELECT ACCEPTS TO INSERT INTO
|
|
# GENERATED COLUMNS
|
|
CREATE TABLE t1 (
|
|
i1 INTEGER,
|
|
i2 INTEGER GENERATED ALWAYS AS (i1 + i1)
|
|
);
|
|
INSERT INTO t1 (i1) SELECT 5;
|
|
INSERT INTO t1 (i1) SELECT 5 ON DUPLICATE KEY UPDATE i2= DEFAULT;
|
|
SELECT * FROM t1;
|
|
i1 i2
|
|
5 10
|
|
5 10
|
|
CREATE TABLE t2 (
|
|
i1 INTEGER,
|
|
i2 INTEGER GENERATED ALWAYS AS (i1 + i1) STORED
|
|
);
|
|
INSERT INTO t2 (i1) SELECT 5;
|
|
INSERT INTO t2 (i1) SELECT 5 ON DUPLICATE KEY UPDATE i2= DEFAULT;
|
|
SELECT * FROM t2;
|
|
i1 i2
|
|
5 10
|
|
5 10
|
|
DROP TABLE t1,t2;
|
|
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;
|