Commit ffc9538b authored by msvensson@shellback.(none)'s avatar msvensson@shellback.(none)

Merge shellback.(none):/home/msvensson/mysql/mysql-4.1-maint

into  shellback.(none):/home/msvensson/mysql/mysql-5.0-maint
parents f60e5449 cfd442b6
......@@ -890,7 +890,7 @@ int dyn_string_cmp(DYNAMIC_STRING* ds, const char *fname)
die(NullS);
if (!eval_result && (uint) stat_info.st_size != ds->length)
{
DBUG_PRINT("info",("Size differs: result size: %u file size: %u",
DBUG_PRINT("info",("Size differs: result size: %u file size: %llu",
ds->length, stat_info.st_size));
DBUG_PRINT("info",("result: '%s'", ds->str));
DBUG_RETURN(RESULT_LENGTH_MISMATCH);
......@@ -1810,7 +1810,7 @@ void my_ungetc(int c)
void read_until_delimiter(DYNAMIC_STRING *ds,
DYNAMIC_STRING *ds_delimiter)
{
int c;
char c;
DBUG_ENTER("read_until_delimiter");
DBUG_PRINT("enter", ("delimiter: %s, length: %d",
ds_delimiter->str, ds_delimiter->length));
......@@ -2558,7 +2558,7 @@ void do_get_errcodes(struct st_command *command)
*to_ptr= 0;
to->type= ERR_SQLSTATE;
DBUG_PRINT("info", ("ERR_SQLSTATE: %d", to->code.sqlstate));
DBUG_PRINT("info", ("ERR_SQLSTATE: %s", to->code.sqlstate));
}
else if (*p == 's')
{
......@@ -3346,7 +3346,7 @@ int read_line(char *buf, int size)
LINT_INIT(last_quote);
start_lineno= cur_file->lineno;
DBUG_PRINT("info", ("start_lineno: %d", start_lineno));
DBUG_PRINT("info", ("Starting to read at lineno: %d", start_lineno));
for (; p < buf_end ;)
{
skip_char= 0;
......@@ -3370,7 +3370,7 @@ int read_line(char *buf, int size)
die("Missing end of block");
*p= 0;
DBUG_PRINT("info", ("end of file"));
DBUG_PRINT("info", ("end of file at line %d", cur_file->lineno));
DBUG_RETURN(1);
}
cur_file--;
......@@ -3393,17 +3393,21 @@ int read_line(char *buf, int size)
if (end_of_query(c))
{
*p= 0;
DBUG_PRINT("exit", ("Found delimiter '%s'", delimiter));
DBUG_PRINT("exit", ("Found delimiter '%s' at line %d",
delimiter, cur_file->lineno));
DBUG_RETURN(0);
}
else if ((c == '{' &&
(!strncasecmp(buf, "while", min(5, p - buf)) ||
!strncasecmp(buf, "if", min(2, p - buf)))))
(!my_strnncoll_simple(charset_info, "while", 5,
buf, min(5, p - buf), 0) ||
!my_strnncoll_simple(charset_info, "if", 2,
buf, min(2, p - buf), 0))))
{
/* Only if and while commands can be terminated by { */
*p++= c;
*p= 0;
DBUG_PRINT("exit", ("Found '{' indicating begining of block"));
DBUG_PRINT("exit", ("Found '{' indicating start of block at line %d",
cur_file->lineno));
DBUG_RETURN(0);
}
else if (c == '\'' || c == '"' || c == '`')
......@@ -3418,7 +3422,8 @@ int read_line(char *buf, int size)
{
/* Comments are terminated by newline */
*p= 0;
DBUG_PRINT("exit", ("Found newline in comment"));
DBUG_PRINT("exit", ("Found newline in comment at line: %d",
cur_file->lineno));
DBUG_RETURN(0);
}
break;
......@@ -3433,13 +3438,19 @@ int read_line(char *buf, int size)
{
/* Skip all space at begining of line */
if (c == '\n')
start_lineno= cur_file->lineno; /* Query hasn't started yet */
{
/* Query hasn't started yet */
start_lineno= cur_file->lineno;
DBUG_PRINT("info", ("Query hasn't started yet, start_lineno: %d",
start_lineno));
}
skip_char= 1;
}
else if (end_of_query(c))
{
*p= 0;
DBUG_PRINT("exit", ("Found delimiter '%s'", delimiter));
DBUG_PRINT("exit", ("Found delimiter '%s' at line: %d",
delimiter, cur_file->lineno));
DBUG_RETURN(0);
}
else if (c == '}')
......@@ -3447,7 +3458,8 @@ int read_line(char *buf, int size)
/* A "}" need to be by itself in the begining of a line to terminate */
*p++= c;
*p= 0;
DBUG_PRINT("exit", ("Found '}' in begining of a line"));
DBUG_PRINT("exit", ("Found '}' in begining of a line at line: %d",
cur_file->lineno));
DBUG_RETURN(0);
}
else if (c == '\'' || c == '"' || c == '`')
......@@ -4317,7 +4329,7 @@ void append_stmt_result(DYNAMIC_STRING *ds, MYSQL_STMT *stmt,
bind[i].is_null= &is_null[i];
bind[i].length= &length[i];
DBUG_PRINT("bind", ("col[%d]: buffer_type: %d, buffer_length: %d",
DBUG_PRINT("bind", ("col[%d]: buffer_type: %d, buffer_length: %lu",
i, bind[i].buffer_type, bind[i].buffer_length));
}
......@@ -7267,5 +7279,3 @@ void replace_dynstr_append_uint(DYNAMIC_STRING *ds, uint val)
char *end= longlong10_to_str(val, buff, 10);
replace_dynstr_append_mem(ds, buff, end - buff);
}
......@@ -575,8 +575,6 @@ sub mtr_options_from_test_file($$) {
while ( my $line= <$F> )
{
next if ( $line !~ /^--/ );
# Match this line against tag in "tags" array
foreach my $tag (@tags)
{
......@@ -588,14 +586,21 @@ sub mtr_options_from_test_file($$) {
}
# If test sources another file, open it as well
if ( $line =~ /^\-\-([[:space:]]*)source(.*)$/ )
if ( $line =~ /^\-\-([[:space:]]*)source(.*)$/ or
$line =~ /^([[:space:]]*)source(.*);$/ )
{
my $value= $2;
$value =~ s/^\s+//; # Remove leading space
$value =~ s/[[:space:]]+$//; # Remove ending space
my $sourced_file= "$::glob_mysql_test_dir/$value";
mtr_options_from_test_file($tinfo, $sourced_file);
if ( -f $sourced_file )
{
# Only source the file if it exists, we may get
# false positives in the regexes above if someone
# writes "source nnnn;" in a test case(such as mysqltest.test)
mtr_options_from_test_file($tinfo, $sourced_file);
}
}
}
......
......@@ -133,6 +133,7 @@ sub mtr_report_test_failed ($) {
if ( $tinfo->{'timeout'} )
{
print "[ fail ] timeout\n";
return;
}
elsif ( $tinfo->{'ndb_test'} and $::cluster->[0]->{'installed_ok'} eq "NO")
{
......
......@@ -468,11 +468,11 @@ sub initial_setup () {
#
# Look for the path where to find the client binaries
$path_client_bindir= mtr_path_exists("$glob_basedir/client/release",
$path_client_bindir= mtr_path_exists("$glob_basedir/client_release",
"$glob_basedir/client_debug",
"$glob_basedir/client/release",
"$glob_basedir/client/debug",
"$glob_basedir/client",
"$glob_basedir/client_release",
"$glob_basedir/client_debug",
"$glob_basedir/bin");
# Look for the mysqld executable
......@@ -484,6 +484,7 @@ sub initial_setup () {
"$path_client_bindir/mysqld-debug",
"$path_client_bindir/mysqld-max",
"$glob_basedir/libexec/mysqld",
"$glob_basedir/bin/mysqld",
"$glob_basedir/sql/release/mysqld",
"$glob_basedir/sql/debug/mysqld");
......@@ -1386,11 +1387,14 @@ sub executable_setup () {
mtr_exe_exists("$ndb_path/src/kernel/ndbd",
"$glob_basedir/bin/ndbd");
$path_ndb_examples_dir=
mtr_path_exists("$ndb_path/ndbapi-examples",
"$ndb_path/examples");
$exe_ndb_example=
mtr_file_exists("$path_ndb_examples_dir/ndbapi_simple/ndbapi_simple");
if ( $mysql_version_id >= 50000 )
{
$path_ndb_examples_dir=
mtr_path_exists("$ndb_path/ndbapi-examples",
"$ndb_path/examples");
$exe_ndb_example=
mtr_file_exists("$path_ndb_examples_dir/ndbapi_simple/ndbapi_simple");
}
}
# Look for the udf_example library
......@@ -1413,18 +1417,27 @@ sub executable_setup () {
}
# Look for mysql_client_test executable
if ( $glob_use_embedded_server )
if ( $glob_win32 and $mysql_version_id < 50000 )
{
$exe_mysql_client_test=
mtr_exe_exists("$glob_basedir/libmysqld/examples/mysql_client_test_embedded");
# Skip looking for exe_mysql_client_test as its not built by default
# in 4.1 for windows.
$exe_mysql_client_test= "unavailable";
}
else
{
$exe_mysql_client_test=
mtr_exe_exists("$glob_basedir/tests/mysql_client_test",
"$glob_basedir/tests/release/mysql_client_test",
"$glob_basedir/tests/debug/mysql_client_test");
# Look for mysql_client_test executable
if ( $glob_use_embedded_server )
{
$exe_mysql_client_test=
mtr_exe_exists("$glob_basedir/libmysqld/examples/mysql_client_test_embedded");
}
else
{
$exe_mysql_client_test=
mtr_exe_exists("$glob_basedir/tests/mysql_client_test",
"$glob_basedir/tests/release/mysql_client_test",
"$glob_basedir/tests/debug/mysql_client_test");
}
}
}
......@@ -1548,8 +1561,11 @@ sub environment_setup () {
$ENV{'NDB_TOOLS_OUTPUT'}= $path_ndb_testrun_log;
$ENV{'NDB_CONNECTSTRING'}= $opt_ndbconnectstring;
$ENV{'NDB_EXAMPLES_DIR'}= $path_ndb_examples_dir;
$ENV{'MY_NDB_EXAMPLES_BINARY'}= $exe_ndb_example;
if ( $mysql_version_id >= 50000 )
{
$ENV{'NDB_EXAMPLES_DIR'}= $path_ndb_examples_dir;
$ENV{'MY_NDB_EXAMPLES_BINARY'}= $exe_ndb_example;
}
$ENV{'NDB_EXAMPLES_OUTPUT'}= $path_ndb_testrun_log;
}
......@@ -2809,6 +2825,33 @@ sub do_after_run_mysqltest($)
}
sub find_testcase_skipped_reason($)
{
my ($tinfo)= @_;
# Open mysqltest.log
my $F= IO::File->new($path_timefile) or
mtr_error("can't open file \"$path_timefile\": $!");
my $reason;
while ( my $line= <$F> )
{
# Look for "reason: <reason fo skiping test>"
if ( $line =~ /reason: (.*)/ )
{
$reason= $1;
}
}
if ( ! $reason )
{
mtr_warning("Could not find reason for skipping test in $path_timefile");
$reason= "Detected by testcase(reason unknown) ";
}
$tinfo->{'comment'}= $reason;
}
##############################################################################
#
# Run a single test case
......@@ -2881,10 +2924,7 @@ sub run_testcase ($) {
# Testcase itself tell us to skip this one
# Try to get reason from mysqltest.log
my $last_line= mtr_lastlinefromfile($path_timefile) if -f $path_timefile;
my $reason= mtr_match_prefix($last_line, "reason: ");
$tinfo->{'comment'}=
defined $reason ? $reason : "Detected by testcase(reason unknown) ";
find_testcase_skipped_reason($tinfo);
mtr_report_test_skipped($tinfo);
}
elsif ( $res == 63 )
......
......@@ -104,6 +104,16 @@ SELECT `id1` FROM `t1` WHERE `id1` NOT IN (SELECT `id1` FROM `t2` WHERE `id2` =
id1
2
DROP TABLE t1, t2;
flush status;
create table t1 (c1 int) engine=innodb;
handler t1 open;
handler t1 read first;
c1
show /*!50002 GLOBAL */ status like 'Handler_rollback';
Variable_name Value
Handler_rollback 0
drop table t1;
End of 4.1 tests
create table t1m (a int) engine=myisam;
create table t1i (a int) engine=innodb;
create table t2m (a int) engine=myisam;
......
......@@ -488,8 +488,6 @@ DROP TABLE t1;
#
# check if SEC_TO_TIME() handles BIGINT UNSIGNED values correctly
SELECT SEC_TO_TIME(CAST(-1 AS UNSIGNED));
#
# 21913: DATE_FORMAT() Crashes mysql server if I use it through
# mysql-connector-j driver.
#
......
......@@ -117,6 +117,22 @@ INSERT INTO `t2`(`id1`,`id2`,`id3`,`id4`) VALUES
SELECT `id1` FROM `t1` WHERE `id1` NOT IN (SELECT `id1` FROM `t2` WHERE `id2` = 1 AND `id3` = 2);
DROP TABLE t1, t2;
# Bug #22728 - Handler_rollback value is growing
#
flush status;
create table t1 (c1 int) engine=innodb;
connect (con1,localhost,root,,);
connect (con2,localhost,root,,);
connection con2;
handler t1 open;
handler t1 read first;
disconnect con2;
connection con1;
show /*!50002 GLOBAL */ status like 'Handler_rollback';
connection default;
drop table t1;
disconnect con1;
--echo End of 4.1 tests
#
# Bug #12882 min/max inconsistent on empty table
#
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment