Commit 05f3d171 authored by kent@mysql.com's avatar kent@mysql.com

Merge mysql.com:/Users/kent/mysql/bk/mysql-5.0-tmp

into mysql.com:/Users/kent/mysql/bk/mysql-5.1-new
parents bd4bfdd4 48bef140
...@@ -492,6 +492,7 @@ static void do_eval(DYNAMIC_STRING *query_eval, const char *query, ...@@ -492,6 +492,7 @@ static void do_eval(DYNAMIC_STRING *query_eval, const char *query,
static void str_to_file(const char *fname, char *str, int size); static void str_to_file(const char *fname, char *str, int size);
#ifdef __WIN__ #ifdef __WIN__
static void free_tmp_sh_file();
static void free_win_path_patterns(); static void free_win_path_patterns();
#endif #endif
...@@ -641,6 +642,7 @@ static void free_used_memory() ...@@ -641,6 +642,7 @@ static void free_used_memory()
mysql_server_end(); mysql_server_end();
free_re(); free_re();
#ifdef __WIN__ #ifdef __WIN__
free_tmp_sh_file();
free_win_path_patterns(); free_win_path_patterns();
#endif #endif
DBUG_VOID_RETURN; DBUG_VOID_RETURN;
...@@ -1106,6 +1108,35 @@ int do_source(struct st_query *query) ...@@ -1106,6 +1108,35 @@ int do_source(struct st_query *query)
return open_file(name); return open_file(name);
} }
#ifdef __WIN__
/* Variables used for temuprary sh files used for emulating Unix on Windows */
char tmp_sh_name[64], tmp_sh_cmd[70];
static void init_tmp_sh_file()
{
/* Format a name for the tmp sh file that is unique for this process */
my_snprintf(tmp_sh_name, sizeof(tmp_sh_name), "tmp_%d.sh", getpid());
/* Format the command to execute in order to run the script */
my_snprintf(tmp_sh_cmd, sizeof(tmp_sh_cmd), "sh %s", tmp_sh_name);
}
static void free_tmp_sh_file()
{
my_delete(tmp_sh_name, MYF(0));
}
#endif
FILE* my_popen(DYNAMIC_STRING* ds_cmd, const char* mode)
{
#ifdef __WIN__
/* Dump the command into a sh script file and execute with popen */
str_to_file(tmp_sh_name, ds_cmd->str, ds_cmd->length);
return popen(tmp_sh_cmd, mode);
#else
return popen(ds_cmd->str, mode);
#endif
}
/* /*
Execute given command. Execute given command.
...@@ -1152,7 +1183,7 @@ static void do_exec(struct st_query *query) ...@@ -1152,7 +1183,7 @@ static void do_exec(struct st_query *query)
DBUG_PRINT("info", ("Executing '%s' as '%s'", DBUG_PRINT("info", ("Executing '%s' as '%s'",
query->first_argument, cmd)); query->first_argument, cmd));
if (!(res_file= popen(cmd, "r")) && query->abort_on_error) if (!(res_file= my_popen(&ds_cmd, "r")) && query->abort_on_error)
die("popen(\"%s\", \"r\") failed", query->first_argument); die("popen(\"%s\", \"r\") failed", query->first_argument);
while (fgets(buf, sizeof(buf), res_file)) while (fgets(buf, sizeof(buf), res_file))
...@@ -1375,7 +1406,6 @@ enum enum_operator ...@@ -1375,7 +1406,6 @@ enum enum_operator
SYNOPSIS SYNOPSIS
do_modify_var() do_modify_var()
query called command query called command
name human readable name of operator
operator operation to perform on the var operator operation to perform on the var
DESCRIPTION DESCRIPTION
...@@ -1384,15 +1414,16 @@ enum enum_operator ...@@ -1384,15 +1414,16 @@ enum enum_operator
*/ */
int do_modify_var(struct st_query *query, const char *name, int do_modify_var(struct st_query *query,
enum enum_operator operator) enum enum_operator operator)
{ {
const char *p= query->first_argument; const char *p= query->first_argument;
VAR* v; VAR* v;
if (!*p) if (!*p)
die("Missing arguments to %s", name); die("Missing argument to %.*s", query->first_word_len, query->query);
if (*p != '$') if (*p != '$')
die("First argument to %s must be a variable (start with $)", name); die("The argument to %.*s must be a variable (start with $)",
query->first_word_len, query->query);
v= var_get(p, &p, 1, 0); v= var_get(p, &p, 1, 0);
switch (operator) { switch (operator) {
case DO_DEC: case DO_DEC:
...@@ -1402,7 +1433,7 @@ int do_modify_var(struct st_query *query, const char *name, ...@@ -1402,7 +1433,7 @@ int do_modify_var(struct st_query *query, const char *name,
v->int_val++; v->int_val++;
break; break;
default: default:
die("Invalid operator to do_operator"); die("Invalid operator to do_modify_var");
break; break;
} }
v->int_dirty= 1; v->int_dirty= 1;
...@@ -1425,15 +1456,9 @@ int do_modify_var(struct st_query *query, const char *name, ...@@ -1425,15 +1456,9 @@ int do_modify_var(struct st_query *query, const char *name,
int my_system(DYNAMIC_STRING* ds_cmd) int my_system(DYNAMIC_STRING* ds_cmd)
{ {
#ifdef __WIN__ #ifdef __WIN__
/* Dump the command into a sh script file and execute with "sh" */ /* Dump the command into a sh script file and execute with system */
int err;
char tmp_sh_name[64], tmp_sh_cmd[70];
my_snprintf(tmp_sh_name, sizeof(tmp_sh_name), "tmp_%d.sh", getpid());
my_snprintf(tmp_sh_cmd, sizeof(tmp_sh_cmd), "sh %s", tmp_sh_name);
str_to_file(tmp_sh_name, ds_cmd->str, ds_cmd->length); str_to_file(tmp_sh_name, ds_cmd->str, ds_cmd->length);
err= system(tmp_sh_cmd); return system(tmp_sh_cmd);
my_delete(tmp_sh_name, MYF(0));
return err;
#else #else
return system(ds_cmd->str); return system(ds_cmd->str);
#endif #endif
...@@ -1820,7 +1845,6 @@ int do_sleep(struct st_query *query, my_bool real_sleep) ...@@ -1820,7 +1845,6 @@ int do_sleep(struct st_query *query, my_bool real_sleep)
char *p= query->first_argument; char *p= query->first_argument;
char *sleep_start, *sleep_end= query->end; char *sleep_start, *sleep_end= query->end;
double sleep_val; double sleep_val;
const char *cmd = (real_sleep ? "real_sleep" : "sleep");
while (my_isspace(charset_info, *p)) while (my_isspace(charset_info, *p))
p++; p++;
...@@ -5123,6 +5147,7 @@ int main(int argc, char **argv) ...@@ -5123,6 +5147,7 @@ int main(int argc, char **argv)
init_var_hash(&cur_con->mysql); init_var_hash(&cur_con->mysql);
#ifdef __WIN__ #ifdef __WIN__
init_tmp_sh_file();
init_win_path_patterns(); init_win_path_patterns();
#endif #endif
...@@ -5181,8 +5206,8 @@ int main(int argc, char **argv) ...@@ -5181,8 +5206,8 @@ int main(int argc, char **argv)
case Q_SERVER_START: do_server_start(q); break; case Q_SERVER_START: do_server_start(q); break;
case Q_SERVER_STOP: do_server_stop(q); break; case Q_SERVER_STOP: do_server_stop(q); break;
#endif #endif
case Q_INC: do_modify_var(q, "inc", DO_INC); break; case Q_INC: do_modify_var(q, DO_INC); break;
case Q_DEC: do_modify_var(q, "dec", DO_DEC); break; case Q_DEC: do_modify_var(q, DO_DEC); break;
case Q_ECHO: do_echo(q); query_executed= 1; break; case Q_ECHO: do_echo(q); query_executed= 1; break;
case Q_SYSTEM: do_system(q); break; case Q_SYSTEM: do_system(q); break;
case Q_DELIMITER: case Q_DELIMITER:
......
...@@ -96,16 +96,7 @@ sub mtr_exe_exists (@) { ...@@ -96,16 +96,7 @@ sub mtr_exe_exists (@) {
map {$_.= ".exe"} @path if $::glob_win32; map {$_.= ".exe"} @path if $::glob_win32;
foreach my $path ( @path ) foreach my $path ( @path )
{ {
if ( -x $path ) return $path if -x $path;
{
if ( $::glob_cygwin_perl )
{
$path= `cygpath -w $path`;
# Chop off the \n that cygpath adds
$path=~ s/\n//;
}
return $path;
}
} }
if ( @path == 1 ) if ( @path == 1 )
{ {
......
...@@ -304,8 +304,8 @@ mysqltest: At line 1: Invalid argument to real_sleep "abc" ...@@ -304,8 +304,8 @@ mysqltest: At line 1: Invalid argument to real_sleep "abc"
101 101
hej hej
1 1
mysqltest: At line 1: Missing arguments to inc mysqltest: At line 1: Missing argument to inc
mysqltest: At line 1: First argument to inc must be a variable (start with $) mysqltest: At line 1: The argument to inc must be a variable (start with $)
mysqltest: At line 1: End of line junk detected: "1000" mysqltest: At line 1: End of line junk detected: "1000"
4 4
4 4
...@@ -314,8 +314,8 @@ mysqltest: At line 1: End of line junk detected: "1000" ...@@ -314,8 +314,8 @@ mysqltest: At line 1: End of line junk detected: "1000"
99 99
hej hej
-1 -1
mysqltest: At line 1: Missing arguments to dec mysqltest: At line 1: Missing argument to dec
mysqltest: At line 1: First argument to dec must be a variable (start with $) mysqltest: At line 1: The argument to dec must be a variable (start with $)
mysqltest: At line 1: End of line junk detected: "1000" mysqltest: At line 1: End of line junk detected: "1000"
mysqltest: At line 1: Missing arguments to system, nothing to do! mysqltest: At line 1: Missing arguments to system, nothing to do!
mysqltest: At line 1: Missing arguments to system, nothing to do! mysqltest: At line 1: Missing arguments to system, nothing to do!
...@@ -378,9 +378,9 @@ mysqltest: At line 1: Could not open connection 'con2': 1049 Unknown database 'i ...@@ -378,9 +378,9 @@ mysqltest: At line 1: Could not open connection 'con2': 1049 Unknown database 'i
mysqltest: At line 1: Illegal argument for port: 'illegal_port' mysqltest: At line 1: Illegal argument for port: 'illegal_port'
mysqltest: At line 1: Illegal option to connect: SMTP mysqltest: At line 1: Illegal option to connect: SMTP
OK OK
mysqltest: In included file "MYSQLTEST_VARDIR/tmp/con.sql": At line 7: Connection limit exhausted - increase MAX_CONS in mysqltest.c mysqltest: In included file "MYSQLTEST_VARDIR/tmp/mysqltest.sql": At line 7: Connection limit exhausted - increase MAX_CONS in mysqltest.c
mysqltest: In included file "MYSQLTEST_VARDIR/tmp/con.sql": At line 3: connection 'test_con1' not found in connection pool mysqltest: In included file "MYSQLTEST_VARDIR/tmp/mysqltest.sql": At line 3: connection 'test_con1' not found in connection pool
mysqltest: In included file "MYSQLTEST_VARDIR/tmp/con.sql": At line 2: Connection test_con1 already exists mysqltest: In included file "MYSQLTEST_VARDIR/tmp/mysqltest.sql": At line 2: Connection test_con1 already exists
connect(localhost,root,,test,MASTER_PORT,MASTER_SOCKET); connect(localhost,root,,test,MASTER_PORT,MASTER_SOCKET);
Output from mysqltest-x.inc Output from mysqltest-x.inc
Output from mysqltest-x.inc Output from mysqltest-x.inc
......
...@@ -596,6 +596,8 @@ echo $var3_var3; ...@@ -596,6 +596,8 @@ echo $var3_var3;
--error 1 --error 1
--exec echo "source ;" | $MYSQL_TEST 2>&1 --exec echo "source ;" | $MYSQL_TEST 2>&1
# Fix win paths
--replace_result \\ /
--error 1 --error 1
--exec echo "source non_existingFile;" | $MYSQL_TEST 2>&1 --exec echo "source non_existingFile;" | $MYSQL_TEST 2>&1
...@@ -803,6 +805,8 @@ while (!$i) ...@@ -803,6 +805,8 @@ while (!$i)
} }
# Exceed max nesting level # Exceed max nesting level
# Fix win path
--replace_result \\ /
--error 1 --error 1
--exec echo "source include/mysqltest_while.inc;" | $MYSQL_TEST 2>&1 --exec echo "source include/mysqltest_while.inc;" | $MYSQL_TEST 2>&1
--error 1 --error 1
...@@ -922,41 +926,41 @@ select "a" as col1, "c" as col2; ...@@ -922,41 +926,41 @@ select "a" as col1, "c" as col2;
--exec echo "connect (con1,localhost,root,,,,,SMTP POP);" | $MYSQL_TEST 2>&1 --exec echo "connect (con1,localhost,root,,,,,SMTP POP);" | $MYSQL_TEST 2>&1
# Repeat connect/disconnect # Repeat connect/disconnect
--exec echo "let \$i=100;" > $MYSQLTEST_VARDIR/tmp/con.sql --system echo "let \$i=100;" > $MYSQLTEST_VARDIR/tmp/mysqltest.sql
--exec echo "while (\$i)" >> $MYSQLTEST_VARDIR/tmp/con.sql --system echo "while (\$i)" >> $MYSQLTEST_VARDIR/tmp/mysqltest.sql
--exec echo "{" >> $MYSQLTEST_VARDIR/tmp/con.sql --system echo "{" >> $MYSQLTEST_VARDIR/tmp/mysqltest.sql
--exec echo " connect (test_con1,localhost,root,,); " >> $MYSQLTEST_VARDIR/tmp/con.sql --system echo " connect (test_con1,localhost,root,,); " >> $MYSQLTEST_VARDIR/tmp/mysqltest.sql
--exec echo " disconnect test_con1; " >> $MYSQLTEST_VARDIR/tmp/con.sql --system echo " disconnect test_con1; " >> $MYSQLTEST_VARDIR/tmp/mysqltest.sql
--exec echo " dec \$i; " >> $MYSQLTEST_VARDIR/tmp/con.sql --system echo " dec \$i; " >> $MYSQLTEST_VARDIR/tmp/mysqltest.sql
--exec echo "}" >> $MYSQLTEST_VARDIR/tmp/con.sql --system echo "}" >> $MYSQLTEST_VARDIR/tmp/mysqltest.sql
--exec echo "source $MYSQLTEST_VARDIR/tmp/con.sql; echo OK;" | $MYSQL_TEST 2>&1 --exec echo "source $MYSQLTEST_VARDIR/tmp/mysqltest.sql; echo OK;" | $MYSQL_TEST 2>&1
# Repeat connect/disconnect, exceed max number of connections # Repeat connect/disconnect, exceed max number of connections
--exec echo "let \$i=200;" > $MYSQLTEST_VARDIR/tmp/con.sql --system echo "let \$i=200;" > $MYSQLTEST_VARDIR/tmp/mysqltest.sql
--exec echo "while (\$i)" >> $MYSQLTEST_VARDIR/tmp/con.sql --system echo "while (\$i)" >> $MYSQLTEST_VARDIR/tmp/mysqltest.sql
--exec echo "{" >> $MYSQLTEST_VARDIR/tmp/con.sql --system echo "{" >> $MYSQLTEST_VARDIR/tmp/mysqltest.sql
--exec echo " connect (test_con1,localhost,root,,); " >> $MYSQLTEST_VARDIR/tmp/con.sql --system echo " connect (test_con1,localhost,root,,); " >> $MYSQLTEST_VARDIR/tmp/mysqltest.sql
--exec echo " disconnect test_con1; " >> $MYSQLTEST_VARDIR/tmp/con.sql --system echo " disconnect test_con1; " >> $MYSQLTEST_VARDIR/tmp/mysqltest.sql
--exec echo " dec \$i; " >> $MYSQLTEST_VARDIR/tmp/con.sql --system echo " dec \$i; " >> $MYSQLTEST_VARDIR/tmp/mysqltest.sql
--exec echo "}" >> $MYSQLTEST_VARDIR/tmp/con.sql --system echo "}" >> $MYSQLTEST_VARDIR/tmp/mysqltest.sql
--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR --replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
--error 1 --error 1
--exec echo "source $MYSQLTEST_VARDIR/tmp/con.sql;" | $MYSQL_TEST 2>&1 --exec echo "source $MYSQLTEST_VARDIR/tmp/mysqltest.sql;" | $MYSQL_TEST 2>&1
# Select disconnected connection # Select disconnected connection
--exec echo "connect (test_con1,localhost,root,,);" > $MYSQLTEST_VARDIR/tmp/con.sql --system echo "connect (test_con1,localhost,root,,);" > $MYSQLTEST_VARDIR/tmp/mysqltest.sql
--exec echo "disconnect test_con1; " >> $MYSQLTEST_VARDIR/tmp/con.sql --system echo "disconnect test_con1; " >> $MYSQLTEST_VARDIR/tmp/mysqltest.sql
--exec echo "connection test_con1;" >> $MYSQLTEST_VARDIR/tmp/con.sql --system echo "connection test_con1;" >> $MYSQLTEST_VARDIR/tmp/mysqltest.sql
--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR --replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
--error 1 --error 1
--exec echo "source $MYSQLTEST_VARDIR/tmp/con.sql;" | $MYSQL_TEST 2>&1 --exec echo "source $MYSQLTEST_VARDIR/tmp/mysqltest.sql;" | $MYSQL_TEST 2>&1
# Connection name already used # Connection name already used
--exec echo "connect (test_con1,localhost,root,,);" > $MYSQLTEST_VARDIR/tmp/con.sql --system echo "connect (test_con1,localhost,root,,);" > $MYSQLTEST_VARDIR/tmp/mysqltest.sql
--exec echo "connect (test_con1,localhost,root,,);" >> $MYSQLTEST_VARDIR/tmp/con.sql --system echo "connect (test_con1,localhost,root,,);" >> $MYSQLTEST_VARDIR/tmp/mysqltest.sql
--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR --replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
--error 1 --error 1
--exec echo "source $MYSQLTEST_VARDIR/tmp/con.sql;" | $MYSQL_TEST 2>&1 --exec echo "source $MYSQLTEST_VARDIR/tmp/mysqltest.sql;" | $MYSQL_TEST 2>&1
# connect when "disable_abort_on_error" caused "connection not found" # connect when "disable_abort_on_error" caused "connection not found"
--replace_result $MASTER_MYSOCK MASTER_SOCKET $MASTER_MYPORT MASTER_PORT --replace_result $MASTER_MYSOCK MASTER_SOCKET $MASTER_MYPORT MASTER_PORT
...@@ -974,6 +978,8 @@ connection con1; ...@@ -974,6 +978,8 @@ connection con1;
--exec $MYSQL_TEST < $MYSQL_TEST_DIR/include/mysqltest-x.inc --exec $MYSQL_TEST < $MYSQL_TEST_DIR/include/mysqltest-x.inc
--exec $MYSQL_TEST -x $MYSQL_TEST_DIR/include/mysqltest-x.inc --exec $MYSQL_TEST -x $MYSQL_TEST_DIR/include/mysqltest-x.inc
--exec $MYSQL_TEST --test_file=$MYSQL_TEST_DIR/include/mysqltest-x.inc --exec $MYSQL_TEST --test_file=$MYSQL_TEST_DIR/include/mysqltest-x.inc
# Fix Win paths
--replace_result \\ /
--error 1 --error 1
--exec $MYSQL_TEST -x non_existing_file.inc 2>&1 --exec $MYSQL_TEST -x non_existing_file.inc 2>&1
......
...@@ -362,9 +362,9 @@ CREATE TRIGGER trg5 BEFORE DELETE ON t1 ...@@ -362,9 +362,9 @@ CREATE TRIGGER trg5 BEFORE DELETE ON t1
FOR EACH ROW FOR EACH ROW
SET @a = 5; SET @a = 5;
--exec egrep -v '^definers=' $MYSQLTEST_VARDIR/master-data/mysqltest_db1/t1.TRG > $MYSQLTEST_VARDIR/tmp/t1.TRG --system grep -v '^definers=' $MYSQLTEST_VARDIR/master-data/mysqltest_db1/t1.TRG > $MYSQLTEST_VARDIR/tmp/t1.TRG
--exec echo "definers='' '@' '@abc@def@@' '@hostname' '@abcdef@@@hostname'" >> $MYSQLTEST_VARDIR/tmp/t1.TRG --system echo "definers='' '@' '@abc@def@@' '@hostname' '@abcdef@@@hostname'" >> $MYSQLTEST_VARDIR/tmp/t1.TRG
--exec mv $MYSQLTEST_VARDIR/tmp/t1.TRG $MYSQLTEST_VARDIR/master-data/mysqltest_db1/t1.TRG --system mv $MYSQLTEST_VARDIR/tmp/t1.TRG $MYSQLTEST_VARDIR/master-data/mysqltest_db1/t1.TRG
--echo --echo
......
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