Commit 2d185837 authored by unknown's avatar unknown

Merge neptunus.(none):/home/msvensson/mysql/bug17280/my50-bug17280

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


client/mysqltest.c:
  Auto merged
mysql-test/r/mysqltest.result:
  Auto merged
mysql-test/t/mysqltest.test:
  Auto merged
parents 83d1050e 3f25e323
...@@ -1384,38 +1384,40 @@ int do_system(struct st_query *q) ...@@ -1384,38 +1384,40 @@ int do_system(struct st_query *q)
/* /*
Print the content between echo and <delimiter> to result file. Print the content between echo and <delimiter> to result file.
If content is a variable, the variable value will be retrieved Evaluate all variables in the string before printing, allow
for variable names to be escaped using \
SYNOPSIS SYNOPSIS
do_echo() do_echo()
q called command q called command
DESCRIPTION DESCRIPTION
Usage 1:
echo text echo text
Print the text after echo until end of command to result file Print the text after echo until end of command to result file
Usage 2:
echo $<var_name> echo $<var_name>
Print the content of the variable <var_name> to result file Print the content of the variable <var_name> to result file
echo Some text $<var_name>
Print "Some text" plus the content of the variable <var_name> to
result file
echo Some text \$<var_name>
Print "Some text" plus $<var_name> to result file
*/ */
int do_echo(struct st_query *q) int do_echo(struct st_query *command)
{ {
char *p= q->first_argument; DYNAMIC_STRING *ds, ds_echo;
DYNAMIC_STRING *ds;
VAR v;
var_init(&v,0,0,0,0);
ds= &ds_res; ds= &ds_res;
eval_expr(&v, p, 0); /* NULL terminated */ init_dynamic_string(&ds_echo, "", 256, 256);
if (v.str_val_len) do_eval(&ds_echo, command->first_argument);
dynstr_append_mem(ds, v.str_val, v.str_val_len); dynstr_append_mem(ds, ds_echo.str, ds_echo.length);
dynstr_append_mem(ds, "\n", 1); dynstr_append_mem(ds, "\n", 1);
var_free(&v); dynstr_free(&ds_echo);
q->last_argument= q->end; command->last_argument= command->end;
return 0; return 0;
} }
......
...@@ -201,8 +201,14 @@ source database ...@@ -201,8 +201,14 @@ source database
- world''s most - world''s most
-- popular open -- popular open
# source database # source database
'$message' '# MySQL: The
"$message" - world''s most
-- popular open
# source database'
"# MySQL: The
- world''s most
-- popular open
# source database"
hej hej
hej hej
hej hej
...@@ -222,6 +228,15 @@ mysqltest: At line 1: Missing arguments to let ...@@ -222,6 +228,15 @@ mysqltest: At line 1: Missing arguments to let
mysqltest: At line 1: Missing variable name in let mysqltest: At line 1: Missing variable name in let
mysqltest: At line 1: Variable name in =hi does not start with '$' mysqltest: At line 1: Variable name in =hi does not start with '$'
mysqltest: At line 1: Missing assignment operator in let mysqltest: At line 1: Missing assignment operator in let
# Execute: --echo # <whatever> success: $success
# <whatever> success: 1
# Execute: echo # <whatever> success: $success ;
# <whatever> success: 1
# The next two variants work fine and expand the content of $success
# Execute: --echo $success
1
# Execute: echo $success ;
1
mysqltest: At line 1: Missing file name in source mysqltest: At line 1: Missing file name in source
mysqltest: At line 1: Could not open file ./non_existingFile mysqltest: At line 1: Could not open file ./non_existingFile
mysqltest: In included file "MYSQLTEST_VARDIR/tmp/recursive.sql": At line 1: Source directives are nesting too deep mysqltest: In included file "MYSQLTEST_VARDIR/tmp/recursive.sql": At line 1: Source directives are nesting too deep
......
...@@ -539,6 +539,19 @@ echo $novar1; ...@@ -539,6 +539,19 @@ echo $novar1;
--error 1 --error 1
--exec echo "let hi;" | $MYSQL_TEST 2>&1 --exec echo "let hi;" | $MYSQL_TEST 2>&1
# More advanced test for bug#17280
let $success= 1;
--echo # Execute: --echo # <whatever> success: \$success
--echo # <whatever> success: $success
--echo # Execute: echo # <whatever> success: \$success ;
echo # <whatever> success: $success ;
--echo # The next two variants work fine and expand the content of \$success
--echo # Execute: --echo \$success
--echo $success
--echo # Execute: echo \$success ;
echo $success ;
# ---------------------------------------------------------------------------- # ----------------------------------------------------------------------------
# Test to assign let from query # Test to assign let from query
# let $<var_name>=`<query>`; # let $<var_name>=`<query>`;
......
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