mirror of
https://github.com/MariaDB/server.git
synced 2025-04-26 11:49:09 +03:00
This test was using a sleep of 1 second in an attempt to ensure that the timestamp that is part of an InnoDB status string would increase. This not only prolongs the test execution time by 1+1 seconds, but it also is inaccurate. It is possible that the actual sleep duration is less than a second. Let us wait for the creation of the file ib_buffer_pool and then wait for the buffer pool dump completion. In that way, the test can complete in a dozen or two milliseconds (1% of the previous duration) and work more reliably.
91 lines
3.0 KiB
Plaintext
91 lines
3.0 KiB
Plaintext
# ************************************************************
|
|
# 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_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.
|
|
#***********************************************************
|
|
|
|
--error 0,1
|
|
--remove_file $MYSQLD_DATADIR/ib_buffer_pool
|
|
|
|
SET GLOBAL innodb_buffer_pool_dump_now=ON;
|
|
perl;
|
|
my $f="$ENV{MYSQLD_DATADIR}/ib_buffer_pool";
|
|
my $count=300;
|
|
until (-e $f)
|
|
{
|
|
select(undef, undef, undef, .1);
|
|
die "File $f was not created\n" if (0 > --$count);
|
|
}
|
|
EOF
|
|
let $wait_condition = SELECT count(*) = 1
|
|
FROM information_schema.global_status
|
|
WHERE variable_name = 'INNODB_BUFFER_POOL_DUMP_STATUS'
|
|
AND variable_value like 'Buffer pool(s) dump completed at%';
|
|
--source include/wait_condition.inc
|
|
|
|
--move_file $MYSQLD_DATADIR/ib_buffer_pool $MYSQLD_DATADIR/ib_buffer_pool100
|
|
SET GLOBAL innodb_buffer_pool_dump_pct=1;
|
|
SET GLOBAL innodb_buffer_pool_dump_now=ON;
|
|
|
|
perl;
|
|
my $f="$ENV{MYSQLD_DATADIR}/ib_buffer_pool";
|
|
my $count=300;
|
|
until (-e $f)
|
|
{
|
|
select(undef, undef, undef, .1);
|
|
die "File $f was not created\n" if (0 > --$count);
|
|
}
|
|
EOF
|
|
|
|
let $wait_condition = SELECT count(*) = 1
|
|
FROM information_schema.global_status
|
|
WHERE variable_name = 'INNODB_BUFFER_POOL_DUMP_STATUS'
|
|
AND variable_value like 'Buffer pool(s) dump completed at%';
|
|
--source include/wait_condition.inc
|
|
|
|
--file_exists $MYSQLD_DATADIR/ib_buffer_pool
|
|
|
|
perl;
|
|
my $size1 = -s "$ENV{MYSQLD_DATADIR}/ib_buffer_pool";
|
|
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;
|
|
|
|
--remove_file $MYSQLD_DATADIR/ib_buffer_pool100
|
|
DROP TABLE tab5;
|