mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
MDEV-19486 Server crashes in row_upd or row_upd_del_mark_clust_rec on REPLACE into a versioned table
row_insert_for_mysql(): InnoDB sets values for row_start and row_end. And this function used to return those values to server in ha_innobase::write_row(). This buggy behavior was removed. Also, a piece of code in this function was reformatted. upd_node_t::make_versioned_helper(): Assert that the preallocated size of the update vector is not exceeded.
This commit is contained in:
committed by
Marko Mäkelä
parent
7056812ed1
commit
48a662dae5
@ -35,6 +35,23 @@ insert into t1 values (1,1);
|
||||
create or replace table t2 (c int);
|
||||
create or replace view v as select t1.* from t1 join t2;
|
||||
replace into v (a, b) select a, b from t1;
|
||||
drop table t1;
|
||||
|
||||
--replace_result $sys_datatype_expl SYS_DATATYPE
|
||||
eval CREATE TABLE t1 (
|
||||
pk INT AUTO_INCREMENT,
|
||||
f INT,
|
||||
row_start $sys_datatype_expl AS ROW START INVISIBLE,
|
||||
row_end $sys_datatype_expl AS ROW END INVISIBLE,
|
||||
PRIMARY KEY(pk),
|
||||
UNIQUE(f),
|
||||
PERIOD FOR SYSTEM_TIME(row_start, row_end)
|
||||
) WITH SYSTEM VERSIONING;
|
||||
INSERT INTO t1 () VALUES (),(),(),(),(),();
|
||||
UPDATE IGNORE t1 SET f = 1;
|
||||
REPLACE t1 SELECT * FROM t1;
|
||||
DROP TABLE t1;
|
||||
|
||||
|
||||
drop database test;
|
||||
create database test;
|
||||
|
Reference in New Issue
Block a user