MDEV-15458 Segfault in heap_scan() upon UPDATE after ADD SYSTEM VERSIONING
* Versioning tests support Closes #1043
This commit is contained in:
parent
43623f04a9
commit
e506bef430
@ -46,6 +46,10 @@ if ($MTR_COMBINATION_MYISAM)
|
|||||||
{
|
{
|
||||||
--let $MTR_COMBINATION_TIMESTAMP= 1
|
--let $MTR_COMBINATION_TIMESTAMP= 1
|
||||||
}
|
}
|
||||||
|
if ($MTR_COMBINATION_HEAP)
|
||||||
|
{
|
||||||
|
--let $MTR_COMBINATION_TIMESTAMP= 1
|
||||||
|
}
|
||||||
if ($MTR_COMBINATION_TRX_ID)
|
if ($MTR_COMBINATION_TRX_ID)
|
||||||
{
|
{
|
||||||
let $sys_datatype_expl= bigint(20) unsigned;
|
let $sys_datatype_expl= bigint(20) unsigned;
|
||||||
|
@ -6,3 +6,6 @@ default-storage-engine=innodb
|
|||||||
|
|
||||||
[myisam]
|
[myisam]
|
||||||
default-storage-engine=myisam
|
default-storage-engine=myisam
|
||||||
|
|
||||||
|
[heap]
|
||||||
|
default-storage-engine=memory
|
||||||
|
@ -13,14 +13,13 @@ t1 CREATE TABLE `t1` (
|
|||||||
`Sys_end` SYS_DATATYPE GENERATED ALWAYS AS ROW END INVISIBLE COMMENT 'end',
|
`Sys_end` SYS_DATATYPE GENERATED ALWAYS AS ROW END INVISIBLE COMMENT 'end',
|
||||||
PERIOD FOR SYSTEM_TIME (`Sys_start`, `Sys_end`)
|
PERIOD FOR SYSTEM_TIME (`Sys_start`, `Sys_end`)
|
||||||
) ENGINE=DEFAULT_ENGINE DEFAULT CHARSET=latin1 WITH SYSTEM VERSIONING
|
) ENGINE=DEFAULT_ENGINE DEFAULT CHARSET=latin1 WITH SYSTEM VERSIONING
|
||||||
select table_catalog,table_schema,table_name,table_type,version,table_rows,avg_row_length,data_free,auto_increment,check_time,table_collation,checksum,create_options,table_comment from information_schema.tables where table_name='t1';
|
select table_catalog,table_schema,table_name,table_type,version,table_rows,data_free,auto_increment,check_time,table_collation,checksum,create_options,table_comment from information_schema.tables where table_name='t1';
|
||||||
table_catalog def
|
table_catalog def
|
||||||
table_schema test
|
table_schema test
|
||||||
table_name t1
|
table_name t1
|
||||||
table_type SYSTEM VERSIONED
|
table_type SYSTEM VERSIONED
|
||||||
version 10
|
version 10
|
||||||
table_rows 0
|
table_rows 0
|
||||||
avg_row_length 0
|
|
||||||
data_free 0
|
data_free 0
|
||||||
auto_increment NULL
|
auto_increment NULL
|
||||||
check_time NULL
|
check_time NULL
|
||||||
|
@ -128,7 +128,7 @@ Table Create Table
|
|||||||
t1 CREATE TABLE `t1` (
|
t1 CREATE TABLE `t1` (
|
||||||
`a` int(11) DEFAULT NULL,
|
`a` int(11) DEFAULT NULL,
|
||||||
`b` int(11) DEFAULT NULL
|
`b` int(11) DEFAULT NULL
|
||||||
) ENGINE=INNODB_OR_MYISAM DEFAULT CHARSET=latin1 WITH SYSTEM VERSIONING
|
) ENGINE=ENGINE DEFAULT CHARSET=latin1 WITH SYSTEM VERSIONING
|
||||||
## Case 2: ERROR on the master, it'll fail on the master, the slave won't see it
|
## Case 2: ERROR on the master, it'll fail on the master, the slave won't see it
|
||||||
connection master;
|
connection master;
|
||||||
set system_versioning_alter_history= ERROR;
|
set system_versioning_alter_history= ERROR;
|
||||||
@ -140,7 +140,7 @@ Table Create Table
|
|||||||
t1 CREATE TABLE `t1` (
|
t1 CREATE TABLE `t1` (
|
||||||
`a` int(11) DEFAULT NULL,
|
`a` int(11) DEFAULT NULL,
|
||||||
`b` int(11) DEFAULT NULL
|
`b` int(11) DEFAULT NULL
|
||||||
) ENGINE=INNODB_OR_MYISAM DEFAULT CHARSET=latin1 WITH SYSTEM VERSIONING
|
) ENGINE=ENGINE DEFAULT CHARSET=latin1 WITH SYSTEM VERSIONING
|
||||||
## Case 3: table is not versioned on the master, ALTER will work on the slave
|
## Case 3: table is not versioned on the master, ALTER will work on the slave
|
||||||
connection master;
|
connection master;
|
||||||
create or replace table t1 (a int);
|
create or replace table t1 (a int);
|
||||||
@ -154,7 +154,7 @@ Table Create Table
|
|||||||
t1 CREATE TABLE `t1` (
|
t1 CREATE TABLE `t1` (
|
||||||
`a` int(11) DEFAULT NULL,
|
`a` int(11) DEFAULT NULL,
|
||||||
`b` int(11) DEFAULT NULL
|
`b` int(11) DEFAULT NULL
|
||||||
) ENGINE=INNODB_OR_MYISAM DEFAULT CHARSET=latin1 WITH SYSTEM VERSIONING
|
) ENGINE=ENGINE DEFAULT CHARSET=latin1 WITH SYSTEM VERSIONING
|
||||||
connection master;
|
connection master;
|
||||||
drop table t1, t2;
|
drop table t1, t2;
|
||||||
create table t1 (i int) with system versioning partition by system_time limit 8 ( partition p1 history, partition p2 history, partition pn current );
|
create table t1 (i int) with system versioning partition by system_time limit 8 ( partition p1 history, partition p2 history, partition pn current );
|
||||||
|
25
mysql-test/suite/versioning/r/update-big.result
Normal file
25
mysql-test/suite/versioning/r/update-big.result
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
#
|
||||||
|
# MDEV-15458 Segfault in heap_scan() upon UPDATE after ADD SYSTEM VERSIONING
|
||||||
|
#
|
||||||
|
create or replace table t1 (a int);
|
||||||
|
insert into t1 values (1),(2),(3),(4),(5),(6),(7),(8);
|
||||||
|
insert into t1 select * from t1;
|
||||||
|
insert into t1 select * from t1;
|
||||||
|
insert into t1 select * from t1;
|
||||||
|
insert into t1 select * from t1;
|
||||||
|
insert into t1 select * from t1;
|
||||||
|
insert into t1 select * from t1;
|
||||||
|
insert into t1 select * from t1;
|
||||||
|
insert into t1 select * from t1;
|
||||||
|
insert into t1 select * from t1;
|
||||||
|
connect con1,localhost,root,,test;
|
||||||
|
alter table t1 add system versioning;
|
||||||
|
connection default;
|
||||||
|
update t1 set a= 7 where a = 3;
|
||||||
|
update t1 set a= 2 where a = 7;
|
||||||
|
update t1 set a= 5 where a = 2;
|
||||||
|
update t1 set a= 1 where a = 5;
|
||||||
|
update t1 set a= 8 where a = 1;
|
||||||
|
update t1 set a= 4 where a = 8;
|
||||||
|
update t1 set a= 6;
|
||||||
|
drop table t1;
|
@ -15,7 +15,7 @@ eval create table t1 (
|
|||||||
--replace_result $default_engine DEFAULT_ENGINE $sys_datatype_expl SYS_DATATYPE
|
--replace_result $default_engine DEFAULT_ENGINE $sys_datatype_expl SYS_DATATYPE
|
||||||
show create table t1;
|
show create table t1;
|
||||||
|
|
||||||
--query_vertical select table_catalog,table_schema,table_name,table_type,version,table_rows,avg_row_length,data_free,auto_increment,check_time,table_collation,checksum,create_options,table_comment from information_schema.tables where table_name='t1'
|
--query_vertical select table_catalog,table_schema,table_name,table_type,version,table_rows,data_free,auto_increment,check_time,table_collation,checksum,create_options,table_comment from information_schema.tables where table_name='t1'
|
||||||
--query_vertical select table_catalog,table_schema,table_name,column_name,ordinal_position,column_default,character_maximum_length,character_octet_length,character_set_name,collation_name,column_key,extra,column_comment,is_generated,generation_expression from information_schema.columns where table_name='t1'
|
--query_vertical select table_catalog,table_schema,table_name,column_name,ordinal_position,column_default,character_maximum_length,character_octet_length,character_set_name,collation_name,column_key,extra,column_comment,is_generated,generation_expression from information_schema.columns where table_name='t1'
|
||||||
|
|
||||||
--echo # Implicit fields test
|
--echo # Implicit fields test
|
||||||
|
@ -96,7 +96,7 @@ create or replace table t1 (a int) with system versioning;
|
|||||||
set system_versioning_alter_history= KEEP;
|
set system_versioning_alter_history= KEEP;
|
||||||
alter table t1 add column b int;
|
alter table t1 add column b int;
|
||||||
sync_slave_with_master;
|
sync_slave_with_master;
|
||||||
--replace_result InnoDB INNODB_OR_MYISAM MyISAM INNODB_OR_MYISAM
|
--replace_result InnoDB ENGINE MyISAM ENGINE MEMORY ENGINE
|
||||||
show create table t1;
|
show create table t1;
|
||||||
|
|
||||||
--echo ## Case 2: ERROR on the master, it'll fail on the master, the slave won't see it
|
--echo ## Case 2: ERROR on the master, it'll fail on the master, the slave won't see it
|
||||||
@ -105,7 +105,7 @@ set system_versioning_alter_history= ERROR;
|
|||||||
--error ER_VERS_ALTER_NOT_ALLOWED
|
--error ER_VERS_ALTER_NOT_ALLOWED
|
||||||
alter table t1 drop column b;
|
alter table t1 drop column b;
|
||||||
sync_slave_with_master;
|
sync_slave_with_master;
|
||||||
--replace_result InnoDB INNODB_OR_MYISAM MyISAM INNODB_OR_MYISAM
|
--replace_result InnoDB ENGINE MyISAM ENGINE MEMORY ENGINE
|
||||||
show create table t1;
|
show create table t1;
|
||||||
|
|
||||||
--echo ## Case 3: table is not versioned on the master, ALTER will work on the slave
|
--echo ## Case 3: table is not versioned on the master, ALTER will work on the slave
|
||||||
@ -116,7 +116,7 @@ create or replace table t1 (a int) with system versioning;
|
|||||||
connection master;
|
connection master;
|
||||||
alter table t1 add column b int;
|
alter table t1 add column b int;
|
||||||
sync_slave_with_master;
|
sync_slave_with_master;
|
||||||
--replace_result InnoDB INNODB_OR_MYISAM MyISAM INNODB_OR_MYISAM
|
--replace_result InnoDB ENGINE MyISAM ENGINE MEMORY ENGINE
|
||||||
show create table t1;
|
show create table t1;
|
||||||
|
|
||||||
connection master;
|
connection master;
|
||||||
|
34
mysql-test/suite/versioning/t/update-big.test
Normal file
34
mysql-test/suite/versioning/t/update-big.test
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
source include/big_test.inc;
|
||||||
|
source suite/versioning/engines.inc;
|
||||||
|
source suite/versioning/common.inc;
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # MDEV-15458 Segfault in heap_scan() upon UPDATE after ADD SYSTEM VERSIONING
|
||||||
|
--echo #
|
||||||
|
create or replace table t1 (a int);
|
||||||
|
insert into t1 values (1),(2),(3),(4),(5),(6),(7),(8);
|
||||||
|
insert into t1 select * from t1;
|
||||||
|
insert into t1 select * from t1;
|
||||||
|
insert into t1 select * from t1;
|
||||||
|
insert into t1 select * from t1;
|
||||||
|
insert into t1 select * from t1;
|
||||||
|
insert into t1 select * from t1;
|
||||||
|
insert into t1 select * from t1;
|
||||||
|
insert into t1 select * from t1;
|
||||||
|
insert into t1 select * from t1;
|
||||||
|
|
||||||
|
--connect (con1,localhost,root,,test)
|
||||||
|
alter table t1 add system versioning;
|
||||||
|
|
||||||
|
--connection default
|
||||||
|
update t1 set a= 7 where a = 3;
|
||||||
|
update t1 set a= 2 where a = 7;
|
||||||
|
update t1 set a= 5 where a = 2;
|
||||||
|
update t1 set a= 1 where a = 5;
|
||||||
|
update t1 set a= 8 where a = 1;
|
||||||
|
update t1 set a= 4 where a = 8;
|
||||||
|
update t1 set a= 6;
|
||||||
|
|
||||||
|
drop table t1;
|
||||||
|
|
||||||
|
source suite/versioning/common_finish.inc;
|
Loading…
x
Reference in New Issue
Block a user