summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarko Mäkelä <marko.makela@mariadb.com>2019-07-02 15:20:13 +0300
committerMarko Mäkelä <marko.makela@mariadb.com>2019-07-02 15:24:23 +0300
commit7f1e1309bbd54a7923cf33a37938a29171ca0993 (patch)
treefc6fe03ea6e3559b9d681eb9ed0339074daaab09
parent6bb922e58ea92a30ff70a22ec41003b1a6468028 (diff)
downloadmariadb-git-7f1e1309bbd54a7923cf33a37938a29171ca0993.tar.gz
MDEV-12626: Import innodb_buffer_pool_dump_pct adjusted for MDEV-11454
-rw-r--r--mysql-test/suite/innodb/r/innodb_buffer_pool_dump_pct.result22
-rw-r--r--mysql-test/suite/innodb/t/innodb_buffer_pool_dump_pct.test99
2 files changed, 121 insertions, 0 deletions
diff --git a/mysql-test/suite/innodb/r/innodb_buffer_pool_dump_pct.result b/mysql-test/suite/innodb/r/innodb_buffer_pool_dump_pct.result
new file mode 100644
index 00000000000..d9f5e4dfeed
--- /dev/null
+++ b/mysql-test/suite/innodb/r/innodb_buffer_pool_dump_pct.result
@@ -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;
diff --git a/mysql-test/suite/innodb/t/innodb_buffer_pool_dump_pct.test b/mysql-test/suite/innodb/t/innodb_buffer_pool_dump_pct.test
new file mode 100644
index 00000000000..a7a414d61da
--- /dev/null
+++ b/mysql-test/suite/innodb/t/innodb_buffer_pool_dump_pct.test
@@ -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;