summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorunknown <msvensson@pilot.blaudden>2007-04-10 14:59:16 +0200
committerunknown <msvensson@pilot.blaudden>2007-04-10 14:59:16 +0200
commitd76e2592a03e8e3441911c24181b588fac66ccb8 (patch)
tree38d2f3efc7993c1488f8d53a1acbef23ae445e72
parentd2667d1a6ebe7feeb8b80fcc5cfefac80ed729b0 (diff)
parent06ed2ddce2f401a7460f595fdda60c521b6cebd0 (diff)
downloadmariadb-git-d76e2592a03e8e3441911c24181b588fac66ccb8.tar.gz
Merge pilot.blaudden:/home/msvensson/mysql/mysql-5.0
into pilot.blaudden:/home/msvensson/mysql/mysql-5.0-maint
-rw-r--r--client/mysqltest.c261
-rw-r--r--mysql-test/lib/mtr_report.pl12
-rwxr-xr-xmysql-test/mysql-test-run.pl10
-rw-r--r--mysql-test/r/bdb_notembedded.result35
-rw-r--r--mysql-test/r/mysqltest.result19
-rw-r--r--mysql-test/r/rpl_ssl.result1
-rw-r--r--mysql-test/t/bdb_notembedded.test38
-rw-r--r--mysql-test/t/fix_priv_tables.test7
-rw-r--r--mysql-test/t/mysqltest.test33
-rw-r--r--mysql-test/t/rpl_ssl.test1
-rw-r--r--mysql-test/t/system_mysql_db_fix30020.test8
-rw-r--r--mysql-test/t/system_mysql_db_fix40123.test7
12 files changed, 353 insertions, 79 deletions
diff --git a/client/mysqltest.c b/client/mysqltest.c
index 568d33f7385..fd90112ad6f 100644
--- a/client/mysqltest.c
+++ b/client/mysqltest.c
@@ -91,6 +91,7 @@ enum {
static int record= 0, opt_sleep= -1;
static char *opt_db= 0, *opt_pass= 0;
const char *opt_user= 0, *opt_host= 0, *unix_sock= 0, *opt_basedir= "./";
+const char *opt_logdir= "";
const char *opt_include= 0, *opt_charsets_dir;
static int opt_port= 0;
static int opt_max_connect_retries;
@@ -102,7 +103,8 @@ static my_bool sp_protocol= 0, sp_protocol_enabled= 0;
static my_bool view_protocol= 0, view_protocol_enabled= 0;
static my_bool cursor_protocol= 0, cursor_protocol_enabled= 0;
static my_bool parsing_disabled= 0;
-static my_bool display_result_vertically= FALSE, display_metadata= FALSE;
+static my_bool display_result_vertically= FALSE,
+ display_metadata= FALSE, display_result_sorted= FALSE;
static my_bool disable_query_log= 0, disable_result_log= 0;
static my_bool disable_warnings= 0;
static my_bool disable_info= 1;
@@ -269,14 +271,14 @@ enum enum_commands {
Q_EXEC, Q_DELIMITER,
Q_DISABLE_ABORT_ON_ERROR, Q_ENABLE_ABORT_ON_ERROR,
Q_DISPLAY_VERTICAL_RESULTS, Q_DISPLAY_HORIZONTAL_RESULTS,
- Q_QUERY_VERTICAL, Q_QUERY_HORIZONTAL,
+ Q_QUERY_VERTICAL, Q_QUERY_HORIZONTAL, Q_QUERY_SORTED,
Q_START_TIMER, Q_END_TIMER,
Q_CHARACTER_SET, Q_DISABLE_PS_PROTOCOL, Q_ENABLE_PS_PROTOCOL,
Q_DISABLE_RECONNECT, Q_ENABLE_RECONNECT,
Q_IF,
Q_DISABLE_PARSING, Q_ENABLE_PARSING,
Q_REPLACE_REGEX, Q_REMOVE_FILE, Q_FILE_EXIST,
- Q_WRITE_FILE, Q_COPY_FILE, Q_PERL, Q_DIE, Q_EXIT,
+ Q_WRITE_FILE, Q_COPY_FILE, Q_PERL, Q_DIE, Q_EXIT, Q_SKIP,
Q_CHMOD_FILE, Q_APPEND_FILE, Q_CAT_FILE, Q_DIFF_FILES,
Q_UNKNOWN, /* Unknown command. */
@@ -339,6 +341,7 @@ const char *command_names[]=
"horizontal_results",
"query_vertical",
"query_horizontal",
+ "query_sorted",
"start_timer",
"end_timer",
"character_set",
@@ -359,6 +362,7 @@ const char *command_names[]=
/* Don't execute any more commands, compare result */
"exit",
+ "skip",
"chmod",
"append_file",
"cat_file",
@@ -484,6 +488,7 @@ void replace_dynstr_append_mem(DYNAMIC_STRING *ds, const char *val,
int len);
void replace_dynstr_append(DYNAMIC_STRING *ds, const char *val);
void replace_dynstr_append_uint(DYNAMIC_STRING *ds, uint val);
+void dynstr_append_sorted(DYNAMIC_STRING* ds, DYNAMIC_STRING* ds_input);
void handle_error(struct st_command*,
unsigned int err_errno, const char *err_error,
@@ -809,27 +814,65 @@ void free_used_memory()
}
+static void cleanup_and_exit(int exit_code)
+{
+ free_used_memory();
+ my_end(MY_CHECK_ERROR);
+
+ if (!silent)
+ {
+ switch (exit_code)
+ {
+ case 1:
+ printf("not ok\n");
+ break;
+ case 0:
+ printf("ok\n");
+ break;
+ case 62:
+ printf("skipped\n");
+ break;
+ default:
+ printf("unknown exit code: %d\n", exit_code);
+ DBUG_ASSERT(0);
+ }
+ }
+
+ exit(exit_code);
+}
+
void die(const char *fmt, ...)
{
+ static int dying= 0;
va_list args;
DBUG_ENTER("die");
DBUG_PRINT("enter", ("start_lineno: %d", start_lineno));
+ /*
+ Protect against dying twice
+ first time 'die' is called, try to write log files
+ second time, just exit
+ */
+ if (dying)
+ cleanup_and_exit(1);
+
/* Print the error message */
- va_start(args, fmt);
+ fprintf(stderr, "mysqltest: ");
+ if (cur_file && cur_file != file_stack)
+ fprintf(stderr, "In included file \"%s\": ",
+ cur_file->file_name);
+ if (start_lineno > 0)
+ fprintf(stderr, "At line %u: ", start_lineno);
if (fmt)
{
- fprintf(stderr, "mysqltest: ");
- if (cur_file && cur_file != file_stack)
- fprintf(stderr, "In included file \"%s\": ",
- cur_file->file_name);
- if (start_lineno > 0)
- fprintf(stderr, "At line %u: ", start_lineno);
+ va_start(args, fmt);
vfprintf(stderr, fmt, args);
- fprintf(stderr, "\n");
- fflush(stderr);
+ va_end(args);
}
- va_end(args);
+ else
+ fprintf(stderr, "unknown error");
+ fprintf(stderr, "\n");
+ fflush(stderr);
/* Dump the result that has been accumulated so far to .log file */
if (result_file_name && ds_res.length)
@@ -839,14 +882,7 @@ void die(const char *fmt, ...)
if (result_file_name && ds_warning_messages.length)
dump_warning_messages();
- /* Clean up and exit */
- free_used_memory();
- my_end(MY_CHECK_ERROR);
-
- if (!silent)
- printf("not ok\n");
-
- exit(1);
+ cleanup_and_exit(1);
}
@@ -879,14 +915,7 @@ void abort_not_supported_test(const char *fmt, ...)
}
va_end(args);
- /* Clean up and exit */
- free_used_memory();
- my_end(MY_CHECK_ERROR);
-
- if (!silent)
- printf("skipped\n");
-
- exit(62);
+ cleanup_and_exit(62);
}
@@ -1346,6 +1375,7 @@ void var_query_set(VAR *var, const char *query, const char** query_end)
MYSQL_RES *res;
MYSQL_ROW row;
MYSQL* mysql = &cur_con->mysql;
+ DYNAMIC_STRING ds_query;
DBUG_ENTER("var_query_set");
LINT_INIT(res);
@@ -1355,13 +1385,17 @@ void var_query_set(VAR *var, const char *query, const char** query_end)
die("Syntax error in query, missing '`'");
++query;
- if (mysql_real_query(mysql, query, (int)(end - query)) ||
+ /* Eval the query, thus replacing all environment variables */
+ init_dynamic_string(&ds_query, 0, (end - query) + 32, 256);
+ do_eval(&ds_query, query, end, FALSE);
+
+ if (mysql_real_query(mysql, ds_query.str, ds_query.length) ||
!(res = mysql_store_result(mysql)))
{
- *end = 0;
- die("Error running query '%s': %d %s", query,
+ die("Error running query '%s': %d %s", ds_query.str,
mysql_errno(mysql), mysql_error(mysql));
}
+ dynstr_free(&ds_query);
if ((row = mysql_fetch_row(res)) && row[0])
{
@@ -4230,6 +4264,8 @@ static struct my_option my_long_options[] =
GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{"include", 'i', "Include SQL before each test case.", (gptr*) &opt_include,
(gptr*) &opt_include, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
+ {"logdir", 0, "Directory for log files", (gptr*) &opt_logdir,
+ (gptr*) &opt_logdir, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{"mark-progress", OPT_MARK_PROGRESS,
"Write linenumber and elapsed time to <testname>.progress ",
(gptr*) &opt_mark_progress, (gptr*) &opt_mark_progress, 0,
@@ -4532,15 +4568,18 @@ void dump_result_to_reject_file(char *buf, int size)
void dump_result_to_log_file(char *buf, int size)
{
char log_file[FN_REFLEN];
- str_to_file(fn_format(log_file, result_file_name, "", ".log",
+ str_to_file(fn_format(log_file, result_file_name, opt_logdir, ".log",
+ *opt_logdir ? MY_REPLACE_DIR | MY_REPLACE_EXT :
MY_REPLACE_EXT),
buf, size);
}
void dump_progress(void)
{
- char log_file[FN_REFLEN];
- str_to_file(fn_format(log_file, result_file_name, "", ".progress",
+ char progress_file[FN_REFLEN];
+ str_to_file(fn_format(progress_file, result_file_name,
+ opt_logdir, ".progress",
+ *opt_logdir ? MY_REPLACE_DIR | MY_REPLACE_EXT :
MY_REPLACE_EXT),
ds_progress.str, ds_progress.length);
}
@@ -4549,7 +4588,8 @@ void dump_warning_messages(void)
{
char warn_file[FN_REFLEN];
- str_to_file(fn_format(warn_file, result_file_name, "", ".warnings",
+ str_to_file(fn_format(warn_file, result_file_name, opt_logdir, ".warnings",
+ *opt_logdir ? MY_REPLACE_DIR | MY_REPLACE_EXT :
MY_REPLACE_EXT),
ds_warning_messages.str, ds_warning_messages.length);
}
@@ -5502,7 +5542,9 @@ void run_query(struct st_connection *cn, struct st_command *command, int flags)
{
MYSQL *mysql= &cn->mysql;
DYNAMIC_STRING *ds;
+ DYNAMIC_STRING *save_ds= NULL;
DYNAMIC_STRING ds_result;
+ DYNAMIC_STRING ds_sorted;
DYNAMIC_STRING ds_warnings;
DYNAMIC_STRING eval_query;
char *query;
@@ -5644,6 +5686,18 @@ void run_query(struct st_connection *cn, struct st_command *command, int flags)
dynstr_free(&query_str);
}
+ if (display_result_sorted)
+ {
+ /*
+ Collect the query output in a separate string
+ that can be sorted before it's added to the
+ global result string
+ */
+ init_dynamic_string(&ds_sorted, "", 1024, 1024);
+ save_ds= ds; /* Remember original ds */
+ ds= &ds_sorted;
+ }
+
/*
Find out how to run this query
@@ -5661,6 +5715,14 @@ void run_query(struct st_connection *cn, struct st_command *command, int flags)
run_query_normal(cn, command, flags, query, query_len,
ds, &ds_warnings);
+ if (display_result_sorted)
+ {
+ /* Sort the result set and append it to result */
+ dynstr_append_sorted(save_ds, &ds_sorted);
+ ds= save_ds;
+ dynstr_free(&ds_sorted);
+ }
+
if (sp_created)
{
if (util_query(mysql, "DROP PROCEDURE mysqltest_tmp_sp "))
@@ -6107,37 +6169,24 @@ int main(int argc, char **argv)
case Q_EVAL_RESULT:
eval_result = 1; break;
case Q_EVAL:
+ case Q_QUERY_VERTICAL:
+ case Q_QUERY_HORIZONTAL:
+ case Q_QUERY_SORTED:
if (command->query == command->query_buf)
{
+ /* Skip the first part of command, i.e query_xxx */
command->query= command->first_argument;
command->first_word_len= 0;
}
/* fall through */
- case Q_QUERY_VERTICAL:
- case Q_QUERY_HORIZONTAL:
- {
- my_bool old_display_result_vertically= display_result_vertically;
-
- /* Remove "query_*" if this is first iteration */
- if (command->query == command->query_buf)
- command->query= command->first_argument;
-
- display_result_vertically= (command->type == Q_QUERY_VERTICAL);
- if (save_file[0])
- {
- strmake(command->require_file, save_file, sizeof(save_file));
- save_file[0]= 0;
- }
- run_query(cur_con, command, QUERY_REAP_FLAG|QUERY_SEND_FLAG);
- display_result_vertically= old_display_result_vertically;
- command->last_argument= command->end;
- command_executed++;
- break;
- }
case Q_QUERY:
case Q_REAP:
{
- int flags;
+ my_bool old_display_result_vertically= display_result_vertically;
+ my_bool old_display_result_sorted= display_result_sorted;
+ /* Default is full query, both reap and send */
+ int flags= QUERY_REAP_FLAG | QUERY_SEND_FLAG;
+
if (q_send_flag)
{
/* Last command was an empty 'send' */
@@ -6148,11 +6197,10 @@ int main(int argc, char **argv)
{
flags= QUERY_REAP_FLAG;
}
- else
- {
- /* full query, both reap and send */
- flags= QUERY_REAP_FLAG | QUERY_SEND_FLAG;
- }
+
+ /* Check for special property for this query */
+ display_result_vertically= (command->type == Q_QUERY_VERTICAL);
+ display_result_sorted= (command->type == Q_QUERY_SORTED);
if (save_file[0])
{
@@ -6162,6 +6210,11 @@ int main(int argc, char **argv)
run_query(cur_con, command, flags);
command_executed++;
command->last_argument= command->end;
+
+ /* Restore settings */
+ display_result_vertically= old_display_result_vertically;
+ display_result_sorted= old_display_result_sorted;
+
break;
}
case Q_SEND:
@@ -6277,6 +6330,9 @@ int main(int argc, char **argv)
/* Stop processing any more commands */
abort_flag= 1;
break;
+ case Q_SKIP:
+ abort_not_supported_test("%s", command->first_argument);
+ break;
case Q_RESULT:
die("result, deprecated command");
@@ -6388,14 +6444,9 @@ int main(int argc, char **argv)
dump_warning_messages();
timer_output();
- free_used_memory();
- my_end(MY_CHECK_ERROR);
-
/* Yes, if we got this far the test has suceeded! Sakila smiles */
- if (!silent)
- printf("ok\n");
- exit(0);
- return 0; /* Keep compiler happy */
+ cleanup_and_exit(0);
+ return 0; /* Keep compiler happy too */
}
@@ -7774,3 +7825,73 @@ 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);
}
+
+
+
+/*
+ Build a list of pointer to each line in ds_input, sort
+ the list and use the sorted list to append the strings
+ sorted to the output ds
+
+ SYNOPSIS
+ dynstr_append_sorted
+ ds - string where the sorted output will be appended
+ ds_input - string to be sorted
+
+*/
+
+static int comp_lines(const char **a, const char **b)
+{
+ return (strcmp(*a,*b));
+}
+
+void dynstr_append_sorted(DYNAMIC_STRING* ds, DYNAMIC_STRING *ds_input)
+{
+ unsigned i;
+ char *start= ds_input->str;
+ DYNAMIC_ARRAY lines;
+ DBUG_ENTER("dynstr_append_sorted");
+
+ if (!*start)
+ DBUG_VOID_RETURN; /* No input */
+
+ my_init_dynamic_array(&lines, sizeof(const char*), 32, 32);
+
+ /* First line is result header, skip past it */
+ while (*start && *start != '\n')
+ start++;
+ start++; /* Skip past \n */
+ dynstr_append_mem(ds, ds_input->str, start - ds_input->str);
+
+ /* Insert line(s) in array */
+ while (*start)
+ {
+ char* line_end= (char*)start;
+
+ /* Find end of line */
+ while (*line_end && *line_end != '\n')
+ line_end++;
+ *line_end= 0;
+
+ /* Insert pointer to the line in array */
+ if (insert_dynamic(&lines, (gptr) &start))
+ die("Out of memory inserting lines to sort");
+
+ start= line_end+1;
+ }
+
+ /* Sort array */
+ qsort(lines.buffer, lines.elements,
+ sizeof(char**), (qsort_cmp)comp_lines);
+
+ /* Create new result */
+ for (i= 0; i < lines.elements ; i++)
+ {
+ const char **line= dynamic_element(&lines, i, const char**);
+ dynstr_append(ds, *line);
+ dynstr_append(ds, "\n");
+ }
+
+ delete_dynamic(&lines);
+ DBUG_VOID_RETURN;
+}
diff --git a/mysql-test/lib/mtr_report.pl b/mysql-test/lib/mtr_report.pl
index 2a90344c110..a2f22ef8870 100644
--- a/mysql-test/lib/mtr_report.pl
+++ b/mysql-test/lib/mtr_report.pl
@@ -295,6 +295,18 @@ sub mtr_report_stats ($) {
}
}
}
+
+ if ( $::opt_check_testcases )
+ {
+ # Look for warnings produced by mysqltest in testname.warnings
+ foreach my $test_warning_file
+ ( glob("$::glob_mysql_test_dir/r/*.warnings") )
+ {
+ $found_problems= 1;
+ print WARN "Check myqltest warnings in $test_warning_file\n";
+ }
+ }
+
if ( $found_problems )
{
mtr_warning("Got errors/warnings while running tests, please examine",
diff --git a/mysql-test/mysql-test-run.pl b/mysql-test/mysql-test-run.pl
index b48ac6c5abc..a40c2f157d5 100755
--- a/mysql-test/mysql-test-run.pl
+++ b/mysql-test/mysql-test-run.pl
@@ -724,8 +724,6 @@ sub command_line_setup () {
{
$mysqld_variables{'port'}= 3306;
$mysqld_variables{'master-port'}= 3306;
- $opt_skip_ndbcluster= 1;
- $opt_skip_im= 1;
}
if ( $opt_comment )
@@ -1072,7 +1070,7 @@ sub command_line_setup () {
# On some operating systems, there is a limit to the length of a
# UNIX domain socket's path far below PATH_MAX, so try to avoid long
# socket path names.
- $sockdir = tempdir(CLEANUP => 0) if ( length($sockdir) > 80 );
+ $sockdir = tempdir(CLEANUP => 0) if ( length($sockdir) >= 80 );
$master->[0]=
{
@@ -1235,6 +1233,7 @@ sub command_line_setup () {
{
# Turn off features not supported when running with extern server
$opt_skip_rpl= 1;
+ $opt_skip_ndbcluster= 1;
# Setup master->[0] with the settings for the extern server
$master->[0]->{'path_sock'}= $opt_socket ? $opt_socket : "/tmp/mysql.sock";
@@ -2011,10 +2010,7 @@ sub environment_setup () {
$ENV{'MYSQL_FIX_SYSTEM_TABLES'}= $cmdline_mysql_fix_system_tables;
}
- if (!$opt_extern)
- {
- $ENV{'MYSQL_FIX_PRIVILEGE_TABLES'}= $file_mysql_fix_privilege_tables;
- }
+ $ENV{'MYSQL_FIX_PRIVILEGE_TABLES'}= $file_mysql_fix_privilege_tables;
# ----------------------------------------------------
# Setup env so childs can execute my_print_defaults
diff --git a/mysql-test/r/bdb_notembedded.result b/mysql-test/r/bdb_notembedded.result
new file mode 100644
index 00000000000..14cb5fad915
--- /dev/null
+++ b/mysql-test/r/bdb_notembedded.result
@@ -0,0 +1,35 @@
+set autocommit=1;
+reset master;
+create table bug16206 (a int);
+insert into bug16206 values(1);
+start transaction;
+insert into bug16206 values(2);
+commit;
+show binlog events;
+Log_name Pos Event_type Server_id End_log_pos Info
+f n Format_desc 1 n Server ver: VERSION, Binlog ver: 4
+f n Query 1 n use `test`; create table bug16206 (a int)
+f n Query 1 n use `test`; insert into bug16206 values(1)
+f n Query 1 n use `test`; insert into bug16206 values(2)
+drop table bug16206;
+reset master;
+create table bug16206 (a int) engine= bdb;
+insert into bug16206 values(0);
+insert into bug16206 values(1);
+start transaction;
+insert into bug16206 values(2);
+commit;
+insert into bug16206 values(3);
+show binlog events;
+Log_name Pos Event_type Server_id End_log_pos Info
+f n Format_desc 1 n Server ver: VERSION, Binlog ver: 4
+f n Query 1 n use `test`; create table bug16206 (a int) engine= bdb
+f n Query 1 n use `test`; insert into bug16206 values(0)
+f n Query 1 n use `test`; insert into bug16206 values(1)
+f n Query 1 n use `test`; BEGIN
+f n Query 1 n use `test`; insert into bug16206 values(2)
+f n Query 1 n use `test`; COMMIT
+f n Query 1 n use `test`; insert into bug16206 values(3)
+drop table bug16206;
+set autocommit=0;
+End of 5.0 tests
diff --git a/mysql-test/r/mysqltest.result b/mysql-test/r/mysqltest.result
index 0188fe87bbd..c7552258aeb 100644
--- a/mysql-test/r/mysqltest.result
+++ b/mysql-test/r/mysqltest.result
@@ -277,6 +277,9 @@ let $A = changed value of A;
# Content of $B is: initial value of B
let $B = changed value of B;
# Content of $A is: changed value of A
+var2: content of variable 1
+var3: content of variable 1 content of variable 1
+length of var3 is longer than 0
mysqltest: At line 1: Missing required argument 'filename' to command 'source'
mysqltest: At line 1: Could not open file ./non_existingFile
mysqltest: In included file "MYSQLTEST_VARDIR/tmp/recursive.sql": At line 1: Source directives are nesting too deep
@@ -538,4 +541,20 @@ hello
hello
mysqltest: At line 1: test of die
Some output
+create table t1( a int, b char(255), c timestamp);
+insert into t1 values(1, 'Line 1', '2007-04-05'), (2, "Part 2", '2007-04-05');
+insert into t1 values(1, 'Line 1', '2007-04-05'), (2, "Part 3", '2007-04-05');
+select * from t1;
+a b c
+1 Line 1 2007-04-05 00:00:00
+2 Part 2 2007-04-05 00:00:00
+1 Line 1 2007-04-05 00:00:00
+2 Part 3 2007-04-05 00:00:00
+select * from t1;
+a b c
+1 Line 1 2007-04-05 00:00:00
+1 Line 1 2007-04-05 00:00:00
+2 Part 2 2007-04-05 00:00:00
+2 Part 3 2007-04-05 00:00:00
+select * from t1;
End of tests
diff --git a/mysql-test/r/rpl_ssl.result b/mysql-test/r/rpl_ssl.result
index 17a16d5020d..baa6edf8373 100644
--- a/mysql-test/r/rpl_ssl.result
+++ b/mysql-test/r/rpl_ssl.result
@@ -57,6 +57,7 @@ STOP SLAVE;
select * from t1;
t
1
+insert into t1 values (NULL);
show slave status;
Slave_IO_State #
Master_Host 127.0.0.1
diff --git a/mysql-test/t/bdb_notembedded.test b/mysql-test/t/bdb_notembedded.test
new file mode 100644
index 00000000000..24e64ebbfb2
--- /dev/null
+++ b/mysql-test/t/bdb_notembedded.test
@@ -0,0 +1,38 @@
+-- source include/not_embedded.inc
+-- source include/have_bdb.inc
+
+#
+# Bug #16206: Superfluous COMMIT event in binlog when updating BDB in autocommit mode
+#
+set autocommit=1;
+
+let $VERSION=`select version()`;
+
+reset master;
+create table bug16206 (a int);
+insert into bug16206 values(1);
+start transaction;
+insert into bug16206 values(2);
+commit;
+--replace_result $VERSION VERSION
+--replace_column 1 f 2 n 5 n
+show binlog events;
+drop table bug16206;
+
+reset master;
+create table bug16206 (a int) engine= bdb;
+insert into bug16206 values(0);
+insert into bug16206 values(1);
+start transaction;
+insert into bug16206 values(2);
+commit;
+insert into bug16206 values(3);
+--replace_result $VERSION VERSION
+--replace_column 1 f 2 n 5 n
+show binlog events;
+drop table bug16206;
+
+set autocommit=0;
+
+
+--echo End of 5.0 tests
diff --git a/mysql-test/t/fix_priv_tables.test b/mysql-test/t/fix_priv_tables.test
index 3a91f41dfcc..3051fd88076 100644
--- a/mysql-test/t/fix_priv_tables.test
+++ b/mysql-test/t/fix_priv_tables.test
@@ -1,6 +1,13 @@
# Embedded server doesn't support external clients
--source include/not_embedded.inc
+# Don't run this test if $MYSQL_FIX_PRIVILEGE_TABLES isn't set
+# to the location of mysql_fix_privilege_tables.sql
+if (`SELECT LENGTH("$MYSQL_FIX_PRIVILEGE_TABLES") <= 0`)
+{
+ skip Test need MYSQL_FIX_PRIVILEGE_TABLES;
+}
+
#
# This is the test for mysql_fix_privilege_tables
# It checks that a system tables from mysql 4.1.23
diff --git a/mysql-test/t/mysqltest.test b/mysql-test/t/mysqltest.test
index 1914f2794e2..328206626df 100644
--- a/mysql-test/t/mysqltest.test
+++ b/mysql-test/t/mysqltest.test
@@ -719,6 +719,21 @@ let $B = changed value of B;
--echo # Content of \$A is: $A
# ----------------------------------------------------------------------------
+# Test let from query with $variable
+# let $<var_name>=`<query with $variable>`;
+# ----------------------------------------------------------------------------
+
+let $var1=content of variable 1;
+let $var2= `select "$var1"`;
+let $var3= `select concat("$var1", " ", "$var2")`;
+echo var2: $var2;
+echo var3: $var3;
+if (`select length("$var3") > 0`)
+{
+ echo length of var3 is longer than 0;
+}
+
+# ----------------------------------------------------------------------------
# Test to assign let from query
# let $<var_name>=`<query>`;
# ----------------------------------------------------------------------------
@@ -1725,6 +1740,24 @@ EOF
--exec echo "echo Some output; exit; echo Not this;" | $MYSQL_TEST 2>&1
# ----------------------------------------------------------------------------
+# test for query_sorted
+# ----------------------------------------------------------------------------
+
+create table t1( a int, b char(255), c timestamp);
+insert into t1 values(1, 'Line 1', '2007-04-05'), (2, "Part 2", '2007-04-05');
+insert into t1 values(1, 'Line 1', '2007-04-05'), (2, "Part 3", '2007-04-05');
+select * from t1;
+query_sorted select * from t1;
+disable_result_log;
+query_sorted select * from t1;
+enable_result_log;
+query_sorted select '';
+query_sorted select "h";
+query_sorted select "he";
+query_sorted select "hep";
+query_sorted select "hepp";
+
+# ----------------------------------------------------------------------------
# Some coverage tests
# ----------------------------------------------------------------------------
diff --git a/mysql-test/t/rpl_ssl.test b/mysql-test/t/rpl_ssl.test
index 249ed16f931..07a7226fb79 100644
--- a/mysql-test/t/rpl_ssl.test
+++ b/mysql-test/t/rpl_ssl.test
@@ -54,6 +54,7 @@ while ($i)
start slave;
enable_query_log;
connection master;
+insert into t1 values (NULL);
sync_slave_with_master;
--replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR $MASTER_MYPORT MASTER_MYPORT
--replace_column 1 # 8 # 9 # 23 # 33 #
diff --git a/mysql-test/t/system_mysql_db_fix30020.test b/mysql-test/t/system_mysql_db_fix30020.test
index b71ae6c2204..23562807c14 100644
--- a/mysql-test/t/system_mysql_db_fix30020.test
+++ b/mysql-test/t/system_mysql_db_fix30020.test
@@ -1,8 +1,12 @@
# Embedded server doesn't support external clients
--source include/not_embedded.inc
-# Windows doesn't support execution of shell scripts (to fix!!)
---source include/not_windows.inc
+# Don't run this test if $MYSQL_FIX_SYSTEM_TABLES isn't set
+# to the location of mysql_fix_privilege_tables.sql
+if (`SELECT LENGTH("$MYSQL_FIX_SYSTEM_TABLES") <= 0`)
+{
+ skip Test need MYSQL_FIX_SYSTEM_TABLES;
+}
#
# This is the test for mysql_fix_privilege_tables
diff --git a/mysql-test/t/system_mysql_db_fix40123.test b/mysql-test/t/system_mysql_db_fix40123.test
index 471598625d4..012d05af3b8 100644
--- a/mysql-test/t/system_mysql_db_fix40123.test
+++ b/mysql-test/t/system_mysql_db_fix40123.test
@@ -1,6 +1,13 @@
# Embedded server doesn't support external clients
--source include/not_embedded.inc
+# Don't run this test if $MYSQL_FIX_PRIVILEGE_TABLES isn't set
+# to the location of mysql_fix_privilege_tables.sql
+if (`SELECT LENGTH("$MYSQL_FIX_PRIVILEGE_TABLES") <= 0`)
+{
+ skip Test need MYSQL_FIX_PRIVILEGE_TABLES;
+}
+
#
# This is the test for mysql_fix_privilege_tables
# It checks that a system tables from mysql 4.1.23