mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
Merge InnoDB 5.7 from mysql-5.7.9.
Contains also MDEV-10547: Test multi_update_innodb fails with InnoDB 5.7 The failure happened because 5.7 has changed the signature of the bool handler::primary_key_is_clustered() const virtual function ("const" was added). InnoDB was using the old signature which caused the function not to be used. MDEV-10550: Parallel replication lock waits/deadlock handling does not work with InnoDB 5.7 Fixed mutexing problem on lock_trx_handle_wait. Note that rpl_parallel and rpl_optimistic_parallel tests still fail. MDEV-10156 : Group commit tests fail on 10.2 InnoDB (branch bb-10.2-jan) Reason: incorrect merge MDEV-10550: Parallel replication can't sync with master in InnoDB 5.7 (branch bb-10.2-jan) Reason: incorrect merge
This commit is contained in:
20
mysql-test/suite/innodb_zip/include/innodb-wl6045.inc
Normal file
20
mysql-test/suite/innodb_zip/include/innodb-wl6045.inc
Normal file
@ -0,0 +1,20 @@
|
||||
--echo ===> Testing size=$size
|
||||
--disable_warnings
|
||||
--eval CREATE TABLE t1(id INT AUTO_INCREMENT PRIMARY KEY, msg VARCHAR(255)) ENGINE=INNODB ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=$size
|
||||
--enable_warnings
|
||||
|
||||
insert into t1 values(1,"I");
|
||||
insert into t1 values(2,"AM");
|
||||
insert into t1 values(3,"COMPRESSED");
|
||||
|
||||
--source include/shutdown_mysqld.inc
|
||||
|
||||
--exec $INNOCHECKSUM $MYSQLD_DATADIR/test/t1.ibd
|
||||
--exec $INNOCHECKSUM --write=crc32 $MYSQLD_DATADIR/test/t1.ibd
|
||||
--exec $INNOCHECKSUM --strict-check=crc32 $MYSQLD_DATADIR/test/t1.ibd
|
||||
--exec $INNOCHECKSUM --write=none $MYSQLD_DATADIR/test/t1.ibd
|
||||
--exec $INNOCHECKSUM --strict-check=none $MYSQLD_DATADIR/test/t1.ibd
|
||||
|
||||
--source include/start_mysqld.inc
|
||||
select * from t1;
|
||||
drop table t1;
|
@ -0,0 +1,16 @@
|
||||
--echo # Create table & Index
|
||||
|
||||
eval CREATE TABLE tab5(col_1 TINYBLOB, col_2 TINYTEXT,col_3 BLOB,
|
||||
col_4 TEXT,col_5 MEDIUMBLOB,col_6 MEDIUMTEXT,
|
||||
col_7 LONGBLOB,col_8 LONGTEXT,col_9 VARCHAR(255))
|
||||
ENGINE=INNODB ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=$block_size;
|
||||
|
||||
|
||||
let $i = 9;
|
||||
while ($i) {
|
||||
|
||||
eval CREATE INDEX idx$i ON tab5(col_$i(10));
|
||||
dec $i;
|
||||
}
|
||||
|
||||
|
82
mysql-test/suite/innodb_zip/include/innodb_dml_ops.inc
Normal file
82
mysql-test/suite/innodb_zip/include/innodb_dml_ops.inc
Normal file
@ -0,0 +1,82 @@
|
||||
delimiter |;
|
||||
create procedure populate_t1()
|
||||
begin
|
||||
declare i int default 1;
|
||||
while (i <= 200) do
|
||||
insert into t1 values (i, 'a', 'b');
|
||||
set i = i + 1;
|
||||
end while;
|
||||
end|
|
||||
create procedure populate_t1_small()
|
||||
begin
|
||||
declare i int default 1;
|
||||
while (i <= 20) do
|
||||
insert into t1 values (i, 'c', 'd');
|
||||
set i = i + 1;
|
||||
end while;
|
||||
end|
|
||||
create procedure populate_t1_small2()
|
||||
begin
|
||||
declare i int default 30;
|
||||
while (i <= 50) do
|
||||
insert into t1 values (i, 'e', 'f');
|
||||
set i = i + 1;
|
||||
end while;
|
||||
end|
|
||||
delimiter ;|
|
||||
#
|
||||
begin;
|
||||
select count(*) from t1;
|
||||
call populate_t1();
|
||||
select count(*) from t1;
|
||||
select * from t1 limit 10;
|
||||
rollback;
|
||||
select count(*) from t1;
|
||||
#
|
||||
begin;
|
||||
call populate_t1();
|
||||
select count(*) from t1;
|
||||
commit;
|
||||
select count(*) from t1;
|
||||
#
|
||||
truncate table t1;
|
||||
select count(*) from t1;
|
||||
#
|
||||
call populate_t1_small();
|
||||
select count(*) from t1;
|
||||
rollback;
|
||||
select count(*) from t1;
|
||||
truncate table t1;
|
||||
#
|
||||
call populate_t1();
|
||||
select count(*) from t1;
|
||||
delete from t1 where keyc <= 60;
|
||||
select count(*) from t1;
|
||||
call populate_t1_small();
|
||||
select count(*) from t1;
|
||||
select * from t1 limit 10;
|
||||
begin;
|
||||
call populate_t1_small2();
|
||||
select count(*) from t1;
|
||||
select * from t1 where keyc > 30 limit 10;
|
||||
rollback;
|
||||
select count(*) from t1;
|
||||
select * from t1 where keyc > 30 limit 10;
|
||||
#
|
||||
update t1 set keyc = keyc + 2000;
|
||||
select * from t1 limit 10;
|
||||
rollback;
|
||||
begin;
|
||||
update t1 set keyc = keyc + 2000;
|
||||
select * from t1 limit 10;
|
||||
rollback;
|
||||
select * from t1 limit 10;
|
||||
commit;
|
||||
select * from t1 limit 10;
|
||||
#
|
||||
insert into t2 select * from t1 where keyc < 2101;
|
||||
select count(*) from t2;
|
||||
#
|
||||
drop procedure populate_t1;
|
||||
drop procedure populate_t1_small;
|
||||
drop procedure populate_t1_small2;
|
@ -0,0 +1,7 @@
|
||||
--echo ===============
|
||||
--echo Fetch Records
|
||||
--echo ===============
|
||||
|
||||
SELECT col_7,col_8,col_9 FROM tab5
|
||||
WHERE col_2='bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb'
|
||||
LIMIT 1;
|
19
mysql-test/suite/innodb_zip/include/innodb_load_data.inc
Normal file
19
mysql-test/suite/innodb_zip/include/innodb_load_data.inc
Normal file
@ -0,0 +1,19 @@
|
||||
--echo # Load the data
|
||||
|
||||
SET @col_1 = repeat('a', 100);
|
||||
SET @col_2 = repeat('b', 100);
|
||||
SET @col_3 = repeat('c', 100);
|
||||
SET @col_4 = repeat('d', 100);
|
||||
SET @col_5 = repeat('e', 100);
|
||||
SET @col_6 = repeat('f', 100);
|
||||
SET @col_7 = repeat('g', 100);
|
||||
SET @col_8 = repeat('h', 100);
|
||||
SET @col_9 = repeat('i', 100);
|
||||
|
||||
while ($i) {
|
||||
|
||||
eval INSERT INTO tab5
|
||||
VALUES (@col_1,@col_2,@col_3,@col_4,@cl_5,@col_6,@col_7,@col_8,@col_9);
|
||||
dec $i;
|
||||
}
|
||||
commit;
|
@ -0,0 +1,26 @@
|
||||
--echo # Check the stats of the table
|
||||
--echo # Check the size of the ibd file
|
||||
|
||||
-- echo # testcase : pass = 1 fail = 0
|
||||
SELECT count(*) > 0 as "compress_stat"
|
||||
FROM information_schema.innodb_cmp_per_index
|
||||
WHERE
|
||||
compress_ops_ok BETWEEN @inl_val AND 1000
|
||||
AND compress_ops BETWEEN @inl_val AND 1000
|
||||
AND table_name='tab5' AND database_name='test'
|
||||
AND index_name like 'idx%' ;
|
||||
|
||||
perl;
|
||||
my $dir = $ENV{'MYSQLD_DATADIR'}."test";
|
||||
my $size;
|
||||
opendir(DIR, $dir) or die $!;
|
||||
while (my $file = readdir(DIR))
|
||||
{
|
||||
|
||||
next unless ($file =~ m/\.ibd$/);
|
||||
$size = -s "$dir/$file";
|
||||
print "The size of the tab5.ibd file: $size\n";
|
||||
}
|
||||
close(DIR);
|
||||
exit(0)
|
||||
EOF
|
12
mysql-test/suite/innodb_zip/include/innodb_stats_restart.inc
Normal file
12
mysql-test/suite/innodb_zip/include/innodb_stats_restart.inc
Normal file
@ -0,0 +1,12 @@
|
||||
--echo ===============
|
||||
--echo After Restart Chekc the stats of the table
|
||||
--echo ===============
|
||||
|
||||
-- echo # testcase : pass = 1 fail = 0
|
||||
SELECT count(*) > 0 as "compress_stat"
|
||||
FROM information_schema.innodb_cmp_per_index
|
||||
WHERE
|
||||
compress_ops_ok BETWEEN @comp_val AND 1000
|
||||
AND uncompress_ops BETWEEN @uncomp_val AND 1000
|
||||
AND table_name='tab5' AND database_name='test'
|
||||
AND index_name like 'idx%' ;
|
@ -0,0 +1,40 @@
|
||||
# insert test
|
||||
insert into t1 values (100, 1.1, 'pune');
|
||||
insert into t1 values (99, 1.2, 'mumbai');
|
||||
insert into t1 values (98, 1.3, 'jaipur');
|
||||
insert into t1 values (97, 1.4, 'delhi');
|
||||
insert into t1 values (96, 1.5, 'ahmedabad');
|
||||
select * from t1;
|
||||
select * from t1 where i = 98;
|
||||
select * from t1 where i < 100;
|
||||
#
|
||||
# add index using alter table table
|
||||
explain select * from t1 where f > 1.29999;
|
||||
alter table t1 add index sec_index(f);
|
||||
explain select * from t1 where f > 1.29999;
|
||||
select * from t1 where f > 1.29999;
|
||||
#
|
||||
explain select * from t1 where i = 100;
|
||||
alter table t1 add unique index pri_index(i);
|
||||
explain select * from t1 where i = 100;
|
||||
select * from t1 where i = 100;
|
||||
#
|
||||
# delete test
|
||||
delete from t1 where i < 97;
|
||||
select * from t1;
|
||||
insert into t1 values (96, 1.5, 'kolkata');
|
||||
select * from t1;
|
||||
#
|
||||
# update test
|
||||
update t1 set f = 1.44 where c = 'delhi';
|
||||
select * from t1;
|
||||
#
|
||||
# truncate table
|
||||
truncate table t1;
|
||||
insert into t1 values (100, 1.1, 'pune');
|
||||
insert into t1 values (99, 1.2, 'mumbai');
|
||||
insert into t1 values (98, 1.3, 'jaipur');
|
||||
insert into t1 values (97, 1.4, 'delhi');
|
||||
insert into t1 values (96, 1.5, 'ahmedabad');
|
||||
select * from t1;
|
||||
|
@ -0,0 +1,144 @@
|
||||
#
|
||||
# WL#6501: make truncate table atomic
|
||||
#
|
||||
|
||||
--source include/have_innodb.inc
|
||||
--source include/have_debug.inc
|
||||
|
||||
# Valgrind would complain about memory leaks when we crash on purpose.
|
||||
--source include/not_valgrind.inc
|
||||
# Embedded server does not support crashing
|
||||
--source include/not_embedded.inc
|
||||
# Avoid CrashReporter popup on Mac
|
||||
--source include/not_crashrep.inc
|
||||
|
||||
# suppress expected warnings.
|
||||
call mtr.add_suppression("The file '.*' already exists though the corresponding table did not exist in the InnoDB data dictionary");
|
||||
call mtr.add_suppression("Cannot create file '.*'");
|
||||
call mtr.add_suppression("InnoDB: Error number 17 means 'File exists'");
|
||||
|
||||
################################################################################
|
||||
#
|
||||
# Will test following scenarios:
|
||||
# 1. Hit crash point on completing drop of all indexes before creation of index
|
||||
# is commenced.
|
||||
# 2. Hit crash point after data is updated to system-table and in-memory dict.
|
||||
# 3. Post truncate recovery, abruptly shutdown the server.
|
||||
# On restart ensure table state is maintained.
|
||||
#
|
||||
################################################################################
|
||||
|
||||
#-----------------------------------------------------------------------------
|
||||
#
|
||||
# create test-bed
|
||||
#
|
||||
|
||||
let $WL6501_TMP_DIR = `select @@tmpdir`;
|
||||
let $WL6501_DATA_DIR = `select @@datadir`;
|
||||
let SEARCH_FILE = $MYSQLTEST_VARDIR/log/my_restart.err;
|
||||
|
||||
#-----------------------------------------------------------------------------
|
||||
#
|
||||
# 1. Hit crash point on completing drop of all indexes before creation of index
|
||||
# is commenced.
|
||||
#
|
||||
--echo "1. Hit crash point on completing drop of all indexes before creation"
|
||||
--echo " of index is commenced."
|
||||
eval set global innodb_file_per_table = $wl6501_file_per_table;
|
||||
eval set global innodb_file_format = $wl6501_file_format;
|
||||
set innodb_strict_mode=off;
|
||||
--disable_warnings
|
||||
eval create $wl6501_temp table t (
|
||||
i int, f float, c char,
|
||||
primary key pk(i), unique findex(f), index ck(c))
|
||||
engine = innodb row_format = $wl6501_row_fmt
|
||||
key_block_size = $wl6501_kbs;
|
||||
--enable_warnings
|
||||
insert into t values (1, 1.1, 'a'), (2, 2.2, 'b'), (3, 3.3, 'c');
|
||||
select * from t;
|
||||
check table t;
|
||||
#
|
||||
set session debug = "+d,ib_trunc_crash_drop_reinit_done_create_to_start";
|
||||
--source include/expect_crash.inc
|
||||
--error 2013
|
||||
truncate table t;
|
||||
#
|
||||
--source include/start_mysqld.inc
|
||||
|
||||
check table t;
|
||||
select * from t;
|
||||
insert into t values (1, 1.1, 'a'), (2, 2.2, 'b'), (3, 3.3, 'c');
|
||||
select * from t;
|
||||
select * from t where f < 2.5;
|
||||
drop table t;
|
||||
|
||||
#-----------------------------------------------------------------------------
|
||||
#
|
||||
# 2. Hit crash point after data is updated to system-table and in-memory dict.
|
||||
#
|
||||
--echo "2. Hit crash point after data is updated to system-table and"
|
||||
--echo " in-memory dict."
|
||||
eval set global innodb_file_per_table = $wl6501_file_per_table;
|
||||
eval set global innodb_file_format = $wl6501_file_format;
|
||||
set innodb_strict_mode=off;
|
||||
--disable_warnings
|
||||
eval create $wl6501_temp table t (
|
||||
i int, f float, c char,
|
||||
primary key pk(i), unique findex(f), index ck(c))
|
||||
engine = innodb row_format = $wl6501_row_fmt
|
||||
key_block_size = $wl6501_kbs;
|
||||
--enable_warnings
|
||||
insert into t values (1, 1.1, 'a'), (2, 2.2, 'b'), (3, 3.3, 'c');
|
||||
select * from t;
|
||||
check table t;
|
||||
#
|
||||
set session debug = "+d,ib_trunc_crash_on_updating_dict_sys_info";
|
||||
--source include/expect_crash.inc
|
||||
--error 2013
|
||||
truncate table t;
|
||||
#
|
||||
--source include/start_mysqld.inc
|
||||
check table t;
|
||||
select * from t;
|
||||
insert into t values (1, 1.1, 'a'), (2, 2.2, 'b'), (3, 3.3, 'c');
|
||||
select * from t;
|
||||
select * from t where f < 2.5;
|
||||
drop table t;
|
||||
|
||||
#-----------------------------------------------------------------------------
|
||||
#
|
||||
# 3. Post truncate recovery, abruptly shutdown the server.
|
||||
# On restart ensure table state is maintained.
|
||||
#
|
||||
--echo "3. Post truncate recovery, abruptly shutdown the server."
|
||||
--echo " On restart ensure table state is maintained."
|
||||
eval set global innodb_file_per_table = $wl6501_file_per_table;
|
||||
eval set global innodb_file_format = $wl6501_file_format;
|
||||
set innodb_strict_mode=off;
|
||||
--disable_warnings
|
||||
eval create $wl6501_temp table t (
|
||||
i int, f float, c char,
|
||||
primary key pk(i), unique findex(f), index ck(c))
|
||||
engine = innodb row_format = $wl6501_row_fmt
|
||||
key_block_size = $wl6501_kbs;
|
||||
--enable_warnings
|
||||
insert into t values (1, 1.1, 'a'), (2, 2.2, 'b'), (3, 3.3, 'c');
|
||||
select * from t;
|
||||
check table t;
|
||||
#
|
||||
set session debug = "+d,ib_trunc_crash_after_redo_log_write_complete";
|
||||
--source include/expect_crash.inc
|
||||
--error 2013
|
||||
truncate table t;
|
||||
#
|
||||
--source include/start_mysqld.inc
|
||||
check table t;
|
||||
select * from t;
|
||||
insert into t values (1, 1.1, 'a'), (2, 2.2, 'b'), (3, 3.3, 'c');
|
||||
#
|
||||
--source include/kill_and_restart_mysqld.inc
|
||||
#
|
||||
check table t;
|
||||
select * from t;
|
||||
select * from t where f < 2.5;
|
||||
drop table t;
|
234
mysql-test/suite/innodb_zip/include/innodb_wl6501_error.inc
Normal file
234
mysql-test/suite/innodb_zip/include/innodb_wl6501_error.inc
Normal file
@ -0,0 +1,234 @@
|
||||
#
|
||||
# WL#6501: make truncate table atomic
|
||||
#
|
||||
|
||||
--source include/have_innodb.inc
|
||||
--source include/have_debug.inc
|
||||
|
||||
--disable_query_log
|
||||
# suppress expected warnings
|
||||
call mtr.add_suppression("Unable to truncate FTS index for table");
|
||||
call mtr.add_suppression("Unable to assign a new identifier to table "
|
||||
"`.*`\.`.*` after truncating it");
|
||||
call mtr.add_suppression("Flagged corruption of .* in table "
|
||||
"`.*`\.`.*` in TRUNCATE TABLE");
|
||||
call mtr.add_suppression("Parent table of FTS auxiliary table "
|
||||
".*\/.* not found");
|
||||
--enable_query_log
|
||||
################################################################################
|
||||
#
|
||||
# Will test following scenarios:
|
||||
# 1. Error in assigning undo logs for truncate action.
|
||||
# 2. Error while preparing for truncate.
|
||||
# 3. Error while dropping/creating indexes.
|
||||
# 4. Error while completing truncate of table involving FTS.
|
||||
# 5. Error while updating sys-tables.
|
||||
#
|
||||
################################################################################
|
||||
|
||||
#-----------------------------------------------------------------------------
|
||||
#
|
||||
# create test-bed
|
||||
#
|
||||
let $per_table = `select @@innodb_file_per_table`;
|
||||
let $format = `select @@innodb_file_format`;
|
||||
|
||||
eval set global innodb_file_per_table = on;
|
||||
let $WL6501_TMP_DIR = `select @@tmpdir`;
|
||||
let $WL6501_DATA_DIR = `select @@datadir`;
|
||||
set innodb_strict_mode=off;
|
||||
|
||||
#-----------------------------------------------------------------------------
|
||||
#
|
||||
# 1. Error in assigning undo logs for truncate action.
|
||||
#
|
||||
--echo "1. Error in assigning undo logs for truncate action."
|
||||
eval set global innodb_file_per_table = $wl6501_file_per_table;
|
||||
eval set global innodb_file_format = $wl6501_file_format;
|
||||
--disable_warnings
|
||||
eval create $wl6501_temp table t (
|
||||
i int, f float, c char,
|
||||
primary key pk(i), unique findex(f), index ck(c))
|
||||
engine = innodb row_format = $wl6501_row_fmt
|
||||
key_block_size = $wl6501_kbs;
|
||||
--enable_warnings
|
||||
insert into t values (1, 1.1, 'a'), (2, 2.2, 'b'), (3, 3.3, 'c');
|
||||
select * from t;
|
||||
#check table t;
|
||||
#
|
||||
set session debug = "+d,ib_err_trunc_assigning_undo_log";
|
||||
--error ER_GET_ERRNO
|
||||
truncate table t;
|
||||
set session debug = "-d,ib_err_trunc_assigning_undo_log";
|
||||
#
|
||||
#check table t;
|
||||
select * from t;
|
||||
drop table t;
|
||||
|
||||
#-----------------------------------------------------------------------------
|
||||
#
|
||||
# 2. Error while preparing for truncate.
|
||||
#
|
||||
--echo "2. Error while preparing for truncate."
|
||||
eval set global innodb_file_per_table = $wl6501_file_per_table;
|
||||
eval set global innodb_file_format = $wl6501_file_format;
|
||||
--disable_warnings
|
||||
eval create $wl6501_temp table t (
|
||||
i int, f float, c char,
|
||||
primary key pk(i), unique findex(f), index ck(c))
|
||||
engine = innodb row_format = $wl6501_row_fmt
|
||||
key_block_size = $wl6501_kbs;
|
||||
--enable_warnings
|
||||
insert into t values (1, 1.1, 'a'), (2, 2.2, 'b'), (3, 3.3, 'c');
|
||||
select * from t;
|
||||
#check table t;
|
||||
#
|
||||
set session debug = "+d,ib_err_trunc_preparing_for_truncate";
|
||||
--error ER_GET_ERRNO
|
||||
truncate table t;
|
||||
set session debug = "-d,ib_err_trunc_preparing_for_truncate";
|
||||
#
|
||||
#check table t;
|
||||
select * from t;
|
||||
drop table t;
|
||||
|
||||
#-----------------------------------------------------------------------------
|
||||
#
|
||||
# 3. Error while dropping/creating indexes
|
||||
#
|
||||
--echo "3. Error while dropping/creating indexes"
|
||||
eval set global innodb_file_per_table = $wl6501_file_per_table;
|
||||
eval set global innodb_file_format = $wl6501_file_format;
|
||||
--disable_warnings
|
||||
eval create $wl6501_temp table t (
|
||||
i int, f float, c char,
|
||||
primary key pk(i), unique findex(f), index ck(c))
|
||||
engine = innodb row_format = $wl6501_row_fmt
|
||||
key_block_size = $wl6501_kbs;
|
||||
--enable_warnings
|
||||
insert into t values (1, 1.1, 'a'), (2, 2.2, 'b'), (3, 3.3, 'c');
|
||||
select * from t;
|
||||
#check table t;
|
||||
#
|
||||
set session debug = "+d,ib_err_trunc_drop_index";
|
||||
--error ER_GET_ERRNO
|
||||
truncate table t;
|
||||
set session debug = "-d,ib_err_trunc_drop_index";
|
||||
#
|
||||
#check table t;
|
||||
--error ER_TABLE_CORRUPT, 1030
|
||||
select * from t;
|
||||
drop table t;
|
||||
#
|
||||
#
|
||||
eval set global innodb_file_per_table = $wl6501_file_per_table;
|
||||
eval set global innodb_file_format = $wl6501_file_format;
|
||||
--disable_warnings
|
||||
eval create $wl6501_temp table t (
|
||||
i int, f float, c char,
|
||||
primary key pk(i), unique findex(f), index ck(c))
|
||||
engine = innodb row_format = $wl6501_row_fmt
|
||||
key_block_size = $wl6501_kbs;
|
||||
--enable_warnings
|
||||
insert into t values (1, 1.1, 'a'), (2, 2.2, 'b'), (3, 3.3, 'c');
|
||||
select * from t;
|
||||
#check table t;
|
||||
#
|
||||
set session debug = "+d,ib_err_trunc_create_index";
|
||||
--error ER_GET_ERRNO
|
||||
truncate table t;
|
||||
set session debug = "-d,ib_err_trunc_create_index";
|
||||
#
|
||||
#check table t;
|
||||
--error ER_TABLE_CORRUPT, 1030
|
||||
select * from t;
|
||||
drop table t;
|
||||
#
|
||||
#
|
||||
eval set global innodb_file_per_table = $wl6501_file_per_table;
|
||||
eval set global innodb_file_format = $wl6501_file_format;
|
||||
--disable_warnings
|
||||
eval create temporary table t (
|
||||
i int, f float, c char,
|
||||
primary key pk(i), unique findex(f), index ck(c))
|
||||
engine = innodb row_format = $wl6501_row_fmt
|
||||
key_block_size = $wl6501_kbs;
|
||||
--enable_warnings
|
||||
insert into t values (1, 1.1, 'a'), (2, 2.2, 'b'), (3, 3.3, 'c');
|
||||
select * from t;
|
||||
#check table t;
|
||||
#
|
||||
set session debug = "+d,ib_err_trunc_temp_recreate_index";
|
||||
--error ER_GET_ERRNO
|
||||
truncate table t;
|
||||
set session debug = "-d,ib_err_trunc_temp_recreate_index";
|
||||
#
|
||||
#check table t;
|
||||
--error ER_TABLE_CORRUPT, 1030
|
||||
select * from t;
|
||||
drop table t;
|
||||
|
||||
#-----------------------------------------------------------------------------
|
||||
#
|
||||
# 4. Error while completing truncate of table involving FTS.
|
||||
#
|
||||
--echo "4. Error while completing truncate of table involving FTS."
|
||||
eval set global innodb_file_per_table = $wl6501_file_per_table;
|
||||
eval set global innodb_file_format = $wl6501_file_format;
|
||||
--disable_warnings
|
||||
eval create $wl6501_temp table t (i int, f float, c char(100),
|
||||
primary key pk(i), index fk(f), fulltext index ck(c))
|
||||
engine=innodb row_format=$wl6501_row_fmt
|
||||
key_block_size=$wl6501_kbs;
|
||||
--enable_warnings
|
||||
insert into t values (1, 1.1, 'mysql is now oracle company'),
|
||||
(2, 2.2, 'innodb is part of mysql'),
|
||||
(3, 3.3, 'innodb is default storage engine of mysql');
|
||||
select * from t;
|
||||
#check table t;
|
||||
#
|
||||
set session debug = "+d,ib_err_trunc_during_fts_trunc";
|
||||
--error ER_GET_ERRNO
|
||||
truncate table t;
|
||||
set session debug = "-d,ib_err_trunc_during_fts_trunc";
|
||||
#
|
||||
#check table t;
|
||||
--error ER_TABLE_CORRUPT, 1030
|
||||
select * from t;
|
||||
drop table t;
|
||||
|
||||
#-----------------------------------------------------------------------------
|
||||
#
|
||||
# 5. Error while updating sys-tables.
|
||||
#
|
||||
--echo "5. Error while updating sys-tables."
|
||||
eval set global innodb_file_per_table = $wl6501_file_per_table;
|
||||
eval set global innodb_file_format = $wl6501_file_format;
|
||||
--disable_warnings
|
||||
eval create $wl6501_temp table t (i int, f float, c char(100),
|
||||
primary key pk(i), index fk(f), fulltext index ck(c))
|
||||
engine=innodb row_format=$wl6501_row_fmt
|
||||
key_block_size=$wl6501_kbs;
|
||||
--enable_warnings
|
||||
insert into t values (1, 1.1, 'mysql is now oracle company'),
|
||||
(2, 2.2, 'innodb is part of mysql'),
|
||||
(3, 3.3, 'innodb is default storage engine of mysql');
|
||||
select * from t order by i;
|
||||
#check table t;
|
||||
#
|
||||
set session debug = "+d,ib_err_trunc_during_sys_table_update";
|
||||
--error ER_GET_ERRNO
|
||||
truncate table t;
|
||||
set session debug = "-d,ib_err_trunc_during_sys_table_update";
|
||||
#
|
||||
#check table t;
|
||||
--error ER_TABLE_CORRUPT, 1030
|
||||
select * from t order by i;
|
||||
drop table t;
|
||||
|
||||
#-----------------------------------------------------------------------------
|
||||
#
|
||||
# remove test-bed
|
||||
#
|
||||
eval set global innodb_file_format = $format;
|
||||
eval set global innodb_file_per_table = $per_table;
|
113
mysql-test/suite/innodb_zip/include/innodb_wl6501_scale.inc
Normal file
113
mysql-test/suite/innodb_zip/include/innodb_wl6501_scale.inc
Normal file
@ -0,0 +1,113 @@
|
||||
#
|
||||
# load tables with some significant amount of data and then truncate it.
|
||||
#
|
||||
|
||||
#-----------------------------------------------------------------------------
|
||||
#
|
||||
# create test-bed
|
||||
#
|
||||
let $per_table = `select @@innodb_file_per_table`;
|
||||
let $format = `select @@innodb_file_format`;
|
||||
|
||||
let $WL6501_TMP_DIR = `select @@tmpdir`;
|
||||
let $WL6501_DATA_DIR = `select @@datadir`;
|
||||
set innodb_strict_mode=OFF;
|
||||
|
||||
#-----------------------------------------------------------------------------
|
||||
#
|
||||
# create procedure to load data
|
||||
#
|
||||
delimiter |;
|
||||
create procedure populate()
|
||||
begin
|
||||
declare i int default 1;
|
||||
while (i <= 5000) do
|
||||
insert into t1 values (i, 'a', 'b');
|
||||
insert into t2 values (i, 'a', 'b');
|
||||
insert into t3 values (i, 'a', 'b');
|
||||
set i = i + 1;
|
||||
end while;
|
||||
end|
|
||||
create procedure populate_small()
|
||||
begin
|
||||
declare i int default 10001;
|
||||
while (i <= 12000) do
|
||||
insert into t1 values (i, 'c', 'd');
|
||||
insert into t2 values (i, 'a', 'b');
|
||||
insert into t3 values (i, 'a', 'b');
|
||||
set i = i + 1;
|
||||
end while;
|
||||
end|
|
||||
delimiter ;|
|
||||
|
||||
#-----------------------------------------------------------------------------
|
||||
#
|
||||
# create and load the tables.
|
||||
#
|
||||
eval set global innodb_file_per_table = $wl6501_file_per_table;
|
||||
eval set global innodb_file_format = $wl6501_file_format;
|
||||
--replace_regex /[0-9]+/NUMBER/
|
||||
eval create table t1
|
||||
(i int, c1 char(100), c2 char(100),
|
||||
index c1_idx(c1))
|
||||
engine=innodb row_format=$wl6501_row_fmt
|
||||
key_block_size=$wl6501_kbs;
|
||||
eval create table t2
|
||||
(i int, c1 char(100), c2 char(100),
|
||||
index c1_idx(c1))
|
||||
engine=innodb row_format=$wl6501_row_fmt
|
||||
key_block_size=$wl6501_kbs;
|
||||
eval create temporary table t3
|
||||
(i int, c1 char(100), c2 char(100),
|
||||
index c1_idx(c1))
|
||||
engine=innodb row_format=$wl6501_row_fmt
|
||||
key_block_size=$wl6501_kbs;
|
||||
#
|
||||
select count(*) from t1;
|
||||
select count(*) from t2;
|
||||
select count(*) from t3;
|
||||
begin;
|
||||
call populate();
|
||||
commit;
|
||||
select count(*) from t1;
|
||||
select count(*) from t2;
|
||||
select count(*) from t3;
|
||||
#
|
||||
truncate table t1;
|
||||
select count(*) from t1;
|
||||
select count(*) from t2;
|
||||
select count(*) from t3;
|
||||
#
|
||||
call populate_small();
|
||||
select count(*) from t1;
|
||||
select count(*) from t2;
|
||||
select count(*) from t3;
|
||||
#
|
||||
truncate table t2;
|
||||
truncate table t3;
|
||||
select count(*) from t1;
|
||||
select count(*) from t2;
|
||||
select count(*) from t3;
|
||||
#
|
||||
call populate_small();
|
||||
select count(*) from t1;
|
||||
select count(*) from t2;
|
||||
select count(*) from t3;
|
||||
#
|
||||
drop table t1;
|
||||
drop table t2;
|
||||
drop table t3;
|
||||
|
||||
#-----------------------------------------------------------------------------
|
||||
#
|
||||
# drop the procedure
|
||||
#
|
||||
drop procedure populate;
|
||||
drop procedure populate_small;
|
||||
|
||||
#-----------------------------------------------------------------------------
|
||||
#
|
||||
# remove test-bed
|
||||
#
|
||||
eval set global innodb_file_format = $format;
|
||||
eval set global innodb_file_per_table = $per_table;
|
Reference in New Issue
Block a user