Skip to content

Commit

Permalink
MDEV-12626: Import innodb_buffer_pool_dump_pct adjusted for MDEV-11454
Browse files Browse the repository at this point in the history
  • Loading branch information
dr-m committed Jul 2, 2019
1 parent 6bb922e commit 7f1e130
Show file tree
Hide file tree
Showing 2 changed files with 121 additions and 0 deletions.
22 changes: 22 additions & 0 deletions mysql-test/suite/innodb/r/innodb_buffer_pool_dump_pct.result
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
CREATE TABLE tab5 (col1 int auto_increment primary key,
col2 VARCHAR(25), col3 varchar(25)) ENGINE=InnoDB;
CREATE INDEX idx1 ON tab5(col2(10));
CREATE INDEX idx2 ON tab5(col3(10));
SET GLOBAL innodb_buffer_pool_filename=ib_buffer_pool100;
SET GLOBAL innodb_buffer_pool_dump_pct=100;
SELECT variable_value INTO @IBPDS
FROM information_schema.global_status
WHERE variable_name = 'INNODB_BUFFER_POOL_DUMP_STATUS';
SET GLOBAL innodb_buffer_pool_dump_now=ON;
SET GLOBAL innodb_buffer_pool_filename=ib_buffer_pool1;
SET GLOBAL innodb_buffer_pool_dump_pct=1;
SELECT @@global.innodb_buffer_pool_dump_pct;
@@global.innodb_buffer_pool_dump_pct
1
SELECT variable_value INTO @IBPDS
FROM information_schema.global_status
WHERE variable_name = 'INNODB_BUFFER_POOL_DUMP_STATUS';
SET GLOBAL innodb_buffer_pool_dump_now=ON;
SET GLOBAL innodb_buffer_pool_dump_pct=DEFAULT;
SET GLOBAL innodb_buffer_pool_filename=DEFAULT;
DROP TABLE tab5;
99 changes: 99 additions & 0 deletions mysql-test/suite/innodb/t/innodb_buffer_pool_dump_pct.test
Original file line number Diff line number Diff line change
@@ -0,0 +1,99 @@
# ************************************************************
# wl6504: This testcase is to check the functionality of the
# innodb_buffer_pool_dump_pct flag
# step 1.Set innodb_buffer_pool_dump_pct=100 and take the dump
# step 2.Set innodb_buffer_pool_dump_pct=1 and take the dump
# step 3.Compare the size of both the dump files
#*************************************************************
--source include/have_innodb.inc
--source include/have_innodb_16k.inc

let MYSQLD_DATADIR = `SELECT @@datadir`;

CREATE TABLE tab5 (col1 int auto_increment primary key,
col2 VARCHAR(25), col3 varchar(25)) ENGINE=InnoDB;
CREATE INDEX idx1 ON tab5(col2(10));
CREATE INDEX idx2 ON tab5(col3(10));

SET GLOBAL innodb_buffer_pool_filename=ib_buffer_pool100;
SET GLOBAL innodb_buffer_pool_dump_pct=100;

#***********************************************************
# SELECT *
# FROM information_schema.global_status
# WHERE variable_name = 'INNODB_BUFFER_POOL_DUMP_STATUS'
# gives
# a) VARIABLE_NAME VARIABLE_VALUE
# INNODB_BUFFER_POOL_DUMP_STATUS not started
# in case there was no innodb_buffer_pool_dump since server start.
# b) Something like
# VARIABLE_NAME VARIABLE_VALUE
# INNODB_BUFFER_POOL_DUMP_STATUS Buffer pool(s) dump completed at 130711 13:43:24
# in case there was a innodb_buffer_pool_dump since server start.
# Attention:
# - There is no guarantee that the current test is the first test which
# made an innodb_buffer_pool_dump since server startup.
# - The granularity of the timestamp is one second.
# - There could have been some dump caused by some previous test
# just a few milliseconds before.
# In order to avoid conflict with previous tests, read the current value
# of INNODB_BUFFER_POOL_DUMP_STATUS
# and confirm that the timestamp is different after the dump
#***********************************************************

# Read the current value to compare with the new value.
SELECT variable_value INTO @IBPDS
FROM information_schema.global_status
WHERE variable_name = 'INNODB_BUFFER_POOL_DUMP_STATUS';
SET GLOBAL innodb_buffer_pool_dump_now=ON;

# Sleep one second in order to ensure that the time stamp is
# different at next dump
--sleep 1

let $wait_condition = SELECT count(*) = 1
FROM information_schema.global_status
WHERE variable_name = 'INNODB_BUFFER_POOL_DUMP_STATUS'
AND variable_value != @IBPDS
AND variable_value like 'Buffer pool(s) dump completed at%';
--source include/wait_condition.inc

--file_exists $MYSQLD_DATADIR/ib_buffer_pool100
SET GLOBAL innodb_buffer_pool_filename=ib_buffer_pool1;
SET GLOBAL innodb_buffer_pool_dump_pct=1;
SELECT @@global.innodb_buffer_pool_dump_pct;

# Read the current value to compare with the new value.
--disable_warnings
SELECT variable_value INTO @IBPDS
FROM information_schema.global_status
WHERE variable_name = 'INNODB_BUFFER_POOL_DUMP_STATUS';
--enable_warnings

SET GLOBAL innodb_buffer_pool_dump_now=ON;

# Sleep one second in order to ensure that the time stamp is
# different at next dump
--sleep 1

let $wait_condition = SELECT count(*) = 1
FROM information_schema.global_status
WHERE variable_name = 'INNODB_BUFFER_POOL_DUMP_STATUS'
AND variable_value != @IBPDS
AND variable_value like 'Buffer pool(s) dump completed at%';
--source include/wait_condition.inc

--file_exists $MYSQLD_DATADIR/ib_buffer_pool1

perl;
my $size1 = -s "$ENV{MYSQLD_DATADIR}/ib_buffer_pool1";
my $size100 = -s "$ENV{MYSQLD_DATADIR}/ib_buffer_pool100";
die "$size100<=$size1\n" unless $size100 > $size1;
EOF

SET GLOBAL innodb_buffer_pool_dump_pct=DEFAULT;
SET GLOBAL innodb_buffer_pool_filename=DEFAULT;

--remove_file $MYSQLD_DATADIR/ib_buffer_pool100
--remove_file $MYSQLD_DATADIR/ib_buffer_pool1
DROP TABLE tab5;

0 comments on commit 7f1e130

Please sign in to comment.