diff options
Diffstat (limited to 'mysql-test/suite/gcol/inc/gcol_ins_upd.inc')
-rw-r--r-- | mysql-test/suite/gcol/inc/gcol_ins_upd.inc | 692 |
1 files changed, 692 insertions, 0 deletions
diff --git a/mysql-test/suite/gcol/inc/gcol_ins_upd.inc b/mysql-test/suite/gcol/inc/gcol_ins_upd.inc new file mode 100644 index 00000000..f025752b --- /dev/null +++ b/mysql-test/suite/gcol/inc/gcol_ins_upd.inc @@ -0,0 +1,692 @@ +################################################################################ +# inc/gcol_ins_upd.inc # +# # +# Purpose: # +# Testing DDL operations such as INSERT, UPDATE, REPLACE and DELETE. # +# # +# # +# # +#------------------------------------------------------------------------------# +# Original Author: Andrey Zhakov # +# Original Date: 2008-09-04 # +# Change Author: # +# Change Date: # +# Change: # +################################################################################ + +let $create1 = create table t1 (a int, + b int generated always as (-a) virtual, + c int generated always as (-a) stored); +let $create2 = create table t1 (a int unique, + b int generated always as (-a) virtual, + c int generated always as (-a) stored); +let $create3 = create table t1 (a int, + b int generated always as (-a) virtual, + c int generated always as (-a) stored unique); +let $create4 = create table t1 (a int, + b int generated always as (-a) virtual, + c int generated always as (-a) stored unique, + d varchar(16)); +eval $create1; +set sql_warnings = 1; + +--echo # +--echo # *** INSERT *** +--echo # + +--echo # INSERT INTO tbl_name VALUES... DEFAULT is specified against gcols +insert into t1 values (1,default,default); +select * from t1; +delete from t1; +select * from t1; + +--echo # INSERT INTO tbl_name VALUES... NULL is specified against gcols +insert into t1 values (1,null,null); +select * from t1; +delete from t1; +select * from t1; + +--echo # INSERT INTO tbl_name VALUES... a non-NULL value is specified against gcols +insert ignore into t1 values (1,2,3); +select * from t1; +delete from t1; +select * from t1; + +--echo # INSERT INTO tbl_name (<non_gcol_list>) VALUES... +insert into t1 (a) values (1), (2); +select * from t1 order by a; +delete from t1; +select * from t1; + +--echo # INSERT INTO tbl_name (<normal+gcols>) VALUES... DEFAULT is specified +--echo # against gcols +insert into t1 (a,b) values (1,default), (2,default); +select * from t1 order by a; +delete from t1; +select * from t1; + +--echo # 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; +delete from t1; +select * from t1; + +--echo # INSERT INTO tbl_name (<normal+gcols>) VALUES... a non-NULL value is specified +--echo # against gcols +insert ignore into t1 (a,b) values (1,3), (2,4); +select * from t1; +delete from t1; +select * from t1; +drop table t1; + +--echo # Table with UNIQUE non-gcol field. INSERT INTO tbl_name VALUES... ON DUPLICATE +--echo # KEY UPDATE <non_gcol>=expr, <gcol>=expr +eval $create2; +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; +delete from t1 where b in (1,2); +select * from t1; +drop table t1; + +--echo # Table with UNIQUE gcol field. INSERT INTO tbl_name VALUES... ON DUPLICATE +--echo # KEY UPDATE <non_gcol>=expr, <gcol>=expr +eval $create3; +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; + +--echo # CREATE new_table ... LIKE old_table +--echo # INSERT INTO new_table SELECT * from old_table +create table t2 like t1; +insert into t2(a) select a from t1; +select * from t2; +drop table t2; + +--echo # CREATE new_table ... LIKE old_table INSERT INTO new_table (<non-gcols>, <gcols>) +--echo # SELECT <non-gcols>, <gcols> from old_table +insert into t1 values (1,default,default); +select * from t1; +create table t2 like t1; +insert into t2 (a) select a from t1; +select * from t2 order by a; +drop table t2; +drop table t1; + +--echo # +--echo # *** UPDATE *** +--echo # + +--echo # UPDATE tbl_name SET non-gcol=expr WHERE non-gcol=expr +eval $create1; +insert into t1 (a) values (1), (2); +select * from t1 order by a; +update t1 set a=3 where a=2; +select * from t1 order by a; +delete from t1; +select * from t1; + +--echo # UPDATE tbl_name SET gcol=expr WHERE non-gcol=expr +insert into t1 (a) values (1), (2); +select * from t1 order by a; +update ignore t1 set c=3 where a=2; +select * from t1 order by a; +delete from t1; +select * from t1; + +--echo # UPDATE tbl_name SET non-gcol=expr WHERE gcol=expr +insert into t1 (a) values (1), (2); +select * from t1 order by a; +update t1 set a=3 where b=-2; +select * from t1 order by a; +delete from t1; +select * from t1; + +--echo # UPDATE tbl_name SET gcol=expr WHERE gcol=expr +insert into t1 (a) values (1), (2); +select * from t1 order by a; +update ignore t1 set c=3 where b=-2; +select * from t1 order by a; +delete from t1; +select * from t1; +drop table t1; + +--echo # INDEX created on gcol +--echo # UPDATE tbl_name SET non-gcol=expr WHERE gcol=const +eval $create3; +insert into t1 (a) values (1), (2); +select * from t1 order by a; +update t1 set a=3 where c=-2; +select * from t1; +delete from t1; +select * from t1; + + +--echo # INDEX created on gcol +--echo # 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; +update t1 set a=3 where c between -3 and -2; +select * from t1 order by a; +delete from t1; +select * from t1; + +--echo # No INDEX created on gcol +--echo # 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; +update t1 set a=3 where b between -3 and -2; +select * from t1 order by a; +delete from t1; +select * from t1; + +--echo # INDEX created on gcol +--echo # UPDATE tbl_name SET non-gcol=expr +--echo # 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; +update t1 set a=6 where c between -1 and 0 + order by c; +select * from t1 order by a; +delete from t1 where c between -6 and 0; +select * from t1; + +--echo # INDEX created on gcol +--echo # UPDATE tbl_name SET non-gcol=expr +--echo # 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; +update t1 set a=6 where c between -1 and 0 + order by c limit 2; +select * from t1 order by a; +delete from t1 where c between -2 and 0 order by c; +select * from t1 order by a; +delete from t1; + +--echo # INDEX created on gcol +--echo # UPDATE tbl_name SET non-gcol=expr +--echo # 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; +update t1 set a=6 where (c between -2 and 0) and (b=-1); +select * from t1 order by a; +delete from t1; + +--echo # INDEX created on gcol +--echo # UPDATE tbl_name SET non-gcol=expr +--echo # WHERE indexed gcol=between const1 and const2 and non-indexed gcol=const3 +--echo # ORDER BY indexed gcol +insert into t1 (a) values (1), (2), (3), (4), (5); +select * from t1 order by a; +update t1 set a=6 where (c between -2 and 0) and (b=-1) order by c; +select * from t1 order by a; +delete from t1; +drop table t1; + +let $innodb_engine = `SELECT @@session.default_storage_engine='innodb'`; +if ($innodb_engine) +{ + --echo # + --echo # 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; + select * from t2 order by a; + select t1.a, t1.b, t2.name from t1,t2 where t1.b=t2.a order by t1.a; + + --echo # - ON UPDATE RESTRICT + alter table t1 add foreign key (b) references t2(a) on update restrict; + --error 1452 + insert into t1 (a) values (4); + --error 1451 + update t2 set a=4 where a=3; + select t1.a, t1.b, t2.name from t1,t2 where t1.b=t2.a; + alter table t1 drop foreign key t1_ibfk_1; + + --echo # - ON DELETE RESTRICT + alter table t1 add foreign key (b) references t2(a) on delete restrict; + --error 1451 + delete from t2 where a=3; + select t1.a, t1.b, t2.name from t1,t2 where t1.b=t2.a; + select t1.a, t1.b, t2.name from t1 left outer join t2 on (t1.b=t2.a); + alter table t1 drop foreign key t1_ibfk_1; + + --echo # - 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; + select t1.a, t1.b, t2.name from t1 left outer join t2 on (t1.b=t2.a); + alter table t1 drop foreign key t1_ibfk_1; + + drop table t1; + drop table t2; +} + +--echo # +--echo # *** REPLACE *** +--echo # + +--echo # UNIQUE INDEX on gcol +--echo # REPLACE tbl_name (non-gcols) VALUES (non-gcols); +eval $create4; +insert into t1 (a,d) values (1,'a'), (2,'b'); +select * from t1 order by a; +replace t1 (a,d) values (1,'c'); +select * from t1 order by a; +delete from t1; +select * from t1; + + +# *** DELETE +# All required tests for DELETE are performed as part of the above testing +# for INSERT, UPDATE and REPLACE. + +set sql_warnings = 0; +drop table t1; + +if ($innodb_engine) { +--echo Bug#20170778: WL411:FAILING ASSERTION `!TABLE || (!TABLE->WRITE_SET || +--echo BITMAP_IS_SET(TABLE->WR +--echo # +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; +} + +if ($support_virtual_index) +{ +--echo Bug#20797344: WL#8149: ALLOCATED SPACE FOR INDEXED BLOB VGC CAN BE +--echo OVERWRITTEN FOR UPDATE +--echo # +CREATE TABLE t (a varchar(100), b blob, +c blob GENERATED ALWAYS AS (concat(a,b)) VIRTUAL, +d blob GENERATED ALWAYS AS (b) VIRTUAL, +e int(11) GENERATED ALWAYS AS (10) VIRTUAL, +h int(11) NOT NULL, PRIMARY KEY (h), key(c(20))); +INSERT INTO t(a,b,h) VALUES('aaaaaaa','1111111', 11); +INSERT INTO t(a,b,h) VALUES('bbbbbbb','2222222', 22); +SELECT c FROM t; +UPDATE t SET a='ccccccc'; +SELECT c FROM t; +DROP TABLE t; +} + +--echo # Bug#21081742: ASSERTION !TABLE || (!TABLE->WRITE_SET || +--echo # BITMAP_IS_SET(TABLE->WRITE_SET +--echo # + +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 +); + +DROP TABLE IF EXISTS b,bb,d; + + +--echo # +--echo # Bug#21216067 ASSERTION FAILED ROW_UPD_SEC_INDEX_ENTRY (INNOBASE/ROW/ROW0UPD.CC:2103) +--echo # + +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; +DROP TABLE t; + +if ($support_virtual_index) +{ +CREATE TABLE t ( +x INT, y INT, gc INT GENERATED ALWAYS AS (x+1), KEY (x,gc) +); +INSERT INTO t VALUES (); +UPDATE t t1, t t2 SET t1.x = 1, t2.y = 2; +SELECT * FROM t; +SELECT gc FROM t; +CHECK TABLE t; +DROP TABLE t; +} + +let $query= +UPDATE C AS OUTR1, C AS OUTR2 +SET OUTR1.`col_varchar_nokey` = 'f', +OUTR2.`col_varchar_nokey` = "a"; + +--echo # 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'); +eval EXPLAIN $query; +eval $query; +SELECT * from C; +DROP TABLE C; + +--echo # 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'); +eval EXPLAIN $query; +eval $query; +SELECT * from C; +DROP TABLE C; + +--echo # 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'); +eval EXPLAIN $query; +eval $query; +SELECT * from C; +DROP TABLE C; + +if ($support_virtual_index) +{ +--echo # virtual, indexed + +CREATE TABLE C ( +col_varchar_nokey VARCHAR(1), +col_varchar_key VARCHAR(2) GENERATED ALWAYS AS +(CONCAT(col_varchar_nokey, col_varchar_nokey)) VIRTUAL, +KEY (col_varchar_key, col_varchar_nokey) +); + +INSERT INTO C (col_varchar_nokey) VALUES ('c'); +eval EXPLAIN $query; +eval $query; +SELECT * from C; +DROP TABLE C; + +--echo # +--echo # Bug #21530366 CRASH/ASSERTION, CORRUPTION WITH INDEXES + +--echo # VIRTUAL COLUMNS, BLOB +--echo # + +CREATE TABLE t ( + a INTEGER, + b BLOB GENERATED ALWAYS AS (a) VIRTUAL, + INDEX (b(57)) +); + +INSERT INTO t (a) VALUES (9); +UPDATE t SET a = 10; +DELETE FROM t WHERE a = 10; + +DROP TABLE t; + +--echo # Bug#21807818: Generated columns not updated with empty insert list + +--error ER_GENERATED_COLUMN_FUNCTION_IS_NOT_ALLOWED +CREATE TABLE t ( +a BLOB GENERATED ALWAYS AS ('') VIRTUAL, +b TIMESTAMP(4) GENERATED ALWAYS AS ('') VIRTUAL, +KEY (a(183),b) +); + +CREATE TABLE t ( +a BLOB GENERATED ALWAYS AS ('') VIRTUAL, +b TIMESTAMP(4) GENERATED ALWAYS AS ('') VIRTUAL +); + +INSERT IGNORE INTO t VALUES(), (), (); + +DELETE IGNORE FROM t; + +DROP TABLE t; + +--echo # +--echo # Bug#22195458:GCOLS: ASSERTION 0 AND CORRUPTION... +--echo # +--disable_warnings +CREATE TABLE t ( + a INT, + b YEAR GENERATED ALWAYS AS ('a') VIRTUAL, + c YEAR GENERATED ALWAYS AS ('aaaa') VIRTUAL, + b1 YEAR GENERATED ALWAYS AS ('a') STORED, + c1 YEAR GENERATED ALWAYS AS ('aaaa') STORED, + UNIQUE(b), + UNIQUE(b1) +); +INSERT IGNORE INTO t VALUES(); +SELECT b from t; +SELECT b1 from t; +SELECT * from t; +DELETE FROM t; +CHECK TABLE t EXTENDED; +DROP TABLE t; +--enable_warnings + +--echo # Bug#22195364:GCOLS: FAILING ASSERTION: +--echo # DFIELD_IS_NULL(DFIELD2) || DFIELD2->DATA +CREATE TABLE t ( + a INT, + c BLOB GENERATED ALWAYS AS ('') VIRTUAL, + UNIQUE KEY(c(1),a) +); +INSERT INTO t(a) VALUES(1) ON DUPLICATE KEY UPDATE a=2; +SELECT * FROM t; +INSERT INTO t(a) VALUES(1) ON DUPLICATE KEY UPDATE a=2; +SELECT * FROM t; +# Test Field_blob::store_to_mem +SELECT GROUP_CONCAT(c ORDER BY c) FROM t; +DROP TABLE t; +} + +--echo #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; +CREATE TABLE t1(c1 INT, c2 INT GENERATED ALWAYS AS(c1 + 1) STORED); +INSERT INTO t1(c2) VALUES(DEFAULT); +SELECT * FROM t1; +CREATE TABLE t2(c1 INT DEFAULT 1, c2 INT GENERATED ALWAYS AS(c1 + 1) STORED); +INSERT INTO t2(c2) VALUES(DEFAULT); +SELECT * FROM t2; +DROP TABLE t, t1, t2; + +--echo # Bug#22179637: INSERT INTO TABLE FROM SELECT ACCEPTS TO INSERT INTO +--echo # 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; + +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; + +DROP TABLE t1,t2; + +if ($support_virtual_index) +{ + +--echo # +--echo # Bug#22070021 GCOL:ASSERTION `!TABLE || (!TABLE->WRITE_SET || +--echo # BITMAP_IS_SET(TABLE->WRITE_SET, +--echo # + +CREATE TABLE t1( +c1 INT, +c2 INT GENERATED ALWAYS AS (c1 + c1) VIRTUAL, +KEY(c2) +); + +INSERT INTO t1(c1) VALUES(0); +DELETE O1.* FROM t1 AS O1, t1 AS O2; +SELECT * FROM t1; +DROP TABLE t1; + +--echo # +--echo # Bug#21944199 SIMPLE DELETE QUERY CAUSES INNODB: FAILING ASSERTION: 0 +--echo # & DATA CORRUPTION +--echo # + +CREATE TEMPORARY TABLE t1 ( + a INTEGER NOT NULL, + b INTEGER GENERATED ALWAYS AS (a+1) VIRTUAL +); + +INSERT INTO t1 (a) VALUES (0), (0), (0); + +ALTER TABLE t1 ADD INDEX idx (b); + +DELETE FROM t1; + +DROP TEMPORARY TABLE t1; + +--echo # +--echo # Original test case from MDEV-17890 +--echo # + +CREATE TABLE t1 ( + pk BIGINT AUTO_INCREMENT, + b BIT(15), + v BIT(10) AS (b) VIRTUAL, + PRIMARY KEY(pk), + UNIQUE(v) +); + +INSERT IGNORE INTO t1 (b) VALUES (b'101110001110100'),(b'011101'); +--disable_ps2_protocol +SELECT pk, b INTO OUTFILE 'load.data' FROM t1; +--enable_ps2_protocol +--error ER_DATA_TOO_LONG +LOAD DATA INFILE 'load.data' REPLACE INTO TABLE t1 (pk, b); + +# Cleanup +DROP TABLE t1; +--let $datadir= `SELECT @@datadir` +--remove_file $datadir/test/load.data + + +--echo # +--echo # MDEV-18166 ASSERT_COLUMN_MARKED_FOR_READ failed on tables with vcols +--echo # + +CREATE TABLE t1 ( + id INT NOT NULL AUTO_INCREMENT, + f ENUM('a','b','c'), + v ENUM('a','b','c') AS (f), + KEY(v,id) +) ENGINE=MyISAM; +INSERT INTO t1 (f) VALUES ('a'),('b'); +INSERT IGNORE INTO t1 SELECT * FROM t1; + +# Cleanup +DROP TABLE t1; + + +CREATE TABLE t1 ( + id INT NOT NULL AUTO_INCREMENT, + f ENUM('a','b','c'), + v ENUM('a','b','c') AS (f), + KEY(v,id) +) ENGINE=MyISAM; +INSERT INTO t1 (f) VALUES ('a'),('b'); +INSERT IGNORE INTO t1 SELECT * FROM t1; + +# Cleanup +DROP TABLE t1; + +} + +--echo # +--echo # MDEV-23597 Assertion `marked_for_read()' failed while evaluating DEFAULT +--echo # + +CREATE TABLE t1 (a INT UNIQUE, b INT DEFAULT (c+1), c int); +INSERT INTO t1 VALUES (1,1,1); +UPDATE t1 SET b=DEFAULT; +SELECT * from t1; + +REPLACE t1 VALUES(1,1,1); +INSERT INTO t1 VALUES (1,1,1) ON DUPLICATE KEY UPDATE b= DEFAULT; +SELECT * from t1; + +REPLACE t1 VALUES(1,1,1); +CREATE TABLE t2 (a INT, b INT DEFAULT (c+1), c int); +INSERT INTO t2 VALUES (5,5,5); +UPDATE t1 join t2 set t1.b= DEFAULT, t2.b= DEFAULT; +SELECT * from t1, t2; + +DROP TABLE t1, t2; + |