mirror of
https://github.com/MariaDB/server.git
synced 2025-05-28 13:01:41 +03:00
MDEV-13626: Merge InnoDB test cases from MySQL 5.7 (part 7)
Import and adjust the innodb.innodb_buffer_pool_resize tests, except innodb.innodb_buffer_pool_resize_debug, which would time out. buf_pool_clear_hash_index(): Adjust assertions.
This commit is contained in:
parent
859fe1f24d
commit
d4ea179e13
34
mysql-test/suite/innodb/r/innodb_buffer_pool_resize.result
Normal file
34
mysql-test/suite/innodb/r/innodb_buffer_pool_resize.result
Normal file
@ -0,0 +1,34 @@
|
||||
set global innodb_adaptive_hash_index=ON;
|
||||
select @@innodb_buffer_pool_size;
|
||||
@@innodb_buffer_pool_size
|
||||
8388608
|
||||
set global innodb_buffer_pool_size = 10485760;
|
||||
Warnings:
|
||||
Warning 1292 Truncated incorrect innodb_buffer_pool_size value: '10485760'
|
||||
select @@innodb_buffer_pool_size;
|
||||
@@innodb_buffer_pool_size
|
||||
16777216
|
||||
create table t1 (id int not null, val int not null default '0', primary key (id)) ENGINE=InnoDB ROW_FORMAT=COMPRESSED;
|
||||
create or replace view view0 as select 1 union all select 1;
|
||||
set @`v_id` := 0;
|
||||
set @`v_val` := 0;
|
||||
replace into t1 select (@`v_id` := (@`v_id` + 4) mod 4294967296) as id, (@`v_val` := (@`v_val` + 4) mod 4294967296) as val from view0 v0, view0 v1, view0 v2, view0 v3, view0 v4, view0 v5, view0 v6, view0 v7, view0 v8, view0 v9, view0 v10, view0 v11, view0 v12, view0 v13, view0 v14, view0 v15, view0 v16, view0 v17;
|
||||
set global innodb_buffer_pool_size = 7340032;
|
||||
Warnings:
|
||||
Warning 1292 Truncated incorrect innodb_buffer_pool_size value: '7340032'
|
||||
select @@innodb_buffer_pool_size;
|
||||
@@innodb_buffer_pool_size
|
||||
8388608
|
||||
select count(val) from t1;
|
||||
count(val)
|
||||
262144
|
||||
set global innodb_adaptive_hash_index=OFF;
|
||||
set global innodb_buffer_pool_size = 25165824;
|
||||
select @@innodb_buffer_pool_size;
|
||||
@@innodb_buffer_pool_size
|
||||
25165824
|
||||
select count(val) from t1;
|
||||
count(val)
|
||||
262144
|
||||
drop table t1;
|
||||
drop view view0;
|
@ -0,0 +1,26 @@
|
||||
select @@innodb_buffer_pool_chunk_size;
|
||||
@@innodb_buffer_pool_chunk_size
|
||||
2097152
|
||||
create table t1 (id int not null, val int not null default '0', primary key (id)) ENGINE=InnoDB ROW_FORMAT=COMPRESSED;
|
||||
create or replace view view0 as select 1 union all select 1;
|
||||
set @`v_id` := 0;
|
||||
set @`v_val` := 0;
|
||||
replace into t1 select (@`v_id` := (@`v_id` + 4) mod 4294967296) as id, (@`v_val` := (@`v_val` + 4) mod 4294967296) as val from view0 v0, view0 v1, view0 v2, view0 v3, view0 v4, view0 v5, view0 v6, view0 v7, view0 v8, view0 v9, view0 v10, view0 v11, view0 v12, view0 v13, view0 v14, view0 v15, view0 v16, view0 v17;
|
||||
set global innodb_buffer_pool_size = 7340032;
|
||||
Warnings:
|
||||
Warning 1292 Truncated incorrect innodb_buffer_pool_size value: '7340032'
|
||||
select count(val) from t1;
|
||||
count(val)
|
||||
262144
|
||||
set global innodb_buffer_pool_size = 16777216;
|
||||
select count(val) from t1;
|
||||
count(val)
|
||||
262144
|
||||
drop table t1;
|
||||
drop view view0;
|
||||
set global innodb_buffer_pool_size = 1048576;
|
||||
Warnings:
|
||||
Warning 1292 Truncated incorrect innodb_buffer_pool_size value: '1048576'
|
||||
select @@innodb_buffer_pool_size;
|
||||
@@innodb_buffer_pool_size
|
||||
6291456
|
2
mysql-test/suite/innodb/t/innodb_buffer_pool_resize.opt
Normal file
2
mysql-test/suite/innodb/t/innodb_buffer_pool_resize.opt
Normal file
@ -0,0 +1,2 @@
|
||||
--innodb-buffer-pool-size=8M
|
||||
--innodb-page-size=4k
|
74
mysql-test/suite/innodb/t/innodb_buffer_pool_resize.test
Normal file
74
mysql-test/suite/innodb/t/innodb_buffer_pool_resize.test
Normal file
@ -0,0 +1,74 @@
|
||||
#
|
||||
# WL6117 : Resize the InnoDB Buffer Pool Online
|
||||
#
|
||||
|
||||
--source include/have_innodb.inc
|
||||
--source include/big_test.inc
|
||||
|
||||
let $wait_timeout = 180;
|
||||
let $wait_condition =
|
||||
SELECT SUBSTR(variable_value, 1, 34) = 'Completed resizing buffer pool at '
|
||||
FROM information_schema.global_status
|
||||
WHERE LOWER(variable_name) = 'innodb_buffer_pool_resize_status';
|
||||
|
||||
--disable_query_log
|
||||
set @old_innodb_buffer_pool_size = @@innodb_buffer_pool_size;
|
||||
set @old_innodb_adaptive_hash_index = @@innodb_adaptive_hash_index;
|
||||
if (`select (version() like '%debug%') > 0`)
|
||||
{
|
||||
set @old_innodb_disable_resize = @@innodb_disable_resize_buffer_pool_debug;
|
||||
set global innodb_disable_resize_buffer_pool_debug = OFF;
|
||||
}
|
||||
--enable_query_log
|
||||
|
||||
set global innodb_adaptive_hash_index=ON;
|
||||
|
||||
select @@innodb_buffer_pool_size;
|
||||
|
||||
# Expand buffer pool
|
||||
set global innodb_buffer_pool_size = 10485760;
|
||||
|
||||
--source include/wait_condition.inc
|
||||
|
||||
select @@innodb_buffer_pool_size;
|
||||
|
||||
# fill buffer pool
|
||||
create table t1 (id int not null, val int not null default '0', primary key (id)) ENGINE=InnoDB ROW_FORMAT=COMPRESSED;
|
||||
create or replace view view0 as select 1 union all select 1;
|
||||
|
||||
set @`v_id` := 0;
|
||||
set @`v_val` := 0;
|
||||
|
||||
# 2^18 == 262144 records
|
||||
replace into t1 select (@`v_id` := (@`v_id` + 4) mod 4294967296) as id, (@`v_val` := (@`v_val` + 4) mod 4294967296) as val from view0 v0, view0 v1, view0 v2, view0 v3, view0 v4, view0 v5, view0 v6, view0 v7, view0 v8, view0 v9, view0 v10, view0 v11, view0 v12, view0 v13, view0 v14, view0 v15, view0 v16, view0 v17;
|
||||
|
||||
# Shrink buffer pool
|
||||
set global innodb_buffer_pool_size = 7340032;
|
||||
--source include/wait_condition.inc
|
||||
|
||||
select @@innodb_buffer_pool_size;
|
||||
|
||||
select count(val) from t1;
|
||||
|
||||
set global innodb_adaptive_hash_index=OFF;
|
||||
|
||||
# Expand buffer pool to 24MB
|
||||
set global innodb_buffer_pool_size = 25165824;
|
||||
--source include/wait_condition.inc
|
||||
|
||||
select @@innodb_buffer_pool_size;
|
||||
|
||||
select count(val) from t1;
|
||||
|
||||
drop table t1;
|
||||
drop view view0;
|
||||
|
||||
--disable_query_log
|
||||
set global innodb_adaptive_hash_index = @old_innodb_adaptive_hash_index;
|
||||
set global innodb_buffer_pool_size = @old_innodb_buffer_pool_size;
|
||||
if (`select (version() like '%debug%') > 0`)
|
||||
{
|
||||
set global innodb_disable_resize_buffer_pool_debug = @old_innodb_disable_resize;
|
||||
}
|
||||
--enable_query_log
|
||||
--source include/wait_condition.inc
|
@ -0,0 +1,3 @@
|
||||
--innodb-buffer-pool-size=16M
|
||||
--innodb-buffer-pool-chunk-size=2M
|
||||
--innodb-page-size=4k
|
@ -0,0 +1,63 @@
|
||||
#
|
||||
# WL6117 : Resize the InnoDB Buffer Pool Online
|
||||
# (innodb_buffer_pool_chunk_size used case)
|
||||
#
|
||||
|
||||
--source include/have_innodb.inc
|
||||
--source include/big_test.inc
|
||||
|
||||
let $wait_timeout = 180;
|
||||
let $wait_condition =
|
||||
SELECT SUBSTR(variable_value, 1, 34) = 'Completed resizing buffer pool at '
|
||||
FROM information_schema.global_status
|
||||
WHERE LOWER(variable_name) = 'innodb_buffer_pool_resize_status';
|
||||
|
||||
--disable_query_log
|
||||
set @old_innodb_buffer_pool_size = @@innodb_buffer_pool_size;
|
||||
if (`select (version() like '%debug%') > 0`)
|
||||
{
|
||||
set @old_innodb_disable_resize = @@innodb_disable_resize_buffer_pool_debug;
|
||||
set global innodb_disable_resize_buffer_pool_debug = OFF;
|
||||
}
|
||||
--enable_query_log
|
||||
|
||||
select @@innodb_buffer_pool_chunk_size;
|
||||
|
||||
# fill buffer pool
|
||||
create table t1 (id int not null, val int not null default '0', primary key (id)) ENGINE=InnoDB ROW_FORMAT=COMPRESSED;
|
||||
create or replace view view0 as select 1 union all select 1;
|
||||
|
||||
set @`v_id` := 0;
|
||||
set @`v_val` := 0;
|
||||
|
||||
# 2^18 == 262144 records
|
||||
replace into t1 select (@`v_id` := (@`v_id` + 4) mod 4294967296) as id, (@`v_val` := (@`v_val` + 4) mod 4294967296) as val from view0 v0, view0 v1, view0 v2, view0 v3, view0 v4, view0 v5, view0 v6, view0 v7, view0 v8, view0 v9, view0 v10, view0 v11, view0 v12, view0 v13, view0 v14, view0 v15, view0 v16, view0 v17;
|
||||
|
||||
# Shrink buffer pool to 7MB
|
||||
set global innodb_buffer_pool_size = 7340032;
|
||||
--source include/wait_condition.inc
|
||||
|
||||
select count(val) from t1;
|
||||
|
||||
# Expand buffer pool to 16MB
|
||||
set global innodb_buffer_pool_size = 16777216;
|
||||
--source include/wait_condition.inc
|
||||
|
||||
select count(val) from t1;
|
||||
|
||||
drop table t1;
|
||||
drop view view0;
|
||||
|
||||
# Try to shrink buffer pool to smaller than chunk size
|
||||
set global innodb_buffer_pool_size = 1048576;
|
||||
--source include/wait_condition.inc
|
||||
select @@innodb_buffer_pool_size;
|
||||
|
||||
--disable_query_log
|
||||
set global innodb_buffer_pool_size = @old_innodb_buffer_pool_size;
|
||||
if (`select (version() like '%debug%') > 0`)
|
||||
{
|
||||
set global innodb_disable_resize_buffer_pool_debug = @old_innodb_disable_resize;
|
||||
}
|
||||
--enable_query_log
|
||||
--source include/wait_condition.inc
|
@ -2,7 +2,7 @@
|
||||
|
||||
Copyright (c) 1995, 2016, Oracle and/or its affiliates. All Rights Reserved.
|
||||
Copyright (c) 2008, Google Inc.
|
||||
Copyright (c) 2013, 2017, MariaDB Corporation.
|
||||
Copyright (c) 2013, 2018, MariaDB Corporation.
|
||||
|
||||
Portions of this file contain modifications contributed and copyrighted by
|
||||
Google, Inc. Those modifications are gratefully acknowledged and are described
|
||||
@ -3141,11 +3141,26 @@ buf_pool_clear_hash_index()
|
||||
see the comments in buf0buf.h */
|
||||
|
||||
if (!index) {
|
||||
# if defined UNIV_AHI_DEBUG || defined UNIV_DEBUG
|
||||
ut_a(!block->n_pointers);
|
||||
# endif /* UNIV_AHI_DEBUG || UNIV_DEBUG */
|
||||
continue;
|
||||
}
|
||||
|
||||
ut_ad(buf_block_get_state(block)
|
||||
== BUF_BLOCK_FILE_PAGE);
|
||||
ut_d(buf_page_state state
|
||||
= buf_block_get_state(block));
|
||||
/* Another thread may have set the
|
||||
state to BUF_BLOCK_REMOVE_HASH in
|
||||
buf_LRU_block_remove_hashed().
|
||||
|
||||
The state change in buf_page_realloc()
|
||||
is not observable here, because in
|
||||
that case we would have !block->index.
|
||||
|
||||
In the end, the entire adaptive hash
|
||||
index will be removed. */
|
||||
ut_ad(state == BUF_BLOCK_FILE_PAGE
|
||||
|| state == BUF_BLOCK_REMOVE_HASH);
|
||||
# if defined UNIV_AHI_DEBUG || defined UNIV_DEBUG
|
||||
block->n_pointers = 0;
|
||||
# endif /* UNIV_AHI_DEBUG || UNIV_DEBUG */
|
||||
|
Loading…
x
Reference in New Issue
Block a user