mirror of
https://github.com/MariaDB/server.git
synced 2025-02-02 03:51:50 +01:00
Merge from mysql-trunk.
This commit is contained in:
commit
8878213408
63 changed files with 414 additions and 136 deletions
|
@ -137,6 +137,7 @@ ENDIF(MSVC)
|
||||||
|
|
||||||
IF(WIN32)
|
IF(WIN32)
|
||||||
ADD_DEFINITIONS("-D_WINDOWS -D__WIN__ -D_CRT_SECURE_NO_DEPRECATE")
|
ADD_DEFINITIONS("-D_WINDOWS -D__WIN__ -D_CRT_SECURE_NO_DEPRECATE")
|
||||||
|
ADD_DEFINITIONS("-D_WIN32_WINNT=0x0501")
|
||||||
ENDIF(WIN32)
|
ENDIF(WIN32)
|
||||||
|
|
||||||
# default to x86 platform. We'll check for X64 in a bit
|
# default to x86 platform. We'll check for X64 in a bit
|
||||||
|
|
|
@ -417,6 +417,7 @@ static struct st_expected_errors saved_expected_errors;
|
||||||
struct st_command
|
struct st_command
|
||||||
{
|
{
|
||||||
char *query, *query_buf,*first_argument,*last_argument,*end;
|
char *query, *query_buf,*first_argument,*last_argument,*end;
|
||||||
|
DYNAMIC_STRING content;
|
||||||
int first_word_len, query_len;
|
int first_word_len, query_len;
|
||||||
my_bool abort_on_error;
|
my_bool abort_on_error;
|
||||||
struct st_expected_errors expected_errors;
|
struct st_expected_errors expected_errors;
|
||||||
|
@ -1140,6 +1141,8 @@ void free_used_memory()
|
||||||
{
|
{
|
||||||
struct st_command **q= dynamic_element(&q_lines, i, struct st_command**);
|
struct st_command **q= dynamic_element(&q_lines, i, struct st_command**);
|
||||||
my_free((*q)->query_buf,MYF(MY_ALLOW_ZERO_PTR));
|
my_free((*q)->query_buf,MYF(MY_ALLOW_ZERO_PTR));
|
||||||
|
if ((*q)->content.str)
|
||||||
|
dynstr_free(&(*q)->content);
|
||||||
my_free((*q),MYF(0));
|
my_free((*q),MYF(0));
|
||||||
}
|
}
|
||||||
for (i= 0; i < 10; i++)
|
for (i= 0; i < 10; i++)
|
||||||
|
@ -3290,21 +3293,30 @@ void do_write_file_command(struct st_command *command, my_bool append)
|
||||||
sizeof(write_file_args)/sizeof(struct command_arg),
|
sizeof(write_file_args)/sizeof(struct command_arg),
|
||||||
' ');
|
' ');
|
||||||
|
|
||||||
/* If no delimiter was provided, use EOF */
|
|
||||||
if (ds_delimiter.length == 0)
|
|
||||||
dynstr_set(&ds_delimiter, "EOF");
|
|
||||||
|
|
||||||
if (!append && access(ds_filename.str, F_OK) == 0)
|
if (!append && access(ds_filename.str, F_OK) == 0)
|
||||||
{
|
{
|
||||||
/* The file should not be overwritten */
|
/* The file should not be overwritten */
|
||||||
die("File already exist: '%s'", ds_filename.str);
|
die("File already exist: '%s'", ds_filename.str);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ds_content= command->content;
|
||||||
|
/* If it hasn't been done already by a loop iteration, fill it in */
|
||||||
|
if (! ds_content.str)
|
||||||
|
{
|
||||||
|
/* If no delimiter was provided, use EOF */
|
||||||
|
if (ds_delimiter.length == 0)
|
||||||
|
dynstr_set(&ds_delimiter, "EOF");
|
||||||
|
|
||||||
init_dynamic_string(&ds_content, "", 1024, 1024);
|
init_dynamic_string(&ds_content, "", 1024, 1024);
|
||||||
read_until_delimiter(&ds_content, &ds_delimiter);
|
read_until_delimiter(&ds_content, &ds_delimiter);
|
||||||
|
command->content= ds_content;
|
||||||
|
}
|
||||||
|
/* This function could be called even if "false", so check before printing */
|
||||||
|
if (cur_block->ok)
|
||||||
|
{
|
||||||
DBUG_PRINT("info", ("Writing to file: %s", ds_filename.str));
|
DBUG_PRINT("info", ("Writing to file: %s", ds_filename.str));
|
||||||
str_to_file2(ds_filename.str, ds_content.str, ds_content.length, append);
|
str_to_file2(ds_filename.str, ds_content.str, ds_content.length, append);
|
||||||
dynstr_free(&ds_content);
|
}
|
||||||
dynstr_free(&ds_filename);
|
dynstr_free(&ds_filename);
|
||||||
dynstr_free(&ds_delimiter);
|
dynstr_free(&ds_delimiter);
|
||||||
DBUG_VOID_RETURN;
|
DBUG_VOID_RETURN;
|
||||||
|
@ -3447,12 +3459,17 @@ void do_diff_files(struct st_command *command)
|
||||||
die("command \"diff_files\" failed, file '%s' does not exist",
|
die("command \"diff_files\" failed, file '%s' does not exist",
|
||||||
ds_filename2.str);
|
ds_filename2.str);
|
||||||
|
|
||||||
if ((error= compare_files(ds_filename.str, ds_filename2.str)))
|
if ((error= compare_files(ds_filename.str, ds_filename2.str)) &&
|
||||||
|
match_expected_error(command, error, NULL) < 0)
|
||||||
{
|
{
|
||||||
/* Compare of the two files failed, append them to output
|
/* Compare of the two files failed, append them to output
|
||||||
so the failure can be analyzed
|
so the failure can be analyzed, but only if it was not
|
||||||
|
expected to fail.
|
||||||
*/
|
*/
|
||||||
show_diff(&ds_res, ds_filename.str, ds_filename2.str);
|
show_diff(&ds_res, ds_filename.str, ds_filename2.str);
|
||||||
|
log_file.write(&ds_res);
|
||||||
|
log_file.flush();
|
||||||
|
dynstr_set(&ds_res, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
dynstr_free(&ds_filename);
|
dynstr_free(&ds_filename);
|
||||||
|
@ -7165,6 +7182,10 @@ void run_query(struct st_connection *cn, struct st_command *command, int flags)
|
||||||
run_query_normal(cn, command, flags, query, query_len,
|
run_query_normal(cn, command, flags, query, query_len,
|
||||||
ds, &ds_warnings);
|
ds, &ds_warnings);
|
||||||
|
|
||||||
|
dynstr_free(&ds_warnings);
|
||||||
|
if (command->type == Q_EVAL)
|
||||||
|
dynstr_free(&eval_query);
|
||||||
|
|
||||||
if (display_result_sorted)
|
if (display_result_sorted)
|
||||||
{
|
{
|
||||||
/* Sort the result set and append it to result */
|
/* Sort the result set and append it to result */
|
||||||
|
@ -7195,11 +7216,8 @@ void run_query(struct st_connection *cn, struct st_command *command, int flags)
|
||||||
check_require(ds, command->require_file);
|
check_require(ds, command->require_file);
|
||||||
}
|
}
|
||||||
|
|
||||||
dynstr_free(&ds_warnings);
|
|
||||||
if (ds == &ds_result)
|
if (ds == &ds_result)
|
||||||
dynstr_free(&ds_result);
|
dynstr_free(&ds_result);
|
||||||
if (command->type == Q_EVAL)
|
|
||||||
dynstr_free(&eval_query);
|
|
||||||
DBUG_VOID_RETURN;
|
DBUG_VOID_RETURN;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -7684,7 +7702,31 @@ int main(int argc, char **argv)
|
||||||
command->type= Q_COMMENT;
|
command->type= Q_COMMENT;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (cur_block->ok)
|
my_bool ok_to_do= cur_block->ok;
|
||||||
|
/*
|
||||||
|
Some commands need to be "done" the first time if they may get
|
||||||
|
re-iterated over in a true context. This can only happen if there's
|
||||||
|
a while loop at some level above the current block.
|
||||||
|
*/
|
||||||
|
if (!ok_to_do)
|
||||||
|
{
|
||||||
|
if (command->type == Q_SOURCE ||
|
||||||
|
command->type == Q_WRITE_FILE ||
|
||||||
|
command->type == Q_APPEND_FILE ||
|
||||||
|
command->type == Q_PERL)
|
||||||
|
{
|
||||||
|
for (struct st_block *stb= cur_block-1; stb >= block_stack; stb--)
|
||||||
|
{
|
||||||
|
if (stb->cmd == cmd_while)
|
||||||
|
{
|
||||||
|
ok_to_do= 1;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ok_to_do)
|
||||||
{
|
{
|
||||||
command->last_argument= command->first_argument;
|
command->last_argument= command->first_argument;
|
||||||
processed = 1;
|
processed = 1;
|
||||||
|
@ -7993,6 +8035,8 @@ int main(int argc, char **argv)
|
||||||
if (parsing_disabled)
|
if (parsing_disabled)
|
||||||
die("Test ended with parsing disabled");
|
die("Test ended with parsing disabled");
|
||||||
|
|
||||||
|
my_bool empty_result= FALSE;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
The whole test has been executed _sucessfully_.
|
The whole test has been executed _sucessfully_.
|
||||||
Time to compare result or save it to record file.
|
Time to compare result or save it to record file.
|
||||||
|
@ -8032,12 +8076,21 @@ int main(int argc, char **argv)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
{
|
||||||
|
/* Empty output is an error *unless* we also have an empty result file */
|
||||||
|
if (! result_file_name || record ||
|
||||||
|
compare_files (log_file.file_name(), result_file_name))
|
||||||
{
|
{
|
||||||
die("The test didn't produce any output");
|
die("The test didn't produce any output");
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
empty_result= TRUE; /* Meaning empty was expected */
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (!command_executed && result_file_name)
|
if (!command_executed && result_file_name && !empty_result)
|
||||||
die("No queries executed but result file found!");
|
die("No queries executed but non-empty result file found!");
|
||||||
|
|
||||||
verbose_msg("Test has succeeded!");
|
verbose_msg("Test has succeeded!");
|
||||||
timer_output();
|
timer_output();
|
||||||
|
|
|
@ -81,8 +81,13 @@ rl_alphabetic (c)
|
||||||
|
|
||||||
#if defined (HANDLE_MULTIBYTE)
|
#if defined (HANDLE_MULTIBYTE)
|
||||||
int
|
int
|
||||||
_rl_walphabetic (wc)
|
/*
|
||||||
wchar_t wc;
|
Portability issue with VisualAge C++ Professional / C for AIX Compiler, Version 6:
|
||||||
|
"util.c", line 84.1: 1506-343 (S) Redeclaration of _rl_walphabetic differs
|
||||||
|
from previous declaration on line 110 of "rlmbutil.h".
|
||||||
|
So, put type in the function signature here.
|
||||||
|
*/
|
||||||
|
_rl_walphabetic (wchar_t wc)
|
||||||
{
|
{
|
||||||
int c;
|
int c;
|
||||||
|
|
||||||
|
|
|
@ -10,7 +10,7 @@ AC_CANONICAL_SYSTEM
|
||||||
#
|
#
|
||||||
# When changing major version number please also check switch statement
|
# When changing major version number please also check switch statement
|
||||||
# in client/mysqlbinlog.cc:check_master_version().
|
# in client/mysqlbinlog.cc:check_master_version().
|
||||||
AM_INIT_AUTOMAKE(mysql, 5.4.3-beta)
|
AM_INIT_AUTOMAKE(mysql, 5.4.4-beta)
|
||||||
AM_CONFIG_HEADER([include/config.h:config.h.in])
|
AM_CONFIG_HEADER([include/config.h:config.h.in])
|
||||||
|
|
||||||
PROTOCOL_VERSION=10
|
PROTOCOL_VERSION=10
|
||||||
|
|
|
@ -17,7 +17,8 @@
|
||||||
|
|
||||||
## Process this file with automake to create Makefile.in
|
## Process this file with automake to create Makefile.in
|
||||||
|
|
||||||
testdir = $(prefix)/mysql-test
|
testroot = $(prefix)
|
||||||
|
testdir = $(testroot)/mysql-test
|
||||||
|
|
||||||
test_SCRIPTS = mtr \
|
test_SCRIPTS = mtr \
|
||||||
mysql-test-run \
|
mysql-test-run \
|
||||||
|
|
|
@ -23,3 +23,10 @@ The syntax is as follows:
|
||||||
start with the same characters up to the last letter before the asterisk
|
start with the same characters up to the last letter before the asterisk
|
||||||
are considered experimental:
|
are considered experimental:
|
||||||
main.a* # get rid of main.alias, main.alibaba and main.agliolio
|
main.a* # get rid of main.alias, main.alibaba and main.agliolio
|
||||||
|
|
||||||
|
6) Optionally, the test case may be followed by one or more platform
|
||||||
|
qualifiers beginning with @ or @!. The test will then be considered
|
||||||
|
experimental only/except on that platform. Basic OS names as
|
||||||
|
reported by $^O in Perl, or 'windows' are supported, this includes
|
||||||
|
solaris, linux, windows, aix, darwin, ... Example:
|
||||||
|
main.alias @aix @windows # Fails on those
|
||||||
|
|
|
@ -1,6 +1,19 @@
|
||||||
funcs_1.charset_collation_1 # depends on compile-time decisions
|
funcs_1.charset_collation_1 # depends on compile-time decisions
|
||||||
binlog.binlog_tmp_table # Bug#45578: Test binlog_tmp_table fails ramdonly on PB2: Unknown table 't2'
|
binlog.binlog_tmp_table* # Bug#45578: Test binlog_tmp_table fails ramdonly on PB2: Unknown table 't2'
|
||||||
|
|
||||||
|
innodb.innodb_information_schema # Bug#47449 2009-09-19 alik main.information_schema and innodb.innodb_information_schema fail sporadically
|
||||||
|
|
||||||
main.ctype_gbk_binlog # Bug#46010: main.ctype_gbk_binlog fails sporadically : Table 't2' already exists
|
main.ctype_gbk_binlog # Bug#46010: main.ctype_gbk_binlog fails sporadically : Table 't2' already exists
|
||||||
rpl.rpl_row_create_table # Bug#45576: rpl_row_create_table fails on PB2
|
main.lock_multi_bug38499 # Bug#47448 2009-09-19 alik main.lock_multi_bug38499 times out sporadically
|
||||||
|
main.information_schema # Bug#47449 2009-09-19 alik main.information_schema and innodb.innodb_information_schema fail sporadically
|
||||||
|
|
||||||
|
rpl.rpl_row_create_table* # Bug#45576: rpl_row_create_table fails on PB2
|
||||||
rpl_ndb.rpl_ndb_log # Bug#38998
|
rpl_ndb.rpl_ndb_log # Bug#38998
|
||||||
rpl.rpl_innodb_bug28430 # Bug#46029
|
rpl.rpl_innodb_bug28430* @solaris # Bug#46029
|
||||||
|
main.plugin_load @solaris # Bug#47146
|
||||||
|
rpl.rpl_get_master_version_and_clock* # Bug#46931 2009-08-26 alik rpl.rpl_get_master_version_and_clock fails on hpux11.31
|
||||||
|
main.plugin* @solaris # Bug#47146 Linking problem with example plugin when dtrace enabled
|
||||||
|
rpl.rpl_plugin_load* @solaris # Bug#47146
|
||||||
|
|
||||||
|
ndb.n* # Consider all NDB tests experimental.
|
||||||
|
rpl_ndb.r* # Consider all NDB tests experimental.
|
||||||
|
|
|
@ -22,6 +22,8 @@ DROP TABLE IF EXISTS t1, t2,t3,t4,t5,t6,t7,t8,t9,t10,t11,t12,t13,t14,t14a,t15,t1
|
||||||
# should stop the slave. #
|
# should stop the slave. #
|
||||||
#################################################
|
#################################################
|
||||||
|
|
||||||
|
call mtr.add_suppression("Slave: Unknown table 't6' Error_code: 1051");
|
||||||
|
|
||||||
--echo **** Diff Table Def Start ****
|
--echo **** Diff Table Def Start ****
|
||||||
|
|
||||||
##############################################
|
##############################################
|
||||||
|
|
|
@ -132,7 +132,7 @@ INSERT INTO global_suppressions VALUES
|
||||||
|
|
||||||
("Error in Log_event::read_log_event\\\(\\\): 'Sanity check failed', data_len: 258, event_type: 49"),
|
("Error in Log_event::read_log_event\\\(\\\): 'Sanity check failed', data_len: 258, event_type: 49"),
|
||||||
|
|
||||||
("Statement is not safe to log in statement format"),
|
("Statement may not be safe to log in statement format"),
|
||||||
|
|
||||||
/* test case for Bug#bug29807 copies a stray frm into database */
|
/* test case for Bug#bug29807 copies a stray frm into database */
|
||||||
("InnoDB: Error: table `test`.`bug29807` does not exist in the InnoDB internal"),
|
("InnoDB: Error: table `test`.`bug29807` does not exist in the InnoDB internal"),
|
||||||
|
@ -162,6 +162,8 @@ INSERT INTO global_suppressions VALUES
|
||||||
("Slave: Unknown column 'c7' in 't15' Error_code: 1054"),
|
("Slave: Unknown column 'c7' in 't15' Error_code: 1054"),
|
||||||
("Slave: Can't DROP 'c7'.* 1091"),
|
("Slave: Can't DROP 'c7'.* 1091"),
|
||||||
("Slave: Key column 'c6'.* 1072"),
|
("Slave: Key column 'c6'.* 1072"),
|
||||||
|
("The slave I.O thread stops because a fatal error is encountered when it try to get the value of SERVER_ID variable from master."),
|
||||||
|
(".SELECT UNIX_TIMESTAMP... failed on master, do not trust column Seconds_Behind_Master of SHOW SLAVE STATUS"),
|
||||||
|
|
||||||
/* Test case for Bug#31590 in order_by.test produces the following error */
|
/* Test case for Bug#31590 in order_by.test produces the following error */
|
||||||
("Out of sort memory; increase server sort buffer size"),
|
("Out of sort memory; increase server sort buffer size"),
|
||||||
|
@ -172,6 +174,17 @@ INSERT INTO global_suppressions VALUES
|
||||||
*/
|
*/
|
||||||
("Can't find file: '.\\\\test\\\\\\?{8}.frm'"),
|
("Can't find file: '.\\\\test\\\\\\?{8}.frm'"),
|
||||||
|
|
||||||
|
/* Added 2009-08-XX after fixing Bug #42408 */
|
||||||
|
|
||||||
|
("Although a path was specified for the .* option, log tables are used"),
|
||||||
|
("Backup: Operation aborted"),
|
||||||
|
("Restore: Operation aborted"),
|
||||||
|
("Restore: The grant .* was skipped because the user does not exist"),
|
||||||
|
("The path specified for the variable .* is not a directory or cannot be written:"),
|
||||||
|
("Master server does not support or not configured semi-sync replication, fallback to asynchronous"),
|
||||||
|
(": The MySQL server is running with the --secure-backup-file-priv option so it cannot execute this statement"),
|
||||||
|
("Slave: Unknown table 't1' Error_code: 1051"),
|
||||||
|
|
||||||
("THE_LAST_SUPPRESSION")||
|
("THE_LAST_SUPPRESSION")||
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -204,8 +204,10 @@ my @mysqld_rules=
|
||||||
{ 'port' => \&fix_port },
|
{ 'port' => \&fix_port },
|
||||||
{ 'socket' => \&fix_socket },
|
{ 'socket' => \&fix_socket },
|
||||||
{ '#log-error' => \&fix_log_error },
|
{ '#log-error' => \&fix_log_error },
|
||||||
{ 'log' => \&fix_log },
|
{ 'general_log' => 1 },
|
||||||
{ 'log-slow-queries' => \&fix_log_slow_queries },
|
{ 'general_log_file' => \&fix_log },
|
||||||
|
{ 'slow_query_log' => 1 },
|
||||||
|
{ 'slow_query_log_file' => \&fix_log_slow_queries },
|
||||||
{ '#user' => sub { return shift->{ARGS}->{user} || ""; } },
|
{ '#user' => sub { return shift->{ARGS}->{user} || ""; } },
|
||||||
{ '#password' => sub { return shift->{ARGS}->{password} || ""; } },
|
{ '#password' => sub { return shift->{ARGS}->{password} || ""; } },
|
||||||
{ 'server-id' => \&fix_server_id, },
|
{ 'server-id' => \&fix_server_id, },
|
||||||
|
|
|
@ -106,10 +106,13 @@ sub check_socket_path_length {
|
||||||
my ($path)= @_;
|
my ($path)= @_;
|
||||||
|
|
||||||
return 0 if IS_WINDOWS;
|
return 0 if IS_WINDOWS;
|
||||||
|
# This may not be true, but we can't test for it on AIX due to Perl bug
|
||||||
|
# See Bug #45771
|
||||||
|
return 0 if ($^O eq 'aix');
|
||||||
|
|
||||||
require IO::Socket::UNIX;
|
require IO::Socket::UNIX;
|
||||||
|
|
||||||
my $truncated= 1; # Be negative
|
my $truncated= undef;
|
||||||
|
|
||||||
# Create a tempfile name with same length as "path"
|
# Create a tempfile name with same length as "path"
|
||||||
my $tmpdir = tempdir( CLEANUP => 0);
|
my $tmpdir = tempdir( CLEANUP => 0);
|
||||||
|
@ -122,6 +125,7 @@ sub check_socket_path_length {
|
||||||
Local => $testfile,
|
Local => $testfile,
|
||||||
Listen => 1,
|
Listen => 1,
|
||||||
);
|
);
|
||||||
|
$truncated= 1; # Be negatvie
|
||||||
|
|
||||||
die "Could not create UNIX domain socket: $!"
|
die "Could not create UNIX domain socket: $!"
|
||||||
unless defined $sock;
|
unless defined $sock;
|
||||||
|
@ -133,6 +137,9 @@ sub check_socket_path_length {
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
die "Unexpected failure when checking socket path length: $@"
|
||||||
|
if $@ and not defined $truncated;
|
||||||
|
|
||||||
$sock= undef; # Close socket
|
$sock= undef; # Close socket
|
||||||
rmtree($tmpdir); # Remove the tempdir and any socket file created
|
rmtree($tmpdir); # Remove the tempdir and any socket file created
|
||||||
return $truncated;
|
return $truncated;
|
||||||
|
|
|
@ -13,7 +13,8 @@
|
||||||
# along with this program; if not, write to the Free Software
|
# along with this program; if not, write to the Free Software
|
||||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
|
||||||
safedir = $(prefix)/mysql-test/lib/My/SafeProcess
|
testroot = $(prefix)
|
||||||
|
safedir = $(testroot)/mysql-test/lib/My/SafeProcess
|
||||||
#nobase_bin_PROGRAMS = ...
|
#nobase_bin_PROGRAMS = ...
|
||||||
safe_PROGRAMS = my_safe_process
|
safe_PROGRAMS = my_safe_process
|
||||||
|
|
||||||
|
|
|
@ -163,6 +163,7 @@ int main(int argc, const char** argv )
|
||||||
HANDLE job_handle;
|
HANDLE job_handle;
|
||||||
HANDLE wait_handles[NUM_HANDLES]= {0};
|
HANDLE wait_handles[NUM_HANDLES]= {0};
|
||||||
PROCESS_INFORMATION process_info= {0};
|
PROCESS_INFORMATION process_info= {0};
|
||||||
|
BOOL nocore= FALSE;
|
||||||
|
|
||||||
sprintf(safe_process_name, "safe_process[%d]", pid);
|
sprintf(safe_process_name, "safe_process[%d]", pid);
|
||||||
|
|
||||||
|
@ -188,7 +189,14 @@ int main(int argc, const char** argv )
|
||||||
die("No real args -> nothing to do");
|
die("No real args -> nothing to do");
|
||||||
/* Copy the remaining args to child_arg */
|
/* Copy the remaining args to child_arg */
|
||||||
for (int j= i+1; j < argc; j++) {
|
for (int j= i+1; j < argc; j++) {
|
||||||
to+= _snprintf(to, child_args + sizeof(child_args) - to, "%s ", argv[j]);
|
if (strchr (argv[j], ' ')) {
|
||||||
|
/* Protect with "" if this arg contains a space */
|
||||||
|
to+= _snprintf(to, child_args + sizeof(child_args) - to,
|
||||||
|
"\"%s\" ", argv[j]);
|
||||||
|
} else {
|
||||||
|
to+= _snprintf(to, child_args + sizeof(child_args) - to,
|
||||||
|
"%s ", argv[j]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
} else {
|
} else {
|
||||||
|
@ -204,6 +212,10 @@ int main(int argc, const char** argv )
|
||||||
if ((parent_pid= atoi(start)) == 0)
|
if ((parent_pid= atoi(start)) == 0)
|
||||||
die("Invalid value '%s' passed to --parent-id", start);
|
die("Invalid value '%s' passed to --parent-id", start);
|
||||||
}
|
}
|
||||||
|
else if (strcmp(arg, "--nocore") == 0)
|
||||||
|
{
|
||||||
|
nocore= TRUE;
|
||||||
|
}
|
||||||
else
|
else
|
||||||
die("Unknown option: %s", arg);
|
die("Unknown option: %s", arg);
|
||||||
}
|
}
|
||||||
|
@ -241,6 +253,11 @@ int main(int argc, const char** argv )
|
||||||
&jeli, sizeof(jeli)) == 0)
|
&jeli, sizeof(jeli)) == 0)
|
||||||
message("SetInformationJobObject failed, continue anyway...");
|
message("SetInformationJobObject failed, continue anyway...");
|
||||||
|
|
||||||
|
/* Avoid popup box */
|
||||||
|
if (nocore)
|
||||||
|
SetErrorMode(SEM_FAILCRITICALERRORS | SEM_NOGPFAULTERRORBOX
|
||||||
|
| SEM_NOOPENFILEERRORBOX);
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
/* Setup stdin, stdout and stderr redirect */
|
/* Setup stdin, stdout and stderr redirect */
|
||||||
si.dwFlags= STARTF_USESTDHANDLES;
|
si.dwFlags= STARTF_USESTDHANDLES;
|
||||||
|
|
|
@ -41,6 +41,7 @@ our $opt_with_ndbcluster_only;
|
||||||
our $defaults_file;
|
our $defaults_file;
|
||||||
our $defaults_extra_file;
|
our $defaults_extra_file;
|
||||||
our $reorder= 1;
|
our $reorder= 1;
|
||||||
|
our $quick_collect;
|
||||||
|
|
||||||
sub collect_option {
|
sub collect_option {
|
||||||
my ($opt, $value)= @_;
|
my ($opt, $value)= @_;
|
||||||
|
@ -68,6 +69,9 @@ require "mtr_misc.pl";
|
||||||
my $do_test_reg;
|
my $do_test_reg;
|
||||||
my $skip_test_reg;
|
my $skip_test_reg;
|
||||||
|
|
||||||
|
# If "Quick collect", set to 1 once a test to run has been found.
|
||||||
|
my $some_test_found;
|
||||||
|
|
||||||
sub init_pattern {
|
sub init_pattern {
|
||||||
my ($from, $what)= @_;
|
my ($from, $what)= @_;
|
||||||
return undef unless defined $from;
|
return undef unless defined $from;
|
||||||
|
@ -102,6 +106,7 @@ sub collect_test_cases ($$) {
|
||||||
foreach my $suite (split(",", $suites))
|
foreach my $suite (split(",", $suites))
|
||||||
{
|
{
|
||||||
push(@$cases, collect_one_suite($suite, $opt_cases));
|
push(@$cases, collect_one_suite($suite, $opt_cases));
|
||||||
|
last if $some_test_found;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( @$opt_cases )
|
if ( @$opt_cases )
|
||||||
|
@ -139,7 +144,7 @@ sub collect_test_cases ($$) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( $reorder )
|
if ( $reorder && !$quick_collect)
|
||||||
{
|
{
|
||||||
# Reorder the test cases in an order that will make them faster to run
|
# Reorder the test cases in an order that will make them faster to run
|
||||||
my %sort_criteria;
|
my %sort_criteria;
|
||||||
|
@ -386,7 +391,7 @@ sub collect_one_suite($)
|
||||||
# Read combinations for this suite and build testcases x combinations
|
# Read combinations for this suite and build testcases x combinations
|
||||||
# if any combinations exists
|
# if any combinations exists
|
||||||
# ----------------------------------------------------------------------
|
# ----------------------------------------------------------------------
|
||||||
if ( ! $skip_combinations )
|
if ( ! $skip_combinations && ! $quick_collect )
|
||||||
{
|
{
|
||||||
my @combinations;
|
my @combinations;
|
||||||
my $combination_file= "$suitedir/combinations";
|
my $combination_file= "$suitedir/combinations";
|
||||||
|
@ -584,6 +589,12 @@ sub optimize_cases {
|
||||||
if ( $default_engine =~ /^innodb/i );
|
if ( $default_engine =~ /^innodb/i );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ($quick_collect && ! $tinfo->{'skip'})
|
||||||
|
{
|
||||||
|
$some_test_found= 1;
|
||||||
|
return;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -848,14 +859,14 @@ sub collect_one_test_case {
|
||||||
if ( $tinfo->{'big_test'} and ! $::opt_big_test )
|
if ( $tinfo->{'big_test'} and ! $::opt_big_test )
|
||||||
{
|
{
|
||||||
$tinfo->{'skip'}= 1;
|
$tinfo->{'skip'}= 1;
|
||||||
$tinfo->{'comment'}= "Test need 'big-test' option";
|
$tinfo->{'comment'}= "Test needs 'big-test' option";
|
||||||
return $tinfo
|
return $tinfo
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( $tinfo->{'need_debug'} && ! $::debug_compiled_binaries )
|
if ( $tinfo->{'need_debug'} && ! $::debug_compiled_binaries )
|
||||||
{
|
{
|
||||||
$tinfo->{'skip'}= 1;
|
$tinfo->{'skip'}= 1;
|
||||||
$tinfo->{'comment'}= "Test need debug binaries";
|
$tinfo->{'comment'}= "Test needs debug binaries";
|
||||||
return $tinfo
|
return $tinfo
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -891,14 +902,14 @@ sub collect_one_test_case {
|
||||||
|
|
||||||
if ($tinfo->{'federated_test'})
|
if ($tinfo->{'federated_test'})
|
||||||
{
|
{
|
||||||
# This is a test that need federated, enable it
|
# This is a test that needs federated, enable it
|
||||||
push(@{$tinfo->{'master_opt'}}, "--loose-federated");
|
push(@{$tinfo->{'master_opt'}}, "--loose-federated");
|
||||||
push(@{$tinfo->{'slave_opt'}}, "--loose-federated");
|
push(@{$tinfo->{'slave_opt'}}, "--loose-federated");
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( $tinfo->{'innodb_test'} )
|
if ( $tinfo->{'innodb_test'} )
|
||||||
{
|
{
|
||||||
# This is a test that need innodb
|
# This is a test that needs innodb
|
||||||
if ( $::mysqld_variables{'innodb'} eq "OFF" ||
|
if ( $::mysqld_variables{'innodb'} eq "OFF" ||
|
||||||
! exists $::mysqld_variables{'innodb'} )
|
! exists $::mysqld_variables{'innodb'} )
|
||||||
{
|
{
|
||||||
|
@ -919,7 +930,7 @@ sub collect_one_test_case {
|
||||||
if (grep(/^--skip-log-bin/, @::opt_extra_mysqld_opt) )
|
if (grep(/^--skip-log-bin/, @::opt_extra_mysqld_opt) )
|
||||||
{
|
{
|
||||||
$tinfo->{'skip'}= 1;
|
$tinfo->{'skip'}= 1;
|
||||||
$tinfo->{'comment'}= "Test need binlog";
|
$tinfo->{'comment'}= "Test needs binlog";
|
||||||
return $tinfo;
|
return $tinfo;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -134,8 +134,8 @@ sub mtr_report_test ($) {
|
||||||
# an asterisk at the end, determine if the characters up to
|
# an asterisk at the end, determine if the characters up to
|
||||||
# but excluding the asterisk are the same
|
# but excluding the asterisk are the same
|
||||||
if ( $exp ne "" && substr($exp, -1, 1) eq "*" ) {
|
if ( $exp ne "" && substr($exp, -1, 1) eq "*" ) {
|
||||||
$exp = substr($exp, 0, length($exp) - 1);
|
my $nexp = substr($exp, 0, length($exp) - 1);
|
||||||
if ( substr($test_name, 0, length($exp)) ne $exp ) {
|
if ( substr($test_name, 0, length($nexp)) ne $nexp ) {
|
||||||
# no match, try next entry
|
# no match, try next entry
|
||||||
next;
|
next;
|
||||||
}
|
}
|
||||||
|
|
6
mysql-test/lib/v1/incompatible.tests
Normal file
6
mysql-test/lib/v1/incompatible.tests
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
# This file lists tests that cannot run in MTR v1 for some reason.
|
||||||
|
# They will be skipped.
|
||||||
|
# Any text following white space after full test name is ignored
|
||||||
|
# Only exact test names can be used, no regexp.
|
||||||
|
|
||||||
|
main.fulltext_plugin # Refers to $SIMPLE_PARSER_OPT which is not set
|
|
@ -32,6 +32,7 @@ sub mtr_options_from_test_file($$);
|
||||||
|
|
||||||
my $do_test;
|
my $do_test;
|
||||||
my $skip_test;
|
my $skip_test;
|
||||||
|
my %incompatible;
|
||||||
|
|
||||||
sub init_pattern {
|
sub init_pattern {
|
||||||
my ($from, $what)= @_;
|
my ($from, $what)= @_;
|
||||||
|
@ -47,6 +48,15 @@ sub init_pattern {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
sub collect_incomp_tests {
|
||||||
|
open (INCOMP, "lib/v1/incompatible.tests");
|
||||||
|
while (<INCOMP>)
|
||||||
|
{
|
||||||
|
next unless /^\w/;
|
||||||
|
s/\s.*\n//; # Ignore anything from first white space
|
||||||
|
$incompatible{$_}= 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
##############################################################################
|
##############################################################################
|
||||||
#
|
#
|
||||||
|
@ -58,6 +68,8 @@ sub collect_test_cases ($) {
|
||||||
$do_test= init_pattern($::opt_do_test, "--do-test");
|
$do_test= init_pattern($::opt_do_test, "--do-test");
|
||||||
$skip_test= init_pattern($::opt_skip_test, "--skip-test");
|
$skip_test= init_pattern($::opt_skip_test, "--skip-test");
|
||||||
|
|
||||||
|
collect_incomp_tests();
|
||||||
|
|
||||||
my $suites= shift; # Semicolon separated list of test suites
|
my $suites= shift; # Semicolon separated list of test suites
|
||||||
my $cases = []; # Array of hash
|
my $cases = []; # Array of hash
|
||||||
|
|
||||||
|
@ -528,6 +540,17 @@ sub collect_one_test_case($$$$$$$$$) {
|
||||||
$tinfo->{'component_id'} = $component_id;
|
$tinfo->{'component_id'} = $component_id;
|
||||||
push(@$cases, $tinfo);
|
push(@$cases, $tinfo);
|
||||||
|
|
||||||
|
# Remove "combinations" part of test name
|
||||||
|
my $test_base_name= $tinfo->{'name'};
|
||||||
|
$test_base_name=~ s/\s.*\n//;
|
||||||
|
|
||||||
|
if (exists ($incompatible{$test_base_name}))
|
||||||
|
{
|
||||||
|
$tinfo->{'skip'}= 1;
|
||||||
|
$tinfo->{'comment'}= "Test cannot run in mtr v1";
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
# ----------------------------------------------------------------------
|
# ----------------------------------------------------------------------
|
||||||
# Skip some tests but include in list, just mark them to skip
|
# Skip some tests but include in list, just mark them to skip
|
||||||
# ----------------------------------------------------------------------
|
# ----------------------------------------------------------------------
|
||||||
|
@ -841,7 +864,7 @@ sub collect_one_test_case($$$$$$$$$) {
|
||||||
if ( $tinfo->{'innodb_test'} )
|
if ( $tinfo->{'innodb_test'} )
|
||||||
{
|
{
|
||||||
# This is a test that need innodb
|
# This is a test that need innodb
|
||||||
if ( $::mysqld_variables{'innodb'} ne "TRUE" )
|
if ( $::mysqld_variables{'innodb'} eq "OFF" )
|
||||||
{
|
{
|
||||||
# innodb is not supported, skip it
|
# innodb is not supported, skip it
|
||||||
$tinfo->{'skip'}= 1;
|
$tinfo->{'skip'}= 1;
|
||||||
|
|
|
@ -209,6 +209,7 @@ sub check_timeout { return $opt_testcase_timeout * 6; };
|
||||||
|
|
||||||
my $opt_start;
|
my $opt_start;
|
||||||
my $opt_start_dirty;
|
my $opt_start_dirty;
|
||||||
|
my $start_only;
|
||||||
my $opt_wait_all;
|
my $opt_wait_all;
|
||||||
my $opt_repeat= 1;
|
my $opt_repeat= 1;
|
||||||
my $opt_retry= 3;
|
my $opt_retry= 3;
|
||||||
|
@ -984,6 +985,9 @@ sub command_line_setup {
|
||||||
|
|
||||||
if ( $opt_experimental )
|
if ( $opt_experimental )
|
||||||
{
|
{
|
||||||
|
# $^O on Windows considered not generic enough
|
||||||
|
my $plat= (IS_WINDOWS) ? 'windows' : $^O;
|
||||||
|
|
||||||
# read the list of experimental test cases from the file specified on
|
# read the list of experimental test cases from the file specified on
|
||||||
# the command line
|
# the command line
|
||||||
open(FILE, "<", $opt_experimental) or mtr_error("Can't read experimental file: $opt_experimental");
|
open(FILE, "<", $opt_experimental) or mtr_error("Can't read experimental file: $opt_experimental");
|
||||||
|
@ -994,6 +998,15 @@ sub command_line_setup {
|
||||||
# remove comments (# foo) at the beginning of the line, or after a
|
# remove comments (# foo) at the beginning of the line, or after a
|
||||||
# blank at the end of the line
|
# blank at the end of the line
|
||||||
s/( +|^)#.*$//;
|
s/( +|^)#.*$//;
|
||||||
|
# If @ platform specifier given, use this entry only if it contains
|
||||||
|
# @<platform> or @!<xxx> where xxx != platform
|
||||||
|
if (/\@.*/)
|
||||||
|
{
|
||||||
|
next if (/\@!$plat/);
|
||||||
|
next unless (/\@$plat/ or /\@!/);
|
||||||
|
# Then remove @ and everything after it
|
||||||
|
s/\@.*$//;
|
||||||
|
}
|
||||||
# remove whitespace
|
# remove whitespace
|
||||||
s/^ +//;
|
s/^ +//;
|
||||||
s/ +$//;
|
s/ +$//;
|
||||||
|
@ -1241,13 +1254,28 @@ sub command_line_setup {
|
||||||
{
|
{
|
||||||
mtr_error("Can't use --extern when using debugger");
|
mtr_error("Can't use --extern when using debugger");
|
||||||
}
|
}
|
||||||
|
# Set one week timeout (check-testcase timeout will be 1/10th)
|
||||||
|
$opt_testcase_timeout= 7 * 24 * 60;
|
||||||
|
$opt_suite_timeout= 7 * 24 * 60;
|
||||||
|
# One day to shutdown
|
||||||
|
$opt_shutdown_timeout= 24 * 60;
|
||||||
|
# One day for PID file creation (this is given in seconds not minutes)
|
||||||
|
$opt_start_timeout= 24 * 60 * 60;
|
||||||
|
}
|
||||||
|
|
||||||
|
# --------------------------------------------------------------------------
|
||||||
|
# Modified behavior with --start options
|
||||||
|
# --------------------------------------------------------------------------
|
||||||
|
if ($opt_start or $opt_start_dirty) {
|
||||||
|
collect_option ('quick-collect', 1);
|
||||||
|
$start_only= 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
# --------------------------------------------------------------------------
|
# --------------------------------------------------------------------------
|
||||||
# Check use of wait-all
|
# Check use of wait-all
|
||||||
# --------------------------------------------------------------------------
|
# --------------------------------------------------------------------------
|
||||||
|
|
||||||
if ($opt_wait_all && ! ($opt_start_dirty || $opt_start))
|
if ($opt_wait_all && ! $start_only)
|
||||||
{
|
{
|
||||||
mtr_error("--wait-all can only be used with --start or --start-dirty");
|
mtr_error("--wait-all can only be used with --start or --start-dirty");
|
||||||
}
|
}
|
||||||
|
@ -1506,6 +1534,10 @@ sub collect_mysqld_features_from_running_server ()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# "Convert" innodb flag
|
||||||
|
$mysqld_variables{'innodb'}= "ON"
|
||||||
|
if ($mysqld_variables{'have_innodb'} eq "YES");
|
||||||
|
|
||||||
# Parse version
|
# Parse version
|
||||||
my $version_str= $mysqld_variables{'version'};
|
my $version_str= $mysqld_variables{'version'};
|
||||||
if ( $version_str =~ /^([0-9]*)\.([0-9]*)\.([0-9]*)/ )
|
if ( $version_str =~ /^([0-9]*)\.([0-9]*)\.([0-9]*)/ )
|
||||||
|
@ -1772,7 +1804,8 @@ sub environment_setup {
|
||||||
}
|
}
|
||||||
my $lib_example_plugin=
|
my $lib_example_plugin=
|
||||||
mtr_file_exists(vs_config_dirs('storage/example',$plugin_filename),
|
mtr_file_exists(vs_config_dirs('storage/example',$plugin_filename),
|
||||||
"$basedir/storage/example/.libs/".$plugin_filename);
|
"$basedir/storage/example/.libs/".$plugin_filename,
|
||||||
|
"$basedir/lib/mysql/plugin/".$plugin_filename);
|
||||||
$ENV{'EXAMPLE_PLUGIN'}=
|
$ENV{'EXAMPLE_PLUGIN'}=
|
||||||
($lib_example_plugin ? basename($lib_example_plugin) : "");
|
($lib_example_plugin ? basename($lib_example_plugin) : "");
|
||||||
$ENV{'EXAMPLE_PLUGIN_OPT'}= "--plugin-dir=".
|
$ENV{'EXAMPLE_PLUGIN_OPT'}= "--plugin-dir=".
|
||||||
|
@ -2819,7 +2852,7 @@ sub run_testcase_check_skip_test($)
|
||||||
|
|
||||||
if ( $tinfo->{'skip'} )
|
if ( $tinfo->{'skip'} )
|
||||||
{
|
{
|
||||||
mtr_report_test_skipped($tinfo);
|
mtr_report_test_skipped($tinfo) unless $start_only;
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3306,9 +3339,16 @@ sub run_testcase ($) {
|
||||||
# server exits
|
# server exits
|
||||||
# ----------------------------------------------------------------------
|
# ----------------------------------------------------------------------
|
||||||
|
|
||||||
if ( $opt_start or $opt_start_dirty )
|
if ( $start_only )
|
||||||
{
|
{
|
||||||
mtr_print("\nStarted", started(all_servers()));
|
mtr_print("\nStarted", started(all_servers()));
|
||||||
|
mtr_print("Using config for test", $tinfo->{name});
|
||||||
|
mtr_print("Port and socket path for server(s):");
|
||||||
|
foreach my $mysqld ( mysqlds() )
|
||||||
|
{
|
||||||
|
mtr_print ($mysqld->name() . " " . $mysqld->value('port') .
|
||||||
|
" " . $mysqld->value('socket'));
|
||||||
|
}
|
||||||
mtr_print("Waiting for server(s) to exit...");
|
mtr_print("Waiting for server(s) to exit...");
|
||||||
if ( $opt_wait_all ) {
|
if ( $opt_wait_all ) {
|
||||||
My::SafeProcess->wait_all();
|
My::SafeProcess->wait_all();
|
||||||
|
@ -3550,8 +3590,8 @@ sub run_testcase ($) {
|
||||||
# error log and write all lines that look
|
# error log and write all lines that look
|
||||||
# suspicious into $error_log.warnings
|
# suspicious into $error_log.warnings
|
||||||
#
|
#
|
||||||
sub extract_warning_lines ($) {
|
sub extract_warning_lines ($$) {
|
||||||
my ($error_log) = @_;
|
my ($error_log, $tname) = @_;
|
||||||
|
|
||||||
# Open the servers .err log file and read all lines
|
# Open the servers .err log file and read all lines
|
||||||
# belonging to current tets into @lines
|
# belonging to current tets into @lines
|
||||||
|
@ -3559,15 +3599,28 @@ sub extract_warning_lines ($) {
|
||||||
or mtr_error("Could not open file '$error_log' for reading: $!");
|
or mtr_error("Could not open file '$error_log' for reading: $!");
|
||||||
|
|
||||||
my @lines;
|
my @lines;
|
||||||
|
my $found_test= 0; # Set once we've found the log of this test
|
||||||
while ( my $line = <$Ferr> )
|
while ( my $line = <$Ferr> )
|
||||||
{
|
{
|
||||||
|
if ($found_test)
|
||||||
|
{
|
||||||
|
# If test wasn't last after all, discard what we found, test again.
|
||||||
if ( $line =~ /^CURRENT_TEST:/)
|
if ( $line =~ /^CURRENT_TEST:/)
|
||||||
{
|
{
|
||||||
# Throw away lines from previous tests
|
|
||||||
@lines= ();
|
@lines= ();
|
||||||
|
$found_test= $line =~ /^CURRENT_TEST: $tname/;
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
push(@lines, $line);
|
push(@lines, $line);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
# Search for beginning of test, until found
|
||||||
|
$found_test= 1 if ($line =~ /^CURRENT_TEST: $tname/);
|
||||||
|
}
|
||||||
|
}
|
||||||
$Ferr = undef; # Close error log file
|
$Ferr = undef; # Close error log file
|
||||||
|
|
||||||
# mysql_client_test.test sends a COM_DEBUG packet to the server
|
# mysql_client_test.test sends a COM_DEBUG packet to the server
|
||||||
|
@ -3603,10 +3656,8 @@ sub extract_warning_lines ($) {
|
||||||
# and correcting them shows a few additional harmless warnings.
|
# and correcting them shows a few additional harmless warnings.
|
||||||
# Thus those patterns are temporarily removed from the list
|
# Thus those patterns are temporarily removed from the list
|
||||||
# of patterns. For more info see BUG#42408
|
# of patterns. For more info see BUG#42408
|
||||||
# qr/^Warning:|mysqld: Warning|\[Warning\]/,
|
qr/^Warning:|mysqld: Warning|\[Warning\]/,
|
||||||
# qr/^Error:|\[ERROR\]/,
|
qr/^Error:|\[ERROR\]/,
|
||||||
qr/^Warning:|mysqld: Warning/,
|
|
||||||
qr/^Error:/,
|
|
||||||
qr/^==.* at 0x/,
|
qr/^==.* at 0x/,
|
||||||
qr/InnoDB: Warning|InnoDB: Error/,
|
qr/InnoDB: Warning|InnoDB: Error/,
|
||||||
qr/^safe_mutex:|allocated at line/,
|
qr/^safe_mutex:|allocated at line/,
|
||||||
|
@ -3646,7 +3697,7 @@ sub start_check_warnings ($$) {
|
||||||
my $log_error= $mysqld->value('#log-error');
|
my $log_error= $mysqld->value('#log-error');
|
||||||
# To be communicated to the test
|
# To be communicated to the test
|
||||||
$ENV{MTR_LOG_ERROR}= $log_error;
|
$ENV{MTR_LOG_ERROR}= $log_error;
|
||||||
extract_warning_lines($log_error);
|
extract_warning_lines($log_error, $tinfo->{name});
|
||||||
|
|
||||||
my $args;
|
my $args;
|
||||||
mtr_init_args(\$args);
|
mtr_init_args(\$args);
|
||||||
|
@ -4086,8 +4137,8 @@ sub mysqld_arguments ($$$) {
|
||||||
|
|
||||||
if ( $mysql_version_id >= 50106 )
|
if ( $mysql_version_id >= 50106 )
|
||||||
{
|
{
|
||||||
# Turn on logging to both tables and file
|
# Turn on logging to file
|
||||||
mtr_add_arg($args, "--log-output=table,file");
|
mtr_add_arg($args, "--log-output=file");
|
||||||
}
|
}
|
||||||
|
|
||||||
# Check if "extra_opt" contains skip-log-bin
|
# Check if "extra_opt" contains skip-log-bin
|
||||||
|
@ -5131,7 +5182,7 @@ Options to control what test suites or cases to run
|
||||||
skip-rpl Skip the replication test cases.
|
skip-rpl Skip the replication test cases.
|
||||||
big-test Also run tests marked as "big"
|
big-test Also run tests marked as "big"
|
||||||
enable-disabled Run also tests marked as disabled
|
enable-disabled Run also tests marked as disabled
|
||||||
print_testcases Don't run the tests but print details about all the
|
print-testcases Don't run the tests but print details about all the
|
||||||
selected tests, in the order they would be run.
|
selected tests, in the order they would be run.
|
||||||
|
|
||||||
Options that specify ports
|
Options that specify ports
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
call mtr.add_suppression("The table 't1' is full");
|
||||||
drop table if exists t1;
|
drop table if exists t1;
|
||||||
set global myisam_data_pointer_size=2;
|
set global myisam_data_pointer_size=2;
|
||||||
CREATE TABLE t1 (a int auto_increment primary key not null, b longtext) ENGINE=MyISAM;
|
CREATE TABLE t1 (a int auto_increment primary key not null, b longtext) ENGINE=MyISAM;
|
||||||
|
|
|
@ -2,6 +2,8 @@
|
||||||
# Bug #46080: group_concat(... order by) crashes server when
|
# Bug #46080: group_concat(... order by) crashes server when
|
||||||
# sort_buffer_size cannot allocate
|
# sort_buffer_size cannot allocate
|
||||||
#
|
#
|
||||||
|
call mtr.add_suppression("Out of memory at line .*, 'my_alloc.c'");
|
||||||
|
call mtr.add_suppression("needed .* byte .*k., memory in use: .* bytes .*k");
|
||||||
CREATE TABLE t1(a CHAR(255));
|
CREATE TABLE t1(a CHAR(255));
|
||||||
INSERT INTO t1 VALUES ('a');
|
INSERT INTO t1 VALUES ('a');
|
||||||
SET @@SESSION.sort_buffer_size=5*16*1000000;
|
SET @@SESSION.sort_buffer_size=5*16*1000000;
|
||||||
|
|
|
@ -841,6 +841,7 @@ SET max_heap_table_size = 16384;
|
||||||
SET @old_myisam_data_pointer_size = @@myisam_data_pointer_size;
|
SET @old_myisam_data_pointer_size = @@myisam_data_pointer_size;
|
||||||
SET GLOBAL myisam_data_pointer_size = 2;
|
SET GLOBAL myisam_data_pointer_size = 2;
|
||||||
INSERT INTO t1 VALUES (1), (2), (3), (4), (5);
|
INSERT INTO t1 VALUES (1), (2), (3), (4), (5);
|
||||||
|
call mtr.add_suppression("mysqld: The table '.*#sql.*' is full");
|
||||||
INSERT IGNORE INTO t1 SELECT t1.a FROM t1,t1 t2,t1 t3,t1 t4,t1 t5,t1 t6,t1 t7;
|
INSERT IGNORE INTO t1 SELECT t1.a FROM t1,t1 t2,t1 t3,t1 t4,t1 t5,t1 t6,t1 t7;
|
||||||
Got one of the listed errors
|
Got one of the listed errors
|
||||||
SET GLOBAL myisam_data_pointer_size = @old_myisam_data_pointer_size;
|
SET GLOBAL myisam_data_pointer_size = @old_myisam_data_pointer_size;
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
call mtr.add_suppression("Cannot find or open table test/BUG29839 from .*");
|
call mtr.add_suppression("Cannot find or open table test/BUG29839 from");
|
||||||
DROP TABLE IF EXISTS t1,T1;
|
DROP TABLE IF EXISTS t1,T1;
|
||||||
CREATE TABLE t1 (a INT);
|
CREATE TABLE t1 (a INT);
|
||||||
SELECT * FROM T1;
|
SELECT * FROM T1;
|
||||||
|
|
|
@ -314,21 +314,10 @@ here is the sourced script
|
||||||
1 = outer loop variable before dec
|
1 = outer loop variable before dec
|
||||||
|
|
||||||
0 = outer loop variable after dec
|
0 = outer loop variable after dec
|
||||||
|
outer=2 ifval=0
|
||||||
2 = outer loop variable after while
|
outer=1 ifval=1
|
||||||
here is the sourced script
|
here is the sourced script
|
||||||
|
|
||||||
2 = outer loop variable before dec
|
|
||||||
|
|
||||||
1 = outer loop variable after dec
|
|
||||||
|
|
||||||
1 = outer loop variable after while
|
|
||||||
here is the sourced script
|
|
||||||
|
|
||||||
1 = outer loop variable before dec
|
|
||||||
|
|
||||||
0 = outer loop variable after dec
|
|
||||||
|
|
||||||
In loop
|
In loop
|
||||||
here is the sourced script
|
here is the sourced script
|
||||||
|
|
||||||
|
@ -538,6 +527,10 @@ mysqltest: At line 1: Missing required argument 'filename' to command 'write_fil
|
||||||
mysqltest: At line 1: End of file encountered before 'EOF' delimiter was found
|
mysqltest: At line 1: End of file encountered before 'EOF' delimiter was found
|
||||||
Content for test_file1
|
Content for test_file1
|
||||||
mysqltest: At line 1: File already exist: 'MYSQLTEST_VARDIR/tmp/test_file1.tmp'
|
mysqltest: At line 1: File already exist: 'MYSQLTEST_VARDIR/tmp/test_file1.tmp'
|
||||||
|
These lines should be repeated,
|
||||||
|
if things work as expected
|
||||||
|
These lines should be repeated,
|
||||||
|
if things work as expected
|
||||||
Some data
|
Some data
|
||||||
for cat_file command
|
for cat_file command
|
||||||
of mysqltest
|
of mysqltest
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
call mtr.add_suppression("Failed to write to mysql.general_log");
|
||||||
drop table if exists t1;
|
drop table if exists t1;
|
||||||
create table t1 (a int)
|
create table t1 (a int)
|
||||||
engine = csv
|
engine = csv
|
||||||
|
|
|
@ -108,11 +108,7 @@ a-b-c
|
||||||
show create view `a-b-c`.v1;
|
show create view `a-b-c`.v1;
|
||||||
View Create View character_set_client collation_connection
|
View Create View character_set_client collation_connection
|
||||||
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select `a`.`f1` AS `f1` from (`a-b-c`.`t1` `a` join `information_schema`.`tables` `b`) where (convert(`a`.`f1` using utf8) = `b`.`TABLE_NAME`) utf8 utf8_general_ci
|
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select `a`.`f1` AS `f1` from (`a-b-c`.`t1` `a` join `information_schema`.`tables` `b`) where (convert(`a`.`f1` using utf8) = `b`.`TABLE_NAME`) utf8 utf8_general_ci
|
||||||
Warnings:
|
|
||||||
Note 1600 Creation context of view `a-b-c`.`v1' is invalid
|
|
||||||
select * from `a-b-c`.v1;
|
select * from `a-b-c`.v1;
|
||||||
f1
|
f1
|
||||||
Warnings:
|
|
||||||
Note 1600 Creation context of view `a-b-c`.`v1' is invalid
|
|
||||||
drop database `a-b-c`;
|
drop database `a-b-c`;
|
||||||
use test;
|
use test;
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
call mtr.add_suppression("InnoDB: invalid innodb_file_format_check value");
|
||||||
select @@innodb_file_format;
|
select @@innodb_file_format;
|
||||||
@@innodb_file_format
|
@@innodb_file_format
|
||||||
Antelope
|
Antelope
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
-- source include/have_innodb.inc
|
-- source include/have_innodb.inc
|
||||||
|
|
||||||
|
call mtr.add_suppression("InnoDB: invalid innodb_file_format_check value");
|
||||||
|
|
||||||
let $format=`select @@innodb_file_format`;
|
let $format=`select @@innodb_file_format`;
|
||||||
let $innodb_file_format_check_orig=`select @@innodb_file_format_check`;
|
let $innodb_file_format_check_orig=`select @@innodb_file_format_check`;
|
||||||
|
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
call mtr.add_suppression("./test/t1_will_crash");
|
||||||
|
call mtr.add_suppression("Got an error from unknown thread, ha_myisam.cc");
|
||||||
CREATE TABLE t1_will_crash (a INT, KEY (a)) ENGINE=MyISAM;
|
CREATE TABLE t1_will_crash (a INT, KEY (a)) ENGINE=MyISAM;
|
||||||
INSERT INTO t1_will_crash VALUES (1), (2), (3), (4), (5), (6), (7), (8), (9), (10), (11);
|
INSERT INTO t1_will_crash VALUES (1), (2), (3), (4), (5), (6), (7), (8), (9), (10), (11);
|
||||||
FLUSH TABLES;
|
FLUSH TABLES;
|
||||||
|
|
|
@ -1,4 +1,8 @@
|
||||||
# test the auto-recover (--myisam-recover) of partitioned myisam tables
|
# test the auto-recover (--myisam-recover) of partitioned myisam tables
|
||||||
|
|
||||||
|
call mtr.add_suppression("./test/t1_will_crash");
|
||||||
|
call mtr.add_suppression("Got an error from unknown thread, ha_myisam.cc");
|
||||||
|
|
||||||
--source include/have_partition.inc
|
--source include/have_partition.inc
|
||||||
--disable_warnings
|
--disable_warnings
|
||||||
--disable_query_log
|
--disable_query_log
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
reset master;
|
reset master;
|
||||||
call mtr.add_suppression("Failed during slave thread initialization");
|
call mtr.add_suppression("Failed during slave I/O thread initialization");
|
||||||
stop slave;
|
stop slave;
|
||||||
reset slave;
|
reset slave;
|
||||||
SET GLOBAL debug="d,simulate_io_slave_error_on_init,simulate_sql_slave_error_on_init";
|
SET GLOBAL debug="d,simulate_io_slave_error_on_init,simulate_sql_slave_error_on_init";
|
||||||
|
|
|
@ -166,4 +166,7 @@ DROP FUNCTION upgrade_del_func;
|
||||||
DROP FUNCTION upgrade_alter_func;
|
DROP FUNCTION upgrade_alter_func;
|
||||||
DROP DATABASE bug42217_db;
|
DROP DATABASE bug42217_db;
|
||||||
DROP USER 'create_rout_db'@'localhost';
|
DROP USER 'create_rout_db'@'localhost';
|
||||||
|
call mtr.add_suppression("Slave: Operation DROP USER failed for 'create_rout_db'@'localhost' Error_code: 1396");
|
||||||
|
USE mtr;
|
||||||
|
call mtr.add_suppression("Slave: Operation DROP USER failed for 'create_rout_db'@'localhost' Error_code: 1396");
|
||||||
"End of test"
|
"End of test"
|
||||||
|
|
|
@ -4,6 +4,7 @@ reset master;
|
||||||
reset slave;
|
reset slave;
|
||||||
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
||||||
start slave;
|
start slave;
|
||||||
|
call mtr.add_suppression("Slave: Unknown table 't6' Error_code: 1051");
|
||||||
**** Diff Table Def Start ****
|
**** Diff Table Def Start ****
|
||||||
*** On Slave ***
|
*** On Slave ***
|
||||||
STOP SLAVE;
|
STOP SLAVE;
|
||||||
|
|
|
@ -4,6 +4,7 @@ reset master;
|
||||||
reset slave;
|
reset slave;
|
||||||
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
||||||
start slave;
|
start slave;
|
||||||
|
call mtr.add_suppression("Slave: Unknown table 't6' Error_code: 1051");
|
||||||
**** Diff Table Def Start ****
|
**** Diff Table Def Start ****
|
||||||
*** On Slave ***
|
*** On Slave ***
|
||||||
STOP SLAVE;
|
STOP SLAVE;
|
||||||
|
|
|
@ -4,6 +4,8 @@ reset master;
|
||||||
reset slave;
|
reset slave;
|
||||||
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
||||||
start slave;
|
start slave;
|
||||||
|
call mtr.add_suppression("Slave I/O: .* failed with error: Lost connection to MySQL server at 'reading initial communication packet'");
|
||||||
|
call mtr.add_suppression("Slave I/O: Master command COM_REGISTER_SLAVE failed: failed registering on master, reconnecting to try again");
|
||||||
SELECT IS_FREE_LOCK("debug_lock.before_get_UNIX_TIMESTAMP");
|
SELECT IS_FREE_LOCK("debug_lock.before_get_UNIX_TIMESTAMP");
|
||||||
IS_FREE_LOCK("debug_lock.before_get_UNIX_TIMESTAMP")
|
IS_FREE_LOCK("debug_lock.before_get_UNIX_TIMESTAMP")
|
||||||
1
|
1
|
||||||
|
|
|
@ -4,7 +4,8 @@ reset master;
|
||||||
reset slave;
|
reset slave;
|
||||||
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
||||||
start slave;
|
start slave;
|
||||||
call mtr.add_suppression("Slave: Can\'t find record in \'t1\' Error_code: 1032");
|
call mtr.add_suppression("Slave: Can't find record in 't.' Error_code: 1032");
|
||||||
|
call mtr.add_suppression("Slave: Cannot delete or update a parent row: a foreign key constraint fails .* Error_code: 1451");
|
||||||
call mtr.add_suppression("Slave: Cannot add or update a child row: a foreign key constraint fails .* Error_code: 1452");
|
call mtr.add_suppression("Slave: Cannot add or update a child row: a foreign key constraint fails .* Error_code: 1452");
|
||||||
SET @old_slave_exec_mode= @@global.slave_exec_mode;
|
SET @old_slave_exec_mode= @@global.slave_exec_mode;
|
||||||
CREATE TABLE t1 (a INT PRIMARY KEY);
|
CREATE TABLE t1 (a INT PRIMARY KEY);
|
||||||
|
|
|
@ -9,6 +9,7 @@ reset slave;
|
||||||
SET GLOBAL debug= "d,simulate_io_slave_error_on_init,simulate_sql_slave_error_on_init";
|
SET GLOBAL debug= "d,simulate_io_slave_error_on_init,simulate_sql_slave_error_on_init";
|
||||||
start slave;
|
start slave;
|
||||||
Reporting the following error: Failed during slave thread initialization
|
Reporting the following error: Failed during slave thread initialization
|
||||||
|
call mtr.add_suppression("Failed during slave I/O thread initialization");
|
||||||
SET GLOBAL debug= "";
|
SET GLOBAL debug= "";
|
||||||
stop slave;
|
stop slave;
|
||||||
reset slave;
|
reset slave;
|
||||||
|
|
|
@ -51,3 +51,4 @@ Last_SQL_Errno 9
|
||||||
Last_SQL_Error Error in Begin_load_query event: write to '../../tmp/SQL_LOAD.data' failed
|
Last_SQL_Error Error in Begin_load_query event: write to '../../tmp/SQL_LOAD.data' failed
|
||||||
drop table t1;
|
drop table t1;
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
call mtr.add_suppression("Slave: Error writing file 'UNKNOWN' .Errcode: 9. Error_code: 3");
|
||||||
|
|
|
@ -11,5 +11,3 @@
|
||||||
##############################################################################
|
##############################################################################
|
||||||
|
|
||||||
rpl_cross_version : Bug#42311 2009-03-27 joro rpl_cross_version fails on macosx
|
rpl_cross_version : Bug#42311 2009-03-27 joro rpl_cross_version fails on macosx
|
||||||
rpl_init_slave : Bug#44920 2009-07006 pcrews MTR2 is not processing master.opt input properly on Windows. *Must be done this way due to the nature of the bug*
|
|
||||||
|
|
||||||
|
|
|
@ -15,7 +15,7 @@ reset master;
|
||||||
connection slave;
|
connection slave;
|
||||||
|
|
||||||
# Add suppression for expected warnings in slaves error log
|
# Add suppression for expected warnings in slaves error log
|
||||||
call mtr.add_suppression("Failed during slave thread initialization");
|
call mtr.add_suppression("Failed during slave I/O thread initialization");
|
||||||
|
|
||||||
--disable_warnings
|
--disable_warnings
|
||||||
stop slave;
|
stop slave;
|
||||||
|
|
|
@ -211,4 +211,9 @@ DROP FUNCTION upgrade_alter_func;
|
||||||
DROP DATABASE bug42217_db;
|
DROP DATABASE bug42217_db;
|
||||||
DROP USER 'create_rout_db'@'localhost';
|
DROP USER 'create_rout_db'@'localhost';
|
||||||
|
|
||||||
|
call mtr.add_suppression("Slave: Operation DROP USER failed for 'create_rout_db'@'localhost' Error_code: 1396");
|
||||||
|
connection slave;
|
||||||
|
USE mtr;
|
||||||
|
call mtr.add_suppression("Slave: Operation DROP USER failed for 'create_rout_db'@'localhost' Error_code: 1396");
|
||||||
|
|
||||||
--echo "End of test"
|
--echo "End of test"
|
||||||
|
|
|
@ -16,6 +16,10 @@
|
||||||
|
|
||||||
source include/master-slave.inc;
|
source include/master-slave.inc;
|
||||||
source include/have_debug.inc;
|
source include/have_debug.inc;
|
||||||
|
|
||||||
|
call mtr.add_suppression("Slave I/O: .* failed with error: Lost connection to MySQL server at 'reading initial communication packet'");
|
||||||
|
call mtr.add_suppression("Slave I/O: Master command COM_REGISTER_SLAVE failed: failed registering on master, reconnecting to try again");
|
||||||
|
|
||||||
#Test case 1: Try to get the value of the UNIX_TIMESTAMP from master under network disconnection
|
#Test case 1: Try to get the value of the UNIX_TIMESTAMP from master under network disconnection
|
||||||
connection slave;
|
connection slave;
|
||||||
let $debug_saved= `select @@global.debug`;
|
let $debug_saved= `select @@global.debug`;
|
||||||
|
|
|
@ -8,7 +8,8 @@ connection slave;
|
||||||
source include/have_innodb.inc;
|
source include/have_innodb.inc;
|
||||||
|
|
||||||
# Add suppression for expected warning(s) in slaves error log
|
# Add suppression for expected warning(s) in slaves error log
|
||||||
call mtr.add_suppression("Slave: Can\'t find record in \'t1\' Error_code: 1032");
|
call mtr.add_suppression("Slave: Can't find record in 't.' Error_code: 1032");
|
||||||
|
call mtr.add_suppression("Slave: Cannot delete or update a parent row: a foreign key constraint fails .* Error_code: 1451");
|
||||||
call mtr.add_suppression("Slave: Cannot add or update a child row: a foreign key constraint fails .* Error_code: 1452");
|
call mtr.add_suppression("Slave: Cannot add or update a child row: a foreign key constraint fails .* Error_code: 1452");
|
||||||
|
|
||||||
SET @old_slave_exec_mode= @@global.slave_exec_mode;
|
SET @old_slave_exec_mode= @@global.slave_exec_mode;
|
||||||
|
|
|
@ -57,6 +57,7 @@ source include/wait_for_slave_to_stop.inc;
|
||||||
|
|
||||||
let $error= query_get_value(SHOW SLAVE STATUS, Last_Error, 1);
|
let $error= query_get_value(SHOW SLAVE STATUS, Last_Error, 1);
|
||||||
echo Reporting the following error: $error;
|
echo Reporting the following error: $error;
|
||||||
|
call mtr.add_suppression("Failed during slave I/O thread initialization");
|
||||||
|
|
||||||
SET GLOBAL debug= "";
|
SET GLOBAL debug= "";
|
||||||
|
|
||||||
|
|
|
@ -7,6 +7,7 @@
|
||||||
# 1 - Creates a table and populates it through "LOAD DATA INFILE".
|
# 1 - Creates a table and populates it through "LOAD DATA INFILE".
|
||||||
# 2 - Catches error.
|
# 2 - Catches error.
|
||||||
##########################################################################
|
##########################################################################
|
||||||
|
|
||||||
--source include/have_binlog_format_mixed_or_statement.inc
|
--source include/have_binlog_format_mixed_or_statement.inc
|
||||||
--source include/have_innodb.inc
|
--source include/have_innodb.inc
|
||||||
--source include/have_debug.inc
|
--source include/have_debug.inc
|
||||||
|
@ -47,3 +48,5 @@ drop table t1;
|
||||||
connection slave;
|
connection slave;
|
||||||
|
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
|
||||||
|
call mtr.add_suppression("Slave: Error writing file 'UNKNOWN' .Errcode: 9. Error_code: 3");
|
||||||
|
|
|
@ -4,6 +4,7 @@ reset master;
|
||||||
reset slave;
|
reset slave;
|
||||||
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
||||||
start slave;
|
start slave;
|
||||||
|
call mtr.add_suppression("Slave: Unknown table 't6' Error_code: 1051");
|
||||||
**** Diff Table Def Start ****
|
**** Diff Table Def Start ****
|
||||||
*** On Slave ***
|
*** On Slave ***
|
||||||
STOP SLAVE;
|
STOP SLAVE;
|
||||||
|
|
|
@ -2,6 +2,8 @@
|
||||||
# Some special cases with empty tables
|
# Some special cases with empty tables
|
||||||
#
|
#
|
||||||
|
|
||||||
|
call mtr.add_suppression("The table 't1' is full");
|
||||||
|
|
||||||
--disable_warnings
|
--disable_warnings
|
||||||
drop table if exists t1;
|
drop table if exists t1;
|
||||||
--enable_warnings
|
--enable_warnings
|
||||||
|
|
|
@ -3,6 +3,9 @@
|
||||||
--echo # sort_buffer_size cannot allocate
|
--echo # sort_buffer_size cannot allocate
|
||||||
--echo #
|
--echo #
|
||||||
|
|
||||||
|
call mtr.add_suppression("Out of memory at line .*, 'my_alloc.c'");
|
||||||
|
call mtr.add_suppression("needed .* byte .*k., memory in use: .* bytes .*k");
|
||||||
|
|
||||||
CREATE TABLE t1(a CHAR(255));
|
CREATE TABLE t1(a CHAR(255));
|
||||||
INSERT INTO t1 VALUES ('a');
|
INSERT INTO t1 VALUES ('a');
|
||||||
|
|
||||||
|
|
|
@ -12,5 +12,3 @@
|
||||||
kill : Bug#37780 2008-12-03 HHunger need some changes to be robust enough for pushbuild.
|
kill : Bug#37780 2008-12-03 HHunger need some changes to be robust enough for pushbuild.
|
||||||
innodb_bug39438 : Bug#42383 2009-01-28 lsoares "This fails in embedded and on windows. Note that this test is not run on windows and on embedded in PB for main trees currently"
|
innodb_bug39438 : Bug#42383 2009-01-28 lsoares "This fails in embedded and on windows. Note that this test is not run on windows and on embedded in PB for main trees currently"
|
||||||
query_cache_28249 : Bug#43861 2009-03-25 main.query_cache_28249 fails sporadically
|
query_cache_28249 : Bug#43861 2009-03-25 main.query_cache_28249 fails sporadically
|
||||||
init_connect : Bug#44920 2009-07-06 pcrews MTR not processing master.opt input properly on Windows. *Must be done this way due to the nature of the bug*
|
|
||||||
|
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
--log-slow-queries
|
--log-output=table,file --log-slow-queries
|
||||||
|
|
|
@ -407,6 +407,7 @@ SET GLOBAL myisam_data_pointer_size = 2;
|
||||||
|
|
||||||
INSERT INTO t1 VALUES (1), (2), (3), (4), (5);
|
INSERT INTO t1 VALUES (1), (2), (3), (4), (5);
|
||||||
|
|
||||||
|
call mtr.add_suppression("mysqld: The table '.*#sql.*' is full");
|
||||||
--error ER_RECORD_FILE_FULL,ER_RECORD_FILE_FULL
|
--error ER_RECORD_FILE_FULL,ER_RECORD_FILE_FULL
|
||||||
INSERT IGNORE INTO t1 SELECT t1.a FROM t1,t1 t2,t1 t3,t1 t4,t1 t5,t1 t6,t1 t7;
|
INSERT IGNORE INTO t1 SELECT t1.a FROM t1,t1 t2,t1 t3,t1 t4,t1 t5,t1 t6,t1 t7;
|
||||||
|
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
--log-slow-queries
|
--log-output=table,file --log-slow-queries
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
--source include/have_case_insensitive_file_system.inc
|
--source include/have_case_insensitive_file_system.inc
|
||||||
--source include/not_windows.inc
|
--source include/not_windows.inc
|
||||||
|
|
||||||
call mtr.add_suppression("Cannot find or open table test/BUG29839 from .*");
|
call mtr.add_suppression("Cannot find or open table test/BUG29839 from");
|
||||||
|
|
||||||
--disable_warnings
|
--disable_warnings
|
||||||
DROP TABLE IF EXISTS t1,T1;
|
DROP TABLE IF EXISTS t1,T1;
|
||||||
|
|
|
@ -853,16 +853,18 @@ while ($outer)
|
||||||
eval SELECT '$outer = outer loop variable after dec' AS "";
|
eval SELECT '$outer = outer loop variable after dec' AS "";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Test source in an if in a while which is false on 1st iteration
|
||||||
let $outer= 2; # Number of outer loops
|
let $outer= 2; # Number of outer loops
|
||||||
|
let $ifval= 0; # false 1st time
|
||||||
while ($outer)
|
while ($outer)
|
||||||
{
|
{
|
||||||
eval SELECT '$outer = outer loop variable after while' AS "";
|
echo outer=$outer ifval=$ifval;
|
||||||
|
|
||||||
echo here is the sourced script;
|
if ($ifval) {
|
||||||
|
--source $MYSQLTEST_VARDIR/tmp/sourced.inc
|
||||||
eval SELECT '$outer = outer loop variable before dec' AS "";
|
}
|
||||||
dec $outer;
|
dec $outer;
|
||||||
eval SELECT '$outer = outer loop variable after dec' AS "";
|
inc $ifval;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -1663,6 +1665,20 @@ EOF
|
||||||
|
|
||||||
remove_file $MYSQLTEST_VARDIR/tmp/test_file1.tmp;
|
remove_file $MYSQLTEST_VARDIR/tmp/test_file1.tmp;
|
||||||
|
|
||||||
|
# Test append_file within while
|
||||||
|
let $outer= 2; # Number of outer loops
|
||||||
|
while ($outer)
|
||||||
|
{
|
||||||
|
append_file $MYSQLTEST_VARDIR/tmp/app_while.tmp;
|
||||||
|
These lines should be repeated,
|
||||||
|
if things work as expected
|
||||||
|
EOF
|
||||||
|
dec $outer;
|
||||||
|
}
|
||||||
|
|
||||||
|
cat_file $MYSQLTEST_VARDIR/tmp/app_while.tmp;
|
||||||
|
remove_file $MYSQLTEST_VARDIR/tmp/app_while.tmp;
|
||||||
|
|
||||||
# ----------------------------------------------------------------------------
|
# ----------------------------------------------------------------------------
|
||||||
# test for cat_file
|
# test for cat_file
|
||||||
# ----------------------------------------------------------------------------
|
# ----------------------------------------------------------------------------
|
||||||
|
@ -1710,10 +1726,6 @@ EOF
|
||||||
--diff_files $MYSQLTEST_VARDIR/tmp/diff1.tmp $MYSQLTEST_VARDIR/tmp/diff2.tmp
|
--diff_files $MYSQLTEST_VARDIR/tmp/diff1.tmp $MYSQLTEST_VARDIR/tmp/diff2.tmp
|
||||||
--diff_files $MYSQLTEST_VARDIR/tmp/diff2.tmp $MYSQLTEST_VARDIR/tmp/diff1.tmp
|
--diff_files $MYSQLTEST_VARDIR/tmp/diff2.tmp $MYSQLTEST_VARDIR/tmp/diff1.tmp
|
||||||
|
|
||||||
# Write the below commands to a intermediary file and execute them with
|
|
||||||
# mysqltest in --exec, since the output will vary depending on what "diff"
|
|
||||||
# is available it is sent to /dev/null
|
|
||||||
--write_file $MYSQLTEST_VARDIR/tmp/diff.test
|
|
||||||
# Compare files that differ in size
|
# Compare files that differ in size
|
||||||
--error 2
|
--error 2
|
||||||
--diff_files $MYSQLTEST_VARDIR/tmp/diff1.tmp $MYSQLTEST_VARDIR/tmp/diff3.tmp
|
--diff_files $MYSQLTEST_VARDIR/tmp/diff1.tmp $MYSQLTEST_VARDIR/tmp/diff3.tmp
|
||||||
|
@ -1725,13 +1737,6 @@ EOF
|
||||||
--diff_files $MYSQLTEST_VARDIR/tmp/diff1.tmp $MYSQLTEST_VARDIR/tmp/diff4.tmp
|
--diff_files $MYSQLTEST_VARDIR/tmp/diff1.tmp $MYSQLTEST_VARDIR/tmp/diff4.tmp
|
||||||
--error 1
|
--error 1
|
||||||
--diff_files $MYSQLTEST_VARDIR/tmp/diff4.tmp $MYSQLTEST_VARDIR/tmp/diff1.tmp
|
--diff_files $MYSQLTEST_VARDIR/tmp/diff4.tmp $MYSQLTEST_VARDIR/tmp/diff1.tmp
|
||||||
exit;
|
|
||||||
EOF
|
|
||||||
|
|
||||||
# Execute the above diffs, and send their output to /dev/null - only
|
|
||||||
# interesting to see that it returns correct error codes
|
|
||||||
--exec $MYSQL_TEST < $MYSQLTEST_VARDIR/tmp/diff.test > /dev/null 2>&1
|
|
||||||
|
|
||||||
|
|
||||||
# Compare equal files, again...
|
# Compare equal files, again...
|
||||||
--diff_files $MYSQLTEST_VARDIR/tmp/diff1.tmp $MYSQLTEST_VARDIR/tmp/diff2.tmp
|
--diff_files $MYSQLTEST_VARDIR/tmp/diff1.tmp $MYSQLTEST_VARDIR/tmp/diff2.tmp
|
||||||
|
@ -1740,7 +1745,6 @@ EOF
|
||||||
--remove_file $MYSQLTEST_VARDIR/tmp/diff2.tmp
|
--remove_file $MYSQLTEST_VARDIR/tmp/diff2.tmp
|
||||||
--remove_file $MYSQLTEST_VARDIR/tmp/diff3.tmp
|
--remove_file $MYSQLTEST_VARDIR/tmp/diff3.tmp
|
||||||
--remove_file $MYSQLTEST_VARDIR/tmp/diff4.tmp
|
--remove_file $MYSQLTEST_VARDIR/tmp/diff4.tmp
|
||||||
--remove_file $MYSQLTEST_VARDIR/tmp/diff.test
|
|
||||||
|
|
||||||
|
|
||||||
# ----------------------------------------------------------------------------
|
# ----------------------------------------------------------------------------
|
||||||
|
|
|
@ -15,7 +15,7 @@ let $MYSQLD_DATADIR= `SELECT @@datadir`;
|
||||||
# Bug#39893: Crash if select on a partitioned table,
|
# Bug#39893: Crash if select on a partitioned table,
|
||||||
# when partitioning is disabled
|
# when partitioning is disabled
|
||||||
FLUSH TABLES;
|
FLUSH TABLES;
|
||||||
--copy_file $MYSQLTEST_VARDIR/std_data_ln/parts/t1.frm $MYSQLD_DATADIR/test/t1.frm
|
--copy_file $MYSQLTEST_VARDIR/std_data/parts/t1.frm $MYSQLD_DATADIR/test/t1.frm
|
||||||
SELECT * FROM t1;
|
SELECT * FROM t1;
|
||||||
TRUNCATE TABLE t1;
|
TRUNCATE TABLE t1;
|
||||||
ANALYZE TABLE t1;
|
ANALYZE TABLE t1;
|
||||||
|
|
|
@ -10,6 +10,8 @@
|
||||||
--source include/have_partition.inc
|
--source include/have_partition.inc
|
||||||
--source include/have_csv.inc
|
--source include/have_csv.inc
|
||||||
|
|
||||||
|
call mtr.add_suppression("Failed to write to mysql.general_log");
|
||||||
|
|
||||||
#
|
#
|
||||||
# Bug#19307: Partitions: csv delete failure
|
# Bug#19307: Partitions: csv delete failure
|
||||||
# = CSV engine crashes
|
# = CSV engine crashes
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
--log-slow-queries --log-long-format --log-queries-not-using-indexes
|
--log-output=table,file --log-slow-queries --log-long-format --log-queries-not-using-indexes
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
--log-slow-queries --log-long-format --log-queries-not-using-indexes --myisam-recover=""
|
--log-output=table,file --log-slow-queries --log-long-format --log-queries-not-using-indexes --myisam-recover=""
|
||||||
|
|
1
mysql-test/t/status-master.opt
Normal file
1
mysql-test/t/status-master.opt
Normal file
|
@ -0,0 +1 @@
|
||||||
|
--log-output=table,file
|
|
@ -124,6 +124,8 @@ with_check_option=0
|
||||||
timestamp=2009-04-10 11:53:37
|
timestamp=2009-04-10 11:53:37
|
||||||
create-version=1
|
create-version=1
|
||||||
source=select f1 from `a-b-c`.t1 a, information_schema.tables b\nwhere a.f1 = b.table_name
|
source=select f1 from `a-b-c`.t1 a, information_schema.tables b\nwhere a.f1 = b.table_name
|
||||||
|
client_cs_name=utf8
|
||||||
|
connection_cl_name=utf8_general_ci
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
show databases like '%a-b-c%';
|
show databases like '%a-b-c%';
|
||||||
|
|
|
@ -277,6 +277,7 @@ cp include/mysql/plugin.h $DESTDIR/include/mysql/
|
||||||
# ----------------------------------------------------------------------
|
# ----------------------------------------------------------------------
|
||||||
|
|
||||||
mkdir -p $DESTDIR/lib/opt
|
mkdir -p $DESTDIR/lib/opt
|
||||||
|
mkdir -p $DESTDIR/lib/plugin
|
||||||
cp libmysql/$TARGET/libmysql.dll \
|
cp libmysql/$TARGET/libmysql.dll \
|
||||||
libmysql/$TARGET/libmysql.lib \
|
libmysql/$TARGET/libmysql.lib \
|
||||||
libmysql/$TARGET/mysqlclient.lib \
|
libmysql/$TARGET/mysqlclient.lib \
|
||||||
|
@ -284,6 +285,10 @@ cp libmysql/$TARGET/libmysql.dll \
|
||||||
regex/$TARGET/regex.lib \
|
regex/$TARGET/regex.lib \
|
||||||
strings/$TARGET/strings.lib \
|
strings/$TARGET/strings.lib \
|
||||||
zlib/$TARGET/zlib.lib $DESTDIR/lib/opt/
|
zlib/$TARGET/zlib.lib $DESTDIR/lib/opt/
|
||||||
|
if [ -d storage/innodb_plugin ]; then
|
||||||
|
cp storage/innodb_plugin/$TARGET/ha_innodb_plugin.dll \
|
||||||
|
$DESTDIR/lib/plugin/
|
||||||
|
fi
|
||||||
|
|
||||||
if [ x"$TARGET" != x"release" ] ; then
|
if [ x"$TARGET" != x"release" ] ; then
|
||||||
cp libmysql/$TARGET/libmysql.pdb \
|
cp libmysql/$TARGET/libmysql.pdb \
|
||||||
|
@ -292,11 +297,17 @@ if [ x"$TARGET" != x"release" ] ; then
|
||||||
regex/$TARGET/regex.pdb \
|
regex/$TARGET/regex.pdb \
|
||||||
strings/$TARGET/strings.pdb \
|
strings/$TARGET/strings.pdb \
|
||||||
zlib/$TARGET/zlib.pdb $DESTDIR/lib/opt/
|
zlib/$TARGET/zlib.pdb $DESTDIR/lib/opt/
|
||||||
|
if [ -d storage/innodb_plugin ]; then
|
||||||
|
cp storage/innodb_plugin/$TARGET/ha_innodb_plugin.pdb \
|
||||||
|
$DESTDIR/lib/plugin/
|
||||||
fi
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
if [ x"$PACK_DEBUG" = x"" -a -f "libmysql/debug/libmysql.lib" -o \
|
if [ x"$PACK_DEBUG" = x"" -a -f "libmysql/debug/libmysql.lib" -o \
|
||||||
x"$PACK_DEBUG" = x"yes" ] ; then
|
x"$PACK_DEBUG" = x"yes" ] ; then
|
||||||
mkdir -p $DESTDIR/lib/debug
|
mkdir -p $DESTDIR/lib/debug
|
||||||
|
mkdir -p $DESTDIR/lib/plugin/debug
|
||||||
cp libmysql/debug/libmysql.dll \
|
cp libmysql/debug/libmysql.dll \
|
||||||
libmysql/debug/libmysql.lib \
|
libmysql/debug/libmysql.lib \
|
||||||
libmysql/debug/libmysql.pdb \
|
libmysql/debug/libmysql.pdb \
|
||||||
|
@ -310,6 +321,12 @@ if [ x"$PACK_DEBUG" = x"" -a -f "libmysql/debug/libmysql.lib" -o \
|
||||||
strings/debug/strings.pdb \
|
strings/debug/strings.pdb \
|
||||||
zlib/debug/zlib.lib \
|
zlib/debug/zlib.lib \
|
||||||
zlib/debug/zlib.pdb $DESTDIR/lib/debug/
|
zlib/debug/zlib.pdb $DESTDIR/lib/debug/
|
||||||
|
if [ -d storage/innodb_plugin ]; then
|
||||||
|
cp storage/innodb_plugin/debug/ha_innodb_plugin.dll \
|
||||||
|
storage/innodb_plugin/debug/ha_innodb_plugin.lib \
|
||||||
|
storage/innodb_plugin/debug/ha_innodb_plugin.pdb \
|
||||||
|
$DESTDIR/lib/plugin/debug/
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# ----------------------------------------------------------------------
|
# ----------------------------------------------------------------------
|
||||||
|
|
|
@ -2136,8 +2136,7 @@ static void init_signals(void)
|
||||||
win_install_sigabrt_handler();
|
win_install_sigabrt_handler();
|
||||||
if(opt_console)
|
if(opt_console)
|
||||||
SetConsoleCtrlHandler(console_event_handler,TRUE);
|
SetConsoleCtrlHandler(console_event_handler,TRUE);
|
||||||
else
|
|
||||||
{
|
|
||||||
/* Avoid MessageBox()es*/
|
/* Avoid MessageBox()es*/
|
||||||
_CrtSetReportMode(_CRT_WARN, _CRTDBG_MODE_FILE);
|
_CrtSetReportMode(_CRT_WARN, _CRTDBG_MODE_FILE);
|
||||||
_CrtSetReportFile(_CRT_WARN, _CRTDBG_FILE_STDERR);
|
_CrtSetReportFile(_CRT_WARN, _CRTDBG_FILE_STDERR);
|
||||||
|
@ -2153,8 +2152,8 @@ static void init_signals(void)
|
||||||
exception filter is not guaranteed to work in all situation
|
exception filter is not guaranteed to work in all situation
|
||||||
(like heap corruption or stack overflow)
|
(like heap corruption or stack overflow)
|
||||||
*/
|
*/
|
||||||
SetErrorMode(SetErrorMode(0)|SEM_FAILCRITICALERRORS|SEM_NOOPENFILEERRORBOX);
|
SetErrorMode(SetErrorMode(0) | SEM_FAILCRITICALERRORS
|
||||||
}
|
| SEM_NOOPENFILEERRORBOX);
|
||||||
SetUnhandledExceptionFilter(my_unhandler_exception_filter);
|
SetUnhandledExceptionFilter(my_unhandler_exception_filter);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -13,7 +13,8 @@
|
||||||
# along with this program; if not, write to the Free Software
|
# along with this program; if not, write to the Free Software
|
||||||
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
|
||||||
testdir=$(prefix)/mysql-test/ndb
|
testroot=$(prefix)
|
||||||
|
testdir=$(testroot)/mysql-test/ndb
|
||||||
|
|
||||||
include $(top_srcdir)/storage/ndb/config/common.mk.am
|
include $(top_srcdir)/storage/ndb/config/common.mk.am
|
||||||
include $(top_srcdir)/storage/ndb/config/type_util.mk.am
|
include $(top_srcdir)/storage/ndb/config/type_util.mk.am
|
||||||
|
|
|
@ -309,7 +309,7 @@ sh -c "PATH=\"${MYSQL_BUILD_PATH:-$PATH}\" \
|
||||||
--with-blackhole-storage-engine \
|
--with-blackhole-storage-engine \
|
||||||
--with-federated-storage-engine \
|
--with-federated-storage-engine \
|
||||||
--without-plugin-daemon_example \
|
--without-plugin-daemon_example \
|
||||||
--without-plugin-example \
|
--without-plugin-ftexample \
|
||||||
--with-partition \
|
--with-partition \
|
||||||
--with-big-tables \
|
--with-big-tables \
|
||||||
%if %{WITH_BUNDLED_ZLIB}
|
%if %{WITH_BUNDLED_ZLIB}
|
||||||
|
@ -701,7 +701,11 @@ fi
|
||||||
%attr(755, root, root) %{_bindir}/resolve_stack_dump
|
%attr(755, root, root) %{_bindir}/resolve_stack_dump
|
||||||
%attr(755, root, root) %{_bindir}/resolveip
|
%attr(755, root, root) %{_bindir}/resolveip
|
||||||
|
|
||||||
%attr(755, root, root) %{_libdir}/plugin/*.so*
|
%attr(755, root, root) %{_libdir}/mysql/plugin/ha_example.so*
|
||||||
|
%if %{WITHOUT_INNODB_PLUGIN}
|
||||||
|
%else
|
||||||
|
%attr(755, root, root) %{_libdir}/mysql/plugin/ha_innodb_plugin.so*
|
||||||
|
%endif
|
||||||
|
|
||||||
%attr(755, root, root) %{_sbindir}/mysqld
|
%attr(755, root, root) %{_sbindir}/mysqld
|
||||||
%attr(755, root, root) %{_sbindir}/mysqld-debug
|
%attr(755, root, root) %{_sbindir}/mysqld-debug
|
||||||
|
@ -827,8 +831,13 @@ fi
|
||||||
%{_libdir}/mysql/libvio.a
|
%{_libdir}/mysql/libvio.a
|
||||||
%{_libdir}/mysql/libz.a
|
%{_libdir}/mysql/libz.a
|
||||||
%{_libdir}/mysql/libz.la
|
%{_libdir}/mysql/libz.la
|
||||||
%{_libdir}/plugin/*.a
|
%{_libdir}/mysql/plugin/ha_example.a
|
||||||
%{_libdir}/plugin/*.la
|
%{_libdir}/mysql/plugin/ha_example.la
|
||||||
|
%if %{WITHOUT_INNODB_PLUGIN}
|
||||||
|
%else
|
||||||
|
%{_libdir}/mysql/plugin/ha_innodb_plugin.a
|
||||||
|
%{_libdir}/mysql/plugin/ha_innodb_plugin.la
|
||||||
|
%endif
|
||||||
|
|
||||||
%files shared
|
%files shared
|
||||||
%defattr(-, root, root, 0755)
|
%defattr(-, root, root, 0755)
|
||||||
|
@ -874,9 +883,9 @@ fi
|
||||||
* Fri Aug 21 2009 Jonathan Perkin <jperkin@sun.com>
|
* Fri Aug 21 2009 Jonathan Perkin <jperkin@sun.com>
|
||||||
|
|
||||||
- Install plugin libraries in appropriate packages.
|
- Install plugin libraries in appropriate packages.
|
||||||
- Disable example plugins.
|
- Disable libdaemon_example and ftexample plugins.
|
||||||
|
|
||||||
* Thu Aug 20 2009 Jonathan Perkin <jperkin@stripped>
|
* Thu Aug 20 2009 Jonathan Perkin <jperkin@sun.com>
|
||||||
|
|
||||||
- Update variable used for mysql-test suite location to match source.
|
- Update variable used for mysql-test suite location to match source.
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue