diff options
author | unknown <msvensson@neptunus.(none)> | 2006-03-06 22:05:39 +0100 |
---|---|---|
committer | unknown <msvensson@neptunus.(none)> | 2006-03-06 22:05:39 +0100 |
commit | 4a311f0a50a7e8a18a046def80cae1928164dc19 (patch) | |
tree | d61b943356f5f06f6ef7a90d567cf21cc7de5851 | |
parent | 57839602acdaf93eb4d5076c94f75ce15deb46b8 (diff) | |
download | mariadb-git-4a311f0a50a7e8a18a046def80cae1928164dc19.tar.gz |
Win fixes
- Use tmp sh file both in system and popen
client/mysqltest.c:
Introduce common functions to handle unix emulation on windows using a temporary sh file.
Use it both in my_popen and my_system.
mysql-test/r/mysqltest.result:
Update test result
mysql-test/t/mysqltest.test:
Fix "windows paths" in three places that doesn't automatically get fixed
Uset the output file mysqltest.sql instead of con.sql as con is not an allowed filename on Windows
Use system for util functions
-rw-r--r-- | client/mysqltest.c | 43 | ||||
-rw-r--r-- | mysql-test/r/mysqltest.result | 6 | ||||
-rw-r--r-- | mysql-test/t/mysqltest.test | 52 |
3 files changed, 66 insertions, 35 deletions
diff --git a/client/mysqltest.c b/client/mysqltest.c index 5836a109b6e..2486aab4c65 100644 --- a/client/mysqltest.c +++ b/client/mysqltest.c @@ -455,6 +455,7 @@ static void do_eval(DYNAMIC_STRING *query_eval, const char *query, static void str_to_file(const char *fname, char *str, int size); #ifdef __WIN__ +static void free_tmp_sh_file(); static void free_win_path_patterns(); #endif @@ -604,6 +605,7 @@ static void free_used_memory() mysql_server_end(); free_re(); #ifdef __WIN__ + free_tmp_sh_file(); free_win_path_patterns(); #endif DBUG_VOID_RETURN; @@ -1046,6 +1048,35 @@ int do_source(struct st_query *query) 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)); +} + + +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. @@ -1092,7 +1123,7 @@ static void do_exec(struct st_query *query) DBUG_PRINT("info", ("Executing '%s' as '%s'", 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); while (fgets(buf, sizeof(buf), res_file)) @@ -1365,15 +1396,9 @@ int do_modify_var(struct st_query *query, const char *name, int my_system(DYNAMIC_STRING* ds_cmd) { #ifdef __WIN__ - /* Dump the command into a sh script file and execute with "sh" */ - 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); + /* Dump the command into a sh script file and execute with system */ str_to_file(tmp_sh_name, ds_cmd->str, ds_cmd->length); - err= system(tmp_sh_cmd); - my_delete(tmp_sh_name, MYF(0)); - return err; + return system(tmp_sh_cmd); #else return system(ds_cmd->str); #endif diff --git a/mysql-test/r/mysqltest.result b/mysql-test/r/mysqltest.result index 9512a99e35e..d6b635ce6da 100644 --- a/mysql-test/r/mysqltest.result +++ b/mysql-test/r/mysqltest.result @@ -379,9 +379,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 option to connect: SMTP 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/con.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 7: Connection limit exhausted - increase MAX_CONS in mysqltest.c +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/mysqltest.sql": At line 2: Connection test_con1 already exists connect(localhost,root,,test,MASTER_PORT,MASTER_SOCKET); Output from mysqltest-x.inc Output from mysqltest-x.inc diff --git a/mysql-test/t/mysqltest.test b/mysql-test/t/mysqltest.test index f28df916ca1..a93aa24e812 100644 --- a/mysql-test/t/mysqltest.test +++ b/mysql-test/t/mysqltest.test @@ -599,6 +599,8 @@ echo $var3_var3; --error 1 --exec echo "source ;" | $MYSQL_TEST 2>&1 +# Fix win paths +--replace_result \\ / --error 1 --exec echo "source non_existingFile;" | $MYSQL_TEST 2>&1 @@ -806,6 +808,8 @@ while (!$i) } # Exceed max nesting level +# Fix win path +--replace_result \\ / --error 1 --exec echo "source include/mysqltest_while.inc;" | $MYSQL_TEST 2>&1 --error 1 @@ -925,41 +929,41 @@ 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;" > $MYSQLTEST_VARDIR/tmp/con.sql ---exec echo "while (\$i)" >> $MYSQLTEST_VARDIR/tmp/con.sql ---exec echo "{" >> $MYSQLTEST_VARDIR/tmp/con.sql ---exec echo " connect (test_con1,localhost,root,,); " >> $MYSQLTEST_VARDIR/tmp/con.sql ---exec echo " disconnect test_con1; " >> $MYSQLTEST_VARDIR/tmp/con.sql ---exec echo " dec \$i; " >> $MYSQLTEST_VARDIR/tmp/con.sql ---exec echo "}" >> $MYSQLTEST_VARDIR/tmp/con.sql ---exec echo "source $MYSQLTEST_VARDIR/tmp/con.sql; echo OK;" | $MYSQL_TEST 2>&1 +--system echo "let \$i=100;" > $MYSQLTEST_VARDIR/tmp/mysqltest.sql +--system echo "while (\$i)" >> $MYSQLTEST_VARDIR/tmp/mysqltest.sql +--system echo "{" >> $MYSQLTEST_VARDIR/tmp/mysqltest.sql +--system echo " connect (test_con1,localhost,root,,); " >> $MYSQLTEST_VARDIR/tmp/mysqltest.sql +--system echo " disconnect test_con1; " >> $MYSQLTEST_VARDIR/tmp/mysqltest.sql +--system echo " dec \$i; " >> $MYSQLTEST_VARDIR/tmp/mysqltest.sql +--system echo "}" >> $MYSQLTEST_VARDIR/tmp/mysqltest.sql +--exec echo "source $MYSQLTEST_VARDIR/tmp/mysqltest.sql; echo OK;" | $MYSQL_TEST 2>&1 # Repeat connect/disconnect, exceed max number of connections ---exec echo "let \$i=200;" > $MYSQLTEST_VARDIR/tmp/con.sql ---exec echo "while (\$i)" >> $MYSQLTEST_VARDIR/tmp/con.sql ---exec echo "{" >> $MYSQLTEST_VARDIR/tmp/con.sql ---exec echo " connect (test_con1,localhost,root,,); " >> $MYSQLTEST_VARDIR/tmp/con.sql ---exec echo " disconnect test_con1; " >> $MYSQLTEST_VARDIR/tmp/con.sql ---exec echo " dec \$i; " >> $MYSQLTEST_VARDIR/tmp/con.sql ---exec echo "}" >> $MYSQLTEST_VARDIR/tmp/con.sql +--system echo "let \$i=200;" > $MYSQLTEST_VARDIR/tmp/mysqltest.sql +--system echo "while (\$i)" >> $MYSQLTEST_VARDIR/tmp/mysqltest.sql +--system echo "{" >> $MYSQLTEST_VARDIR/tmp/mysqltest.sql +--system echo " connect (test_con1,localhost,root,,); " >> $MYSQLTEST_VARDIR/tmp/mysqltest.sql +--system echo " disconnect test_con1; " >> $MYSQLTEST_VARDIR/tmp/mysqltest.sql +--system echo " dec \$i; " >> $MYSQLTEST_VARDIR/tmp/mysqltest.sql +--system echo "}" >> $MYSQLTEST_VARDIR/tmp/mysqltest.sql --replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR --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 ---exec echo "connect (test_con1,localhost,root,,);" > $MYSQLTEST_VARDIR/tmp/con.sql ---exec echo "disconnect test_con1; " >> $MYSQLTEST_VARDIR/tmp/con.sql ---exec echo "connection test_con1;" >> $MYSQLTEST_VARDIR/tmp/con.sql +--system echo "connect (test_con1,localhost,root,,);" > $MYSQLTEST_VARDIR/tmp/mysqltest.sql +--system echo "disconnect test_con1; " >> $MYSQLTEST_VARDIR/tmp/mysqltest.sql +--system echo "connection test_con1;" >> $MYSQLTEST_VARDIR/tmp/mysqltest.sql --replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR --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 ---exec echo "connect (test_con1,localhost,root,,);" > $MYSQLTEST_VARDIR/tmp/con.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 +--system echo "connect (test_con1,localhost,root,,);" >> $MYSQLTEST_VARDIR/tmp/mysqltest.sql --replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR --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" --replace_result $MASTER_MYSOCK MASTER_SOCKET $MASTER_MYPORT MASTER_PORT @@ -977,6 +981,8 @@ connection con1; --exec $MYSQL_TEST < $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 +# Fix Win paths +--replace_result \\ / --error 1 --exec $MYSQL_TEST -x non_existing_file.inc 2>&1 |