Commit e08efc15 authored by unknown's avatar unknown
Browse files

Merge bk-internal:/home/bk/mysql-5.0

into  neptunus.(none):/home/msvensson/mysql/mysql-5.0

parents b2676606 01a35c19
Loading
Loading
Loading
Loading
+40 −16
Original line number Diff line number Diff line
@@ -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))
@@ -1315,7 +1346,6 @@ enum enum_operator
  SYNOPSIS
    do_modify_var()
    query	called command
    name        human readable name of operator
    operator    operation to perform on the var

  DESCRIPTION
@@ -1324,15 +1354,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)
{
  const char *p= query->first_argument;
  VAR* v;
  if (!*p)
    die("Missing arguments to %s", name);
    die("Missing arguments to %.*s", query->first_word_len, query->query);
  if (*p != '$')
    die("First argument to %s must be a variable (start with $)", name);
    die("First argument to %.*s must be a variable (start with $)",
        query->first_word_len, query->query);
  v= var_get(p, &p, 1, 0);
  switch (operator) {
  case DO_DEC:
@@ -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
@@ -1672,7 +1697,6 @@ int do_sleep(struct st_query *query, my_bool real_sleep)
  char *p= query->first_argument;
  char *sleep_start, *sleep_end= query->end;
  double sleep_val;
  const char *cmd = (real_sleep ? "real_sleep" : "sleep");

  while (my_isspace(charset_info, *p))
    p++;
@@ -4592,8 +4616,8 @@ int main(int argc, char **argv)
      case Q_SERVER_START: do_server_start(q); break;
      case Q_SERVER_STOP: do_server_stop(q); break;
#endif
      case Q_INC: do_modify_var(q, "inc", DO_INC); break;
      case Q_DEC: do_modify_var(q, "dec", DO_DEC); break;
      case Q_INC: do_modify_var(q, DO_INC); break;
      case Q_DEC: do_modify_var(q, DO_DEC); break;
      case Q_ECHO: do_echo(q); query_executed= 1; break;
      case Q_SYSTEM: do_system(q); break;
      case Q_DELIMITER:
+1 −10
Original line number Diff line number Diff line
@@ -96,16 +96,7 @@ sub mtr_exe_exists (@) {
  map {$_.= ".exe"} @path if $::glob_win32;
  foreach my $path ( @path )
  {
    if ( -x $path )
    {
      if ( $::glob_cygwin_perl )
      {
        $path= `cygpath -w $path`;
	# Chop off the \n that cygpath adds
        $path=~ s/\n//;
      }
      return $path;
    }
    return $path if -x $path;
  }
  if ( @path == 1 )
  {
+3 −3
Original line number Diff line number Diff line
@@ -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
+29 −23
Original line number Diff line number Diff line
@@ -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

+3 −3
Original line number Diff line number Diff line
@@ -232,9 +232,9 @@ CREATE TRIGGER trg5 BEFORE DELETE ON t1
  FOR EACH ROW
    SET @a = 5;

--exec egrep -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
--exec mv $MYSQLTEST_VARDIR/tmp/t1.TRG $MYSQLTEST_VARDIR/master-data/mysqltest_db1/t1.TRG
--system grep -v '^definers=' $MYSQLTEST_VARDIR/master-data/mysqltest_db1/t1.TRG > $MYSQLTEST_VARDIR/tmp/t1.TRG
--system echo "definers='' '@' '@abc@def@@' '@hostname' '@abcdef@@@hostname'" >> $MYSQLTEST_VARDIR/tmp/t1.TRG
--system mv $MYSQLTEST_VARDIR/tmp/t1.TRG $MYSQLTEST_VARDIR/master-data/mysqltest_db1/t1.TRG

--echo