Commit c9338ec6 authored by unknown's avatar unknown

Merge 192.168.0.7:mysql/mysql-5.0-maint

into  pilot.(none):/data/msvensson/mysql/mysql-5.0-maint


client/mysqltest.c:
  Auto merged
mysql-test/t/mysqltest.test:
  Auto merged
mysql-test/r/mysqltest.result:
  SCCS merged
parents f1da5af3 395d9167
...@@ -753,6 +753,15 @@ void check_command_args(struct st_command *command, ...@@ -753,6 +753,15 @@ void check_command_args(struct st_command *command,
command->first_word_len, command->query); command->first_word_len, command->query);
} }
/* Check for too many arguments passed */
ptr= command->last_argument;
while(ptr <= command->end)
{
if (*ptr && *ptr != ' ')
die("Extra argument '%s' passed to '%.*s'",
ptr, command->first_word_len, command->query);
ptr++;
}
DBUG_VOID_RETURN; DBUG_VOID_RETURN;
} }
...@@ -2691,8 +2700,22 @@ void read_until_delimiter(DYNAMIC_STRING *ds, ...@@ -2691,8 +2700,22 @@ void read_until_delimiter(DYNAMIC_STRING *ds,
c= my_getc(cur_file->file); c= my_getc(cur_file->file);
if (c == '\n') if (c == '\n')
{
cur_file->lineno++; cur_file->lineno++;
/* Skip newline from the same line as the command */
if (start_lineno == (cur_file->lineno - 1))
continue;
}
else if (start_lineno == cur_file->lineno)
{
/*
No characters except \n are allowed on
the same line as the command
*/
die("Trailing characters found after command");
}
if (feof(cur_file->file)) if (feof(cur_file->file))
die("End of file encountered before '%s' delimiter was found", die("End of file encountered before '%s' delimiter was found",
ds_delimiter->str); ds_delimiter->str);
...@@ -2953,8 +2976,10 @@ void do_send_quit(struct st_command *command) ...@@ -2953,8 +2976,10 @@ void do_send_quit(struct st_command *command)
void do_perl(struct st_command *command) void do_perl(struct st_command *command)
{ {
int error; int error;
char buf[FN_REFLEN]; File fd;
FILE *res_file; FILE *res_file;
char buf[FN_REFLEN];
char temp_file_path[FN_REFLEN];
static DYNAMIC_STRING ds_script; static DYNAMIC_STRING ds_script;
static DYNAMIC_STRING ds_delimiter; static DYNAMIC_STRING ds_delimiter;
const struct command_arg perl_args[] = { const struct command_arg perl_args[] = {
...@@ -2977,14 +3002,17 @@ void do_perl(struct st_command *command) ...@@ -2977,14 +3002,17 @@ void do_perl(struct st_command *command)
DBUG_PRINT("info", ("Executing perl: %s", ds_script.str)); DBUG_PRINT("info", ("Executing perl: %s", ds_script.str));
/* Format a name for a tmp .pl file that is unique for this process */ /* Create temporary file name */
my_snprintf(buf, sizeof(buf), "%s/tmp/tmp_%d.pl", if ((fd= create_temp_file(temp_file_path, getenv("MYSQLTEST_VARDIR"),
getenv("MYSQLTEST_VARDIR"), getpid()); "tmp", O_CREAT | O_SHARE | O_RDWR,
str_to_file(buf, ds_script.str, ds_script.length); MYF(MY_WME))) < 0)
die("Failed to create temporary file for perl command");
my_close(fd, MYF(0));
str_to_file(temp_file_path, ds_script.str, ds_script.length);
/* Format the perl <filename> command */ /* Format the "perl <filename>" command */
my_snprintf(buf, sizeof(buf), "perl %s/tmp/tmp_%d.pl", my_snprintf(buf, sizeof(buf), "perl %s", temp_file_path);
getenv("MYSQLTEST_VARDIR"), getpid());
if (!(res_file= popen(buf, "r")) && command->abort_on_error) if (!(res_file= popen(buf, "r")) && command->abort_on_error)
die("popen(\"%s\", \"r\") failed", buf); die("popen(\"%s\", \"r\") failed", buf);
...@@ -3002,6 +3030,10 @@ void do_perl(struct st_command *command) ...@@ -3002,6 +3030,10 @@ void do_perl(struct st_command *command)
} }
} }
error= pclose(res_file); error= pclose(res_file);
/* Remove the temporary file */
my_delete(temp_file_path, MYF(0));
handle_command_error(command, WEXITSTATUS(error)); handle_command_error(command, WEXITSTATUS(error));
dynstr_free(&ds_script); dynstr_free(&ds_script);
dynstr_free(&ds_delimiter); dynstr_free(&ds_delimiter);
......
...@@ -533,6 +533,7 @@ drop table t1; ...@@ -533,6 +533,7 @@ drop table t1;
mysqltest: At line 1: Missing required argument 'filename' to command 'remove_file' mysqltest: At line 1: Missing required argument 'filename' to command 'remove_file'
mysqltest: At line 1: Missing required argument 'filename' to command 'write_file' mysqltest: At line 1: Missing required argument 'filename' to command 'write_file'
mysqltest: At line 1: End of file encountered before 'EOF' delimiter was found mysqltest: At line 1: End of file encountered before 'EOF' delimiter was found
Content for test_file1
mysqltest: At line 1: File already exist: 'MYSQLTEST_VARDIR/tmp/test_file1.tmp' mysqltest: At line 1: File already exist: 'MYSQLTEST_VARDIR/tmp/test_file1.tmp'
Some data Some data
for cat_file command for cat_file command
......
...@@ -1574,6 +1574,7 @@ write_file $MYSQLTEST_VARDIR/tmp/test_file1.tmp; ...@@ -1574,6 +1574,7 @@ write_file $MYSQLTEST_VARDIR/tmp/test_file1.tmp;
Content for test_file1 Content for test_file1
EOF EOF
file_exists $MYSQLTEST_VARDIR/tmp/test_file1.tmp; file_exists $MYSQLTEST_VARDIR/tmp/test_file1.tmp;
cat_file $MYSQLTEST_VARDIR/tmp/test_file1.tmp;
remove_file $MYSQLTEST_VARDIR/tmp/test_file1.tmp; remove_file $MYSQLTEST_VARDIR/tmp/test_file1.tmp;
write_file $MYSQLTEST_VARDIR/tmp/test_file1.tmp END_DELIMITER; write_file $MYSQLTEST_VARDIR/tmp/test_file1.tmp END_DELIMITER;
......
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