summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorunknown <msvensson@neptunus.(none)>2006-02-17 12:07:45 +0100
committerunknown <msvensson@neptunus.(none)>2006-02-17 12:07:45 +0100
commitc61fb3c359e0712d0796937b6fed673c4409084a (patch)
treea1cacf62e53acdec8145e09b38bfaf287cf65cab
parent1be9ba8ae8295e753d4516b4faf42ba0b02dca25 (diff)
downloadmariadb-git-c61fb3c359e0712d0796937b6fed673c4409084a.tar.gz
Replace win filename s with unix equivalent
Evaluate commands passed to "exec" and "system" to expand any $variables before executing command. client/mysqltest.c: do_exec, do_system - call do_eval on the command to be executed in order to expand any $variables - Remove old subst_env_var and my_popen, not needed anymore Rewrite 'replace_strings' into 'replace_strings_append' - copy whole strings instead of byte by byte copy - insert result directly inito dynamic_string, no need to check if out string needs to be realloced for every byte. - Add comments and DBUG_PRINT's New function 'fix_win_paths', detect filenames in win format that should be converted do_eval - Only set "escaped" if next char is \ or $ mysql-test/mysql-test-run.pl: Always pass path for DBUG .trace file in unix format Add search path client_debug to find debug compiled windows binaries Remove unused MYSQL_TEST_WINDIR and MASTER_WINMYSOCK mysql-test/r/mysqldump.result: Update test result mysql-test/t/client_xml.test: Use " instead of ' mysql-test/t/mysql_client_test.test: Remove the useless "exec echo" command mysql-test/t/mysqltest.test: Escape $variables passed to --exec, that should not be evaluated in exec. mysql-test/t/rpl000015.test: Remove unneccessary replace mysql-test/t/system_mysql_db_fix.test: Call the "shell script" $MYSQL_FIX_SYSTEM_TABLE using --system
-rw-r--r--client/mysqltest.c474
-rwxr-xr-xmysql-test/mysql-test-run.pl36
-rw-r--r--mysql-test/r/mysqldump.result2
-rw-r--r--mysql-test/t/client_xml.test12
-rw-r--r--mysql-test/t/mysql_client_test.test1
-rw-r--r--mysql-test/t/mysqltest.test36
-rw-r--r--mysql-test/t/rpl000015.test2
-rw-r--r--mysql-test/t/system_mysql_db_fix.test3
8 files changed, 290 insertions, 276 deletions
diff --git a/client/mysqltest.c b/client/mysqltest.c
index 6a2a7b072de..0ff8667a7de 100644
--- a/client/mysqltest.c
+++ b/client/mysqltest.c
@@ -74,7 +74,6 @@
#define MAX_QUERY (256*1024)
#define MAX_VAR_NAME 256
#define MAX_COLUMNS 256
-#define PAD_SIZE 128
#define MAX_CONS 128
#define MAX_INCLUDE_DEPTH 16
#define INIT_Q_LINES 1024
@@ -275,18 +274,6 @@ typedef struct
int alloced;
} VAR;
-#if defined(__NETWARE__) || defined(__WIN__)
-/*
- Netware doesn't proved environment variable substitution that is done
- by the shell in unix environments. We do this in the following function:
-*/
-
-static char *subst_env_var(const char *cmd);
-static FILE *my_popen(const char *cmd, const char *mode);
-#undef popen
-#define popen(A,B) my_popen((A),(B))
-#endif /* __NETWARE__ */
-
VAR var_reg[10];
/*Perl/shell-like variable registers */
HASH var_hash;
@@ -465,19 +452,19 @@ typedef struct st_pointer_array { /* when using array-strings */
struct st_replace;
struct st_replace *init_replace(my_string *from, my_string *to, uint count,
my_string word_end_chars);
-uint replace_strings(struct st_replace *rep, my_string *start,
- uint *max_length, const char *from);
void free_replace();
static int insert_pointer_name(reg1 POINTER_ARRAY *pa,my_string name);
+static void replace_strings_append(struct st_replace *rep, DYNAMIC_STRING* ds,
+ const char *from, int len);
void free_pointer_array(POINTER_ARRAY *pa);
-static int initialize_replace_buffer(void);
static void do_eval(DYNAMIC_STRING *query_eval, const char *query);
static void str_to_file(const char *fname, char *str, int size);
-int do_server_op(struct st_query *q,const char *op);
+
+#ifdef __WIN__
+static void free_win_path_patterns();
+#endif
struct st_replace *glob_replace;
-static char *out_buff;
-static uint out_length;
static int eval_result = 0;
/* For column replace */
@@ -505,7 +492,7 @@ static void handle_no_error(struct st_query *q);
static void do_eval(DYNAMIC_STRING* query_eval, const char *query)
{
const char *p;
- register char c;
+ register char c, next_c;
register int escaped = 0;
VAR* v;
DBUG_ENTER("do_eval");
@@ -527,13 +514,19 @@ static void do_eval(DYNAMIC_STRING* query_eval, const char *query)
}
break;
case '\\':
+ next_c= *(p+1);
if (escaped)
{
escaped = 0;
dynstr_append_mem(query_eval, p, 1);
}
- else
+ else if (next_c == '\\' || next_c == '$')
+ {
+ /* Set escaped only if next char is \ or $ */
escaped = 1;
+ }
+ else
+ dynstr_append_mem(query_eval, p, 1);
break;
default:
dynstr_append_mem(query_eval, p, 1);
@@ -609,6 +602,9 @@ static void free_used_memory()
free_defaults(default_argv);
mysql_server_end();
free_re();
+#ifdef __WIN__
+ free_win_path_patterns();
+#endif
DBUG_VOID_RETURN;
}
@@ -971,17 +967,7 @@ int do_require_manager(struct st_query *query __attribute__((unused)) )
}
#ifndef EMBEDDED_LIBRARY
-int do_server_start(struct st_query *q)
-{
- return do_server_op(q, "start");
-}
-
-int do_server_stop(struct st_query *q)
-{
- return do_server_op(q, "stop");
-}
-
-int do_server_op(struct st_query *q, const char *op)
+static int do_server_op(struct st_query *q, const char *op)
{
char *p= q->first_argument;
char com_buf[256], *com_p;
@@ -1011,6 +997,17 @@ int do_server_op(struct st_query *q, const char *op)
q->last_argument= p;
return 0;
}
+
+int do_server_start(struct st_query *q)
+{
+ return do_server_op(q, "start");
+}
+
+int do_server_stop(struct st_query *q)
+{
+ return do_server_op(q, "stop");
+}
+
#endif
@@ -1064,16 +1061,21 @@ int do_source(struct st_query *query)
expected error array, previously set with the --error command.
It can thus be used to execute a command that shall fail.
+ NOTE
+ Although mysqltest is executed from cygwin shell, the command will be
+ executed in "cmd.exe". Thus commands like "rm" etc can NOT be used, use
+ system for those commands.
*/
static void do_exec(struct st_query *query)
{
int error;
- DYNAMIC_STRING *ds= NULL;
char buf[1024];
FILE *res_file;
char *cmd= query->first_argument;
+ DYNAMIC_STRING ds_cmd;
DBUG_ENTER("do_exec");
+ DBUG_PRINT("enter", ("cmd: '%s'", cmd));
while (*cmd && my_isspace(charset_info, *cmd))
cmd++;
@@ -1081,24 +1083,28 @@ static void do_exec(struct st_query *query)
die("Missing argument in exec");
query->last_argument= query->end;
- DBUG_PRINT("info", ("Executing '%s'", cmd));
+ init_dynamic_string(&ds_cmd, 0, strlen(cmd)+256, 256);
+ /* Eval the command, thus replacing all environment variables */
+ do_eval(&ds_cmd, cmd);
+ cmd= ds_cmd.str;
+
+ DBUG_PRINT("info", ("Executing '%' as '%s'",
+ query->first_argument, cmd));
if (!(res_file= popen(cmd, "r")) && query->abort_on_error)
- die("popen(\"%s\", \"r\") failed", cmd);
+ die("popen(\"%s\", \"r\") failed", query->first_argument);
- if (disable_result_log)
+ while (fgets(buf, sizeof(buf), res_file))
{
- while (fgets(buf, sizeof(buf), res_file))
+ if (disable_result_log)
{
buf[strlen(buf)-1]=0;
DBUG_PRINT("exec_result",("%s", buf));
}
- }
- else
- {
- ds= &ds_res;
- while (fgets(buf, sizeof(buf), res_file))
- replace_dynstr_append(ds, buf);
+ else
+ {
+ replace_dynstr_append(&ds_res, buf);
+ }
}
error= pclose(res_file);
if (error != 0)
@@ -1107,7 +1113,7 @@ static void do_exec(struct st_query *query)
my_bool ok= 0;
if (query->abort_on_error)
- die("command \"%s\" failed", cmd);
+ die("command \"%s\" failed", query->first_argument);
DBUG_PRINT("info",
("error: %d, status: %d", error, status));
@@ -1122,19 +1128,19 @@ static void do_exec(struct st_query *query)
{
ok= 1;
DBUG_PRINT("info", ("command \"%s\" failed with expected error: %d",
- cmd, status));
+ query->first_argument, status));
}
}
if (!ok)
die("command \"%s\" failed with wrong error: %d",
- cmd, status);
+ query->first_argument, status);
}
else if (query->expected_errno[0].type == ERR_ERRNO &&
query->expected_errno[0].code.errnum != 0)
{
/* Error code we wanted was != 0, i.e. not an expected success */
die("command \"%s\" succeeded - should have failed with errno %d...",
- cmd, query->expected_errno[0].code.errnum);
+ query->first_argument, query->expected_errno[0].code.errnum);
}
free_replace();
@@ -1346,38 +1352,49 @@ int do_modify_var(struct st_query *query, const char *name,
}
-int do_system(struct st_query *q)
+/*
+
+ SYNOPSIS
+ do_system
+ command called command
+
+ DESCRIPTION
+ system <command>
+
+ Eval the query to expand any $variables in the command.
+ Execute the command withe the "system" command.
+
+ NOTE
+ If mysqltest is executed from cygwin shell, the command will be
+ executed in cygwin shell. Thus commands like "rm" etc can be used.
+ */
+
+int do_system(struct st_query *command)
{
- DYNAMIC_STRING *ds;
- char *p=q->first_argument;
- VAR v;
- var_init(&v, 0, 0, 0, 0);
- eval_expr(&v, p, 0); /* NULL terminated */
- ds= &ds_res;
+ DYNAMIC_STRING ds_cmd;
- if (v.str_val_len)
+ if (strlen(command->first_argument) == 0)
+ die("Missing arguments to system, nothing to do!");
+
+ init_dynamic_string(&ds_cmd, 0, strlen(command->first_argument) + 64, 256);
+
+ /* Eval the system command, thus replacing all environment variables */
+ do_eval(&ds_cmd, command->first_argument);
+
+ DBUG_PRINT("info", ("running system command '%s' as '%s'",
+ command->first_argument, ds_cmd.str));
+ if (system(ds_cmd.str))
{
- char expr_buf[1024];
- if ((uint)v.str_val_len > sizeof(expr_buf) - 1)
- v.str_val_len = sizeof(expr_buf) - 1;
- memcpy(expr_buf, v.str_val, v.str_val_len);
- expr_buf[v.str_val_len] = 0;
- DBUG_PRINT("info", ("running system command '%s'", expr_buf));
- if (system(expr_buf))
- {
- if (q->abort_on_error)
- die("system command '%s' failed", expr_buf);
+ if (command->abort_on_error)
+ die("system command '%s' failed", command->first_argument);
- /* If ! abort_on_error, log message and continue */
- dynstr_append(ds, "system command '");
- replace_dynstr_append(ds, expr_buf);
- dynstr_append(ds, "' failed\n");
- }
+ /* If ! abort_on_error, log message and continue */
+ dynstr_append(&ds_res, "system command '");
+ replace_dynstr_append(&ds_res, command->first_argument);
+ dynstr_append(&ds_res, "' failed\n");
}
- else
- die("Missing arguments to system, nothing to do!");
- var_free(&v);
- q->last_argument= q->end;
+
+ command->last_argument= command->end;
return 0;
}
@@ -1857,8 +1874,7 @@ static void get_replace(struct st_query *q)
if (!(glob_replace=init_replace((char**) from_array.typelib.type_names,
(char**) to_array.typelib.type_names,
(uint) from_array.typelib.count,
- word_end_chars)) ||
- initialize_replace_buffer())
+ word_end_chars)))
die("Can't initialize replace from '%s'", q->query);
free_pointer_array(&from_array);
free_pointer_array(&to_array);
@@ -1874,7 +1890,6 @@ void free_replace()
{
my_free((char*) glob_replace,MYF(0));
glob_replace=0;
- my_free(out_buff,MYF(MY_WME));
}
DBUG_VOID_RETURN;
}
@@ -2530,7 +2545,11 @@ int read_line(char *buf, int size)
/* Line counting is independent of state */
if (c == '\n')
+ {
cur_file->lineno++;
+ if (p != buf && *(p-1) == '\r')
+ *(p-1)=0;
+ }
switch(state) {
case R_NORMAL:
@@ -2700,7 +2719,7 @@ int read_query(struct st_query** q_ptr)
check_eol_junk(read_query_buf);
DBUG_RETURN(1);
}
-
+
DBUG_PRINT("info", ("query: %s", read_query_buf));
if (*p == '#')
{
@@ -3015,24 +3034,127 @@ void dump_result_to_reject_file(const char *record_file, char *buf, int size)
}
-/* Append the string to ds, with optional replace */
+#ifdef __WIN__
-static void replace_dynstr_append_mem(DYNAMIC_STRING *ds, const char *val,
- int len)
+DYNAMIC_ARRAY patterns;
+
+/*
+ init_win_path_patterns
+
+ DESCRIPTION
+ Setup string patterns that will be used to detect filenames that
+ needs to be converted from Win to Unix format
+
+*/
+
+static void init_win_path_patterns()
{
- if (glob_replace)
+ /* List of string patterns to match in order to find paths */
+ const char* paths[] = { "$MYSQL_TEST_DIR", "./test/", 0 };
+ int num_paths= 2;
+ int i;
+ char* p;
+
+ DBUG_ENTER("init_win_path_patterns");
+
+ my_init_dynamic_array(&patterns, sizeof(const char*), 16, 16);
+
+ /* Loop through all paths in the array */
+ for (i= 0; i < num_paths; i++)
{
- len=(int) replace_strings(glob_replace, &out_buff, &out_length, val);
- if (len == -1)
- die("Out of memory in replace");
- val=out_buff;
+ VAR* v;
+ if (*(paths[i]) == '$')
+ {
+ v= var_get(paths[i], 0, 0, 0);
+ p= my_strdup(v->str_val, MYF(MY_FAE));
+ }
+ else
+ p= my_strdup(paths[i], MYF(MY_FAE));
+
+ if (insert_dynamic(&patterns, (gptr) &p))
+ die(NullS);
+
+ DBUG_PRINT("info", ("p: %s", p));
+ while (*p)
+ {
+ if (*p == '/')
+ *p='\\';
+ p++;
+ }
}
- dynstr_append_mem(ds, val, len);
+ DBUG_VOID_RETURN;
}
+static void free_win_path_patterns()
+{
+ int i= 0;
+ for (i=0 ; i < patterns.elements ; i++)
+ {
+ const char** pattern= dynamic_element(&patterns, i, const char**);
+ my_free((gptr) *pattern, MYF(0));
+ }
+ delete_dynamic(&patterns);
+}
-/* Append zero-terminated string to ds, with optional replace */
+/*
+ fix_win_paths
+
+ DESCRIPTION
+ Search the string 'val' for the patterns that are known to be
+ strings that contain filenames. Convert all \ to / in the
+ filenames that are found.
+
+ Ex:
+ val = 'Error "c:\mysql\mysql-test\var\test\t1.frm" didn't exist'
+ => $MYSQL_TEST_DIR is found by strstr
+ => all \ from c:\mysql\m... until next space is converted into /
+*/
+static void fix_win_paths(const char* val, int len)
+{
+ uint i;
+ char *p;
+
+ DBUG_ENTER("fix_win_paths");
+ for (i= 0; i < patterns.elements; i++)
+ {
+ const char** pattern= dynamic_element(&patterns, i, const char**);
+ DBUG_PRINT("info", ("pattern: %s", *pattern));
+ /* Search for the path in string */
+ while ((p= strstr(val, *pattern)))
+ {
+ DBUG_PRINT("info", ("Found %s in val p: %s", *pattern, p));
+
+ while (*p && !my_isspace(charset_info, *p))
+ {
+ if (*p == '\\')
+ *p= '/';
+ p++;
+ }
+ DBUG_PRINT("info", ("Converted \\ to /, p: %s", p));
+ }
+ }
+ DBUG_PRINT("exit", (" val: %s, len: %d", val, len));
+ DBUG_VOID_RETURN;
+}
+#endif
+
+/* Append the string to ds, with optional replace */
+static void replace_dynstr_append_mem(DYNAMIC_STRING *ds,
+ const char *val, int len)
+{
+#ifdef __WIN__
+ fix_win_paths(val, len);
+#endif
+
+ if (glob_replace)
+ replace_strings_append(glob_replace, ds, val, len);
+ else
+ dynstr_append_mem(ds, val, len);
+}
+
+
+/* Append zero-terminated string to ds, with optional replace */
static void replace_dynstr_append(DYNAMIC_STRING *ds, const char *val)
{
replace_dynstr_append_mem(ds, val, strlen(val));
@@ -4353,6 +4475,10 @@ int main(int argc, char **argv)
init_var_hash(&cur_con->mysql);
+#ifdef __WIN__
+ init_win_path_patterns();
+#endif
+
/*
Initialize $mysql_errno with -1, so we can
- distinguish it from valid values ( >= 0 ) and
@@ -5414,60 +5540,57 @@ static uint replace_len(my_string str)
}
- /* Replace strings; Return length of result string */
-
-uint replace_strings(REPLACE *rep, my_string *start,uint *max_length,
- const char *from)
+/* Replace strings while appending to ds */
+void replace_strings_append(REPLACE *rep, DYNAMIC_STRING* ds,
+ const char *str, int len)
{
reg1 REPLACE *rep_pos;
reg2 REPLACE_STRING *rep_str;
- my_string to,end,pos,new_str;
+ const char *start, *from;
+ DBUG_ENTER("replace_strings_append");
- end=(to= *start) + *max_length-1;
+ start= from= str;
rep_pos=rep+1;
for (;;)
{
+ /* Loop through states */
+ DBUG_PRINT("info", ("Looping through states"));
while (!rep_pos->found)
- {
- rep_pos= rep_pos->next[(uchar) *from];
- if (to == end)
- {
- (*max_length)+=8192;
- if (!(new_str=my_realloc(*start,*max_length,MYF(MY_WME))))
- return (uint) -1;
- to=new_str+(to - *start);
- end=(*start=new_str)+ *max_length-1;
- }
- *to++= *from++;
- }
+ rep_pos= rep_pos->next[(uchar) *from++];
+
+ /* Does this state contain a string to be replaced */
if (!(rep_str = ((REPLACE_STRING*) rep_pos))->replace_string)
- return (uint) (to - *start)-1;
- to-=rep_str->to_offset;
- for (pos=rep_str->replace_string; *pos ; pos++)
{
- if (to == end)
- {
- (*max_length)*=2;
- if (!(new_str=my_realloc(*start,*max_length,MYF(MY_WME))))
- return (uint) -1;
- to=new_str+(to - *start);
- end=(*start=new_str)+ *max_length-1;
- }
- *to++= *pos;
+ /* No match found */
+ dynstr_append_mem(ds, start, from - start - 1);
+ DBUG_PRINT("exit", ("Found no more string to replace, appended: %s", start));
+ DBUG_VOID_RETURN;
}
+
+ /* Found a string that needs to be replaced */
+ DBUG_PRINT("info", ("found: %d, to_offset: %d, from_offset: %d, string: %s",
+ rep_str->found, rep_str->to_offset,
+ rep_str->from_offset, rep_str->replace_string));
+
+ /* Append part of original string before replace string */
+ dynstr_append_mem(ds, start, (from - rep_str->to_offset) - start);
+
+ /* Append replace string */
+ dynstr_append_mem(ds, rep_str->replace_string,
+ strlen(rep_str->replace_string));
+
if (!*(from-=rep_str->from_offset) && rep_pos->found != 2)
- return (uint) (to - *start);
+ {
+ /* End of from string */
+ DBUG_PRINT("exit", ("Found end of from string"));
+ DBUG_VOID_RETURN;
+ }
+ DBUG_ASSERT(from <= str+len);
+ start= from;
rep_pos=rep;
}
}
-static int initialize_replace_buffer(void)
-{
- out_length=8192;
- if (!(out_buff=my_malloc(out_length,MYF(MY_WME))))
- return(1);
- return 0;
-}
/****************************************************************************
Replace results for a column
@@ -5526,105 +5649,6 @@ static void get_replace_column(struct st_query *q)
q->last_argument= q->end;
}
-#if defined(__NETWARE__) || defined(__WIN__)
-/*
- Substitute environment variables with text.
-
- SYNOPSIS
- subst_env_var()
- arg String that should be substitute
-
- DESCRIPTION
- This function takes a string as an input and replaces the
- environment variables, that starts with '$' character, with it value.
-
- NOTES
- Return string must be freed with my_free()
-
- RETURN
- String with environment variables replaced.
-*/
-
-static char *subst_env_var(const char *str)
-{
- char *result;
- char *pos;
-
- result= pos= my_malloc(MAX_QUERY, MYF(MY_FAE));
- while (*str)
- {
- /*
- need this only when we want to provide the functionality of
- escaping through \ 'backslash'
- if ((result == pos && *str=='$') ||
- (result != pos && *str=='$' && str[-1] !='\\'))
- */
- if (*str == '$')
- {
- char env_var[256], *env_pos= env_var, *subst;
-
- /* Search for end of environment variable */
- for (str++;
- *str && !isspace(*str) && *str != '\\' && *str != '/' &&
- *str != '$';
- str++)
- *env_pos++= *str;
- *env_pos= 0;
-
- if (!(subst= getenv(env_var)))
- {
- my_free(result, MYF(0));
- die("MYSQLTEST.NLM: Environment variable %s is not defined",
- env_var);
- }
-
- /* get the string to be substitued for env_var */
- pos= strmov(pos, subst);
- /* Process delimiter in *str again */
- }
- else
- *pos++= *str++;
- }
- *pos= 0;
- return result;
-}
-
-
-/*
- popen replacement for Netware
-
- SYNPOSIS
- my_popen()
- name Command to execute (with possible env variables)
- mode Mode for popen.
-
- NOTES
- Environment variable expansion does not take place for popen function
- on NetWare, so we use this function to wrap around popen to do this.
-
- For the moment we ignore 'mode' and always use 'r0'
-
- RETURN
- # >= 0 File handle
- -1 Error
-*/
-
-#undef popen /* Remove wrapper */
-#ifdef __WIN__
-#define popen _popen /* redefine for windows */
-#endif
-
-FILE *my_popen(const char *cmd, const char *mode __attribute__((unused)))
-{
- char *subst_cmd;
- FILE *res_file;
-
- subst_cmd= subst_env_var(cmd);
- res_file= popen(subst_cmd, "r0");
- my_free(subst_cmd, MYF(0));
- return res_file;
-}
-#endif /* __NETWARE__ or __WIN__*/
diff --git a/mysql-test/mysql-test-run.pl b/mysql-test/mysql-test-run.pl
index fdee6d96d3a..9f78d7c2708 100755
--- a/mysql-test/mysql-test-run.pl
+++ b/mysql-test/mysql-test-run.pl
@@ -156,6 +156,7 @@ our $path_mysqltest_log;
our $path_slave_load_tmpdir; # What is this?!
our $path_my_basedir;
our $opt_vardir; # A path but set directly on cmd line
+our $opt_vardir_unix; # Always unix formatted opt_vardir
our $opt_tmpdir; # A path but set directly on cmd line
our $opt_usage;
@@ -640,7 +641,7 @@ sub command_line_setup () {
{
$opt_vardir= "$glob_mysql_test_dir/var";
}
-
+ $opt_vardir_unix= $opt_vardir;
# We make the path absolute, as the server will do a chdir() before usage
unless ( $opt_vardir =~ m,^/, or
($glob_win32 and $opt_vardir =~ m,^[a-z]:/,i) )
@@ -937,7 +938,8 @@ sub executable_setup () {
if ( $glob_win32 )
{
$path_client_bindir= mtr_path_exists("$glob_basedir/client_release",
- "$glob_basedir/bin");
+ "$glob_basedir/client_debug",
+ "$glob_basedir/bin",);
$exe_mysqld= mtr_exe_exists ("$path_client_bindir/mysqld-nt",
"$path_client_bindir/mysqld",
"$path_client_bindir/mysqld-debug",);
@@ -980,6 +982,7 @@ sub executable_setup () {
}
$exe_mysql_client_test=
mtr_exe_exists("$glob_basedir/tests/mysql_client_test",
+ "$path_client_bindir/mysql_client_test",
"/usr/bin/false");
}
$exe_mysqlcheck= mtr_exe_exists("$path_client_bindir/mysqlcheck");
@@ -1093,14 +1096,11 @@ sub environment_setup () {
$ENV{'LC_COLLATE'}= "C";
$ENV{'USE_RUNNING_SERVER'}= $glob_use_running_server;
$ENV{'MYSQL_TEST_DIR'}= $glob_mysql_test_dir;
- $ENV{'MYSQL_TEST_WINDIR'}= $glob_mysql_test_dir;
$ENV{'MASTER_MYSOCK'}= $master->[0]->{'path_mysock'};
- $ENV{'MASTER_WINMYSOCK'}= $master->[0]->{'path_mysock'};
$ENV{'MASTER_MYSOCK1'}= $master->[1]->{'path_mysock'};
$ENV{'MASTER_MYPORT'}= $master->[0]->{'path_myport'};
$ENV{'MASTER_MYPORT1'}= $master->[1]->{'path_myport'};
$ENV{'SLAVE_MYPORT'}= $slave->[0]->{'path_myport'};
-# $ENV{'MYSQL_TCP_PORT'}= '@MYSQL_TCP_PORT@'; # FIXME
$ENV{'MYSQL_TCP_PORT'}= 3306;
$ENV{'IM_PATH_PID'}= $instance_manager->{path_pid};
@@ -1112,16 +1112,6 @@ sub environment_setup () {
$ENV{'IM_MYSQLD2_PORT'}= $instance_manager->{instances}->[1]->{port};
$ENV{'IM_MYSQLD2_PATH_PID'}=$instance_manager->{instances}->[1]->{path_pid};
- if ( $glob_cygwin_perl )
- {
- foreach my $key ('MYSQL_TEST_WINDIR','MASTER_MYSOCK')
- {
- $ENV{$key}= `cygpath -w $ENV{$key}`;
- $ENV{$key} =~ s,\\,\\\\,g;
- chomp($ENV{$key});
- }
- }
-
# We are nice and report a bit about our settings
print "Using MTR_BUILD_THREAD = ",$ENV{MTR_BUILD_THREAD} || 0,"\n";
print "Using MASTER_MYPORT = $ENV{MASTER_MYPORT}\n";
@@ -2171,12 +2161,12 @@ sub mysqld_arguments ($$$$$) {
if ( $type eq 'master' )
{
mtr_add_arg($args, "%s--debug=d:t:i:A,%s/log/master%s.trace",
- $prefix, $opt_vardir, $sidx);
+ $prefix, $opt_vardir_unix, $sidx);
}
if ( $type eq 'slave' )
{
mtr_add_arg($args, "%s--debug=d:t:i:A,%s/log/slave%s.trace",
- $prefix, $opt_vardir, $sidx);
+ $prefix, $opt_vardir_unix, $sidx);
}
}
@@ -2506,7 +2496,7 @@ sub run_mysqltest ($) {
if ( $opt_debug )
{
$cmdline_mysqlcheck .=
- " --debug=d:t:A,$opt_vardir/log/mysqldump.trace";
+ " --debug=d:t:A,$opt_vardir_unix/log/mysqldump.trace";
}
my $cmdline_mysqldump= "$exe_mysqldump --no-defaults -uroot " .
@@ -2515,7 +2505,7 @@ sub run_mysqltest ($) {
if ( $opt_debug )
{
$cmdline_mysqldump .=
- " --debug=d:t:A,$opt_vardir/log/mysqldump.trace";
+ " --debug=d:t:A,$opt_vardir_unix/log/mysqldump.trace";
}
my $cmdline_mysqlimport= "$exe_mysqlimport -uroot " .
"--port=$master->[0]->{'path_myport'} " .
@@ -2523,7 +2513,7 @@ sub run_mysqltest ($) {
if ( $opt_debug )
{
$cmdline_mysqlimport .=
- " --debug=d:t:A,$opt_vardir/log/mysqlimport.trace";
+ " --debug=d:t:A,$opt_vardir_unix/log/mysqlimport.trace";
}
my $cmdline_mysqlshow= "$exe_mysqlshow -uroot " .
@@ -2532,7 +2522,7 @@ sub run_mysqltest ($) {
if ( $opt_debug )
{
$cmdline_mysqlshow .=
- " --debug=d:t:A,$opt_vardir/log/mysqlshow.trace";
+ " --debug=d:t:A,$opt_vardir_unix/log/mysqlshow.trace";
}
my $cmdline_mysqlbinlog=
@@ -2543,7 +2533,7 @@ sub run_mysqltest ($) {
if ( $opt_debug )
{
$cmdline_mysqlbinlog .=
- " --debug=d:t:A,$opt_vardir/log/mysqlbinlog.trace";
+ " --debug=d:t:A,$opt_vardir_unix/log/mysqlbinlog.trace";
}
my $cmdline_mysql=
@@ -2675,7 +2665,7 @@ sub run_mysqltest ($) {
if ( $opt_debug )
{
- mtr_add_arg($args, "--debug=d:t:A,%s/log/mysqltest.trace", $opt_vardir);
+ mtr_add_arg($args, "--debug=d:t:A,%s/log/mysqltest.trace", $opt_vardir_unix);
}
if ( $opt_ssl_supported )
diff --git a/mysql-test/r/mysqldump.result b/mysql-test/r/mysqldump.result
index 717d9f67774..1418d4d1be6 100644
--- a/mysql-test/r/mysqldump.result
+++ b/mysql-test/r/mysqldump.result
@@ -2330,10 +2330,10 @@ drop table t1;
set global time_zone=default;
set time_zone=default;
DROP TABLE IF EXISTS `t1 test`;
+DROP TABLE IF EXISTS `t2 test`;
CREATE TABLE `t1 test` (
`a1` int(11) default NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
-DROP TABLE IF EXISTS `t2 test`;
CREATE TABLE `t2 test` (
`a2` int(11) default NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
diff --git a/mysql-test/t/client_xml.test b/mysql-test/t/client_xml.test
index 58e9178ef3a..017b7a1569a 100644
--- a/mysql-test/t/client_xml.test
+++ b/mysql-test/t/client_xml.test
@@ -9,13 +9,13 @@ create table t1 (
`a>b` text
);
insert into t1 values (1, 2, 'a&b a<b a>b');
---exec $MYSQL --xml test -e 'select * from t1'
+--exec $MYSQL --xml test -e "select * from t1"
--exec $MYSQL_DUMP --xml --skip-create test
---exec $MYSQL --xml test -e 'select count(*) from t1'
---exec $MYSQL --xml test -e 'select 1 < 2 from dual'
---exec $MYSQL --xml test -e 'select 1 > 2 from dual'
---exec $MYSQL --xml test -e 'select 1 & 3 from dual'
---exec $MYSQL --xml test -e 'select null from dual'
+--exec $MYSQL --xml test -e "select count(*) from t1"
+--exec $MYSQL --xml test -e "select 1 < 2 from dual"
+--exec $MYSQL --xml test -e "select 1 > 2 from dual"
+--exec $MYSQL --xml test -e "select 1 & 3 from dual"
+--exec $MYSQL --xml test -e "select null from dual"
drop table t1;
diff --git a/mysql-test/t/mysql_client_test.test b/mysql-test/t/mysql_client_test.test
index 9cacb008d09..4899ef9cecc 100644
--- a/mysql-test/t/mysql_client_test.test
+++ b/mysql-test/t/mysql_client_test.test
@@ -6,7 +6,6 @@
# var/log/mysql_client_test.trace
--disable_result_log
---exec echo $MYSQL_CLIENT_TEST --getopt-ll-test=25600M
--exec $MYSQL_CLIENT_TEST --getopt-ll-test=25600M
# End of 4.1 tests
diff --git a/mysql-test/t/mysqltest.test b/mysql-test/t/mysqltest.test
index 5cf49185c30..50f8c02dbae 100644
--- a/mysql-test/t/mysqltest.test
+++ b/mysql-test/t/mysqltest.test
@@ -429,7 +429,7 @@ echo ;
# Illegal use of echo
--error 1
---exec echo "echo $;" | $MYSQL_TEST 2>&1
+--exec echo "echo \$;" | $MYSQL_TEST 2>&1
# ----------------------------------------------------------------------------
@@ -516,22 +516,22 @@ echo $novar1;
--exec echo "let ;" | $MYSQL_TEST 2>&1
--error 1
---exec echo "let $=hi;" | $MYSQL_TEST 2>&1
+--exec echo "let \$=hi;" | $MYSQL_TEST 2>&1
--error 1
--exec echo "let hi=hi;" | $MYSQL_TEST 2>&1
--error 1
---exec echo "let $1 hi;" | $MYSQL_TEST 2>&1
+--exec echo "let \$1 hi;" | $MYSQL_TEST 2>&1
--error 1
---exec echo "let $m hi;" | $MYSQL_TEST 2>&1
+--exec echo "let \$m hi;" | $MYSQL_TEST 2>&1
--error 1
---exec echo "let $hi;" | $MYSQL_TEST 2>&1
+--exec echo "let \$hi;" | $MYSQL_TEST 2>&1
--error 1
---exec echo "let $ hi;" | $MYSQL_TEST 2>&1
+--exec echo "let \$ hi;" | $MYSQL_TEST 2>&1
--error 1
--exec echo "let =hi;" | $MYSQL_TEST 2>&1
@@ -678,7 +678,7 @@ echo $i;
--error 1
--exec echo "inc i;" | $MYSQL_TEST 2>&1
--error 1
---exec echo "let \$i=100; inc \$i 1000; echo \$i;" | $MYSQL_TEST 2>&1
+--exec echo "let \\\$i=100; inc \\\$i 1000; echo \\\$i;" | $MYSQL_TEST 2>&1
inc $i; inc $i; inc $i; --echo $i
echo $i;
@@ -706,7 +706,7 @@ echo $d;
--error 1
--exec echo "dec i;" | $MYSQL_TEST 2>&1
--error 1
---exec echo "let \$i=100; dec \$i 1000; echo \$i;" | $MYSQL_TEST 2>&1
+--exec echo "let \\\$i=100; dec \\\$i 1000; echo \\\$i;" | $MYSQL_TEST 2>&1
# ----------------------------------------------------------------------------
@@ -761,11 +761,11 @@ while ($i)
--error 1
--exec echo "source include/mysqltest_while.inc;" | $MYSQL_TEST 2>&1
--error 1
---exec echo "while \$i;" | $MYSQL_TEST 2>&1
+--exec echo "while \\\$i;" | $MYSQL_TEST 2>&1
--error 1
---exec echo "while (\$i;" | $MYSQL_TEST 2>&1
+--exec echo "while (\\\$i;" | $MYSQL_TEST 2>&1
--error 1
---exec echo "let \$i=1; while (\$i) dec \$i;" | $MYSQL_TEST 2>&1
+--exec echo "let \\\$i=1; while (\\\$i) dec \\\$i;" | $MYSQL_TEST 2>&1
--error 1
--exec echo "};" | $MYSQL_TEST 2>&1
--error 1
@@ -877,22 +877,22 @@ select "a" as col1, "c" as col2;
--exec echo "connect (con1,localhost,root,,,,,SMTP POP);" | $MYSQL_TEST 2>&1
# Repeat connect/disconnect
---exec echo "let \$i=100;" > var/tmp/con.sql
---exec echo "while (\$i)" >> var/tmp/con.sql
+--exec echo "let \\\$i=100;" > var/tmp/con.sql
+--exec echo "while (\\\$i)" >> var/tmp/con.sql
--exec echo "{" >> var/tmp/con.sql
--exec echo " connect (test_con1,localhost,root,,); " >> var/tmp/con.sql
--exec echo " disconnect test_con1; " >> var/tmp/con.sql
---exec echo " dec \$i; " >> var/tmp/con.sql
+--exec echo " dec \\\$i; " >> var/tmp/con.sql
--exec echo "}" >> var/tmp/con.sql
--exec echo "source var/tmp/con.sql; echo OK;" | $MYSQL_TEST 2>&1
# Repeat connect/disconnect, exceed max number of connections
---exec echo "let \$i=200;" > var/tmp/con.sql
---exec echo "while (\$i)" >> var/tmp/con.sql
+--exec echo "let \\\$i=200;" > var/tmp/con.sql
+--exec echo "while (\\\$i)" >> var/tmp/con.sql
--exec echo "{" >> var/tmp/con.sql
--exec echo " connect (test_con1,localhost,root,,); " >> var/tmp/con.sql
--exec echo " disconnect test_con1; " >> var/tmp/con.sql
---exec echo " dec \$i; " >> var/tmp/con.sql
+--exec echo " dec \\\$i; " >> var/tmp/con.sql
--exec echo "}" >> var/tmp/con.sql
--error 1
--exec echo "source var/tmp/con.sql;" | $MYSQL_TEST 2>&1
@@ -1001,7 +1001,7 @@ select "this will be executed";
#
# Test that a test file that does not generate any output fails.
#
---exec echo "let \$i= 1;" > $MYSQL_TEST_DIR/var/tmp/query.sql
+--exec echo "let \\\$i= 1;" > $MYSQL_TEST_DIR/var/tmp/query.sql
--error 1
--exec $MYSQL_TEST -x var/tmp/query.sql 2>&1
diff --git a/mysql-test/t/rpl000015.test b/mysql-test/t/rpl000015.test
index a53049386af..df4bf6f977b 100644
--- a/mysql-test/t/rpl000015.test
+++ b/mysql-test/t/rpl000015.test
@@ -12,7 +12,7 @@ show slave status;
change master to master_host='127.0.0.1';
# The following needs to be cleaned up when change master is fixed
---replace_result $MASTER_MYPORT MASTER_PORT $MYSQL_TCP_PORT MASTER_PORT
+--replace_result $MYSQL_TCP_PORT MASTER_PORT
--replace_column 1 # 8 # 9 # 23 # 33 #
show slave status;
--replace_result $MASTER_MYPORT MASTER_PORT
diff --git a/mysql-test/t/system_mysql_db_fix.test b/mysql-test/t/system_mysql_db_fix.test
index 4621b2f50ef..0a2ab180806 100644
--- a/mysql-test/t/system_mysql_db_fix.test
+++ b/mysql-test/t/system_mysql_db_fix.test
@@ -77,7 +77,8 @@ type=ISAM;
INSERT INTO user VALUES ('localhost','root','','Y','Y','Y','Y','Y','Y','Y','Y','Y');
INSERT INTO user VALUES ('localhost','', '','N','N','N','N','N','N','N','N','N');
--- exec $MYSQL_FIX_SYSTEM_TABLES --database=test
+# Call the "shell script" $MYSQL_FIX_SYSTEM_TABLES using system
+-- system $MYSQL_FIX_SYSTEM_TABLES --database=test > /dev/null
-- enable_query_log
-- enable_result_log