mirror of
https://github.com/MariaDB/server.git
synced 2025-08-07 00:04:31 +03:00
Merge 192.168.0.7:mysql/mysql-5.0-maint
into pilot.(none):/data/msvensson/mysql/mysql-5.0-maint
This commit is contained in:
@@ -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,
|
|||||||
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)
|
|||||||
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)
|
|||||||
|
|
||||||
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));
|
||||||
|
|
||||||
/* Format the perl <filename> command */
|
str_to_file(temp_file_path, ds_script.str, ds_script.length);
|
||||||
my_snprintf(buf, sizeof(buf), "perl %s/tmp/tmp_%d.pl",
|
|
||||||
getenv("MYSQLTEST_VARDIR"), getpid());
|
/* Format the "perl <filename>" command */
|
||||||
|
my_snprintf(buf, sizeof(buf), "perl %s", temp_file_path);
|
||||||
|
|
||||||
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)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
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;
|
|||||||
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;
|
|||||||
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;
|
||||||
|
Reference in New Issue
Block a user