summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorunknown <msvensson@neptunus.(none)>2006-03-06 22:05:39 +0100
committerunknown <msvensson@neptunus.(none)>2006-03-06 22:05:39 +0100
commit4a311f0a50a7e8a18a046def80cae1928164dc19 (patch)
treed61b943356f5f06f6ef7a90d567cf21cc7de5851
parent57839602acdaf93eb4d5076c94f75ce15deb46b8 (diff)
downloadmariadb-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.c43
-rw-r--r--mysql-test/r/mysqltest.result6
-rw-r--r--mysql-test/t/mysqltest.test52
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