1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91
|
--echo #
--echo # WL#13447: Allow mysqldump to set long_query_time when running
--echo #
SET @my_slow_query_log_file = @@GLOBAL.slow_query_log_file;
SET @my_slow_query_log = @@GLOBAL.slow_query_log;
SET GLOBAL slow_query_log_file = "mysqldump_long_query_time-slow.log";
SET GLOBAL slow_query_log = ON;
CREATE DATABASE mysqldump_long_query_time;
USE mysqldump_long_query_time;
--echo
--echo ## TEST 1: mysqldump with custom flag set to high value
--exec $MYSQL_DUMP mysqldump_long_query_time --mysqld-long-query-time=86400 > /dev/null
let MYSQLD_DATADIR = `SELECT @@datadir`;
--echo # Check the slow log result. We shouldn't find any query.
--perl
open FILE, "$ENV{'MYSQLD_DATADIR'}/mysqldump_long_query_time-slow.log" or die;
my @lines = <FILE>;
foreach $line (@lines) {
if ($line =~ /^select/) {
print $line;
}
}
close FILE
EOF
--echo
--echo ## TEST 2: mysqldump with custom flag omitted, global set to 0
# Set to 0 globally, to test with omitted flag.
SET @my_long_query_time = @@GLOBAL.long_query_time;
SET GLOBAL long_query_time = 0;
CREATE TABLE t1 (i int, c char(255));
INSERT INTO t1 VALUES (0, lpad('a', 250, 'b'));
INSERT INTO t1 SELECT i+1,c FROM t1;
INSERT INTO t1 SELECT i+2,c FROM t1;
INSERT INTO t1 SELECT i+4,c FROM t1;
INSERT INTO t1 SELECT i+8,c FROM t1;
INSERT INTO t1 SELECT i+16,c FROM t1;
# omitting long_query_time flag means using the server value.
--exec $MYSQL_DUMP mysqldump_long_query_time > /dev/null
--echo # Check the slow log result. One "select" query should be found.
--perl
open FILE, "$ENV{'MYSQLD_DATADIR'}/mysqldump_long_query_time-slow.log" or die;
my @lines = <FILE>;
foreach $line (@lines) {
if ($line =~ /^select/) {
print $line;
}
}
close FILE
EOF
--echo
--echo ## TEST 3: mysqldump with custom flag set to 0, global set to default
# Restore default global value before testing flag = 0
SET @@GLOBAL.long_query_time = @my_long_query_time;
--exec $MYSQL_DUMP mysqldump_long_query_time --mysqld-long-query-time=0 > /dev/null
--echo
--echo # Check the slow log result.
--echo # Results should equal to previous test, one additional "select" query should appear.
--perl
open FILE, "$ENV{'MYSQLD_DATADIR'}/mysqldump_long_query_time-slow.log" or die;
my @lines = <FILE>;
foreach $line (@lines) {
if ($line =~ /^select/) {
print $line;
}
}
close FILE
EOF
--echo
--echo # Cleanup
remove_file $MYSQLD_DATADIR/mysqldump_long_query_time-slow.log;
DROP DATABASE mysqldump_long_query_time;
SET @@GLOBAL.slow_query_log_file = @my_slow_query_log_file;
SET @@GLOBAL.slow_query_log = @my_slow_query_log;
SET @@GLOBAL.long_query_time = @my_long_query_time;
|