Loading client/mysqltest.c +15 −13 Original line number Diff line number Diff line Loading @@ -1384,38 +1384,40 @@ int do_system(struct st_query *q) /* 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 do_echo() q called command DESCRIPTION Usage 1: echo text Print the text after echo until end of command to result file Usage 2: echo $<var_name> 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; VAR v; var_init(&v,0,0,0,0); DYNAMIC_STRING *ds, ds_echo; ds= &ds_res; eval_expr(&v, p, 0); /* NULL terminated */ if (v.str_val_len) dynstr_append_mem(ds, v.str_val, v.str_val_len); init_dynamic_string(&ds_echo, "", 256, 256); do_eval(&ds_echo, command->first_argument); dynstr_append_mem(ds, ds_echo.str, ds_echo.length); dynstr_append_mem(ds, "\n", 1); var_free(&v); q->last_argument= q->end; dynstr_free(&ds_echo); command->last_argument= command->end; return 0; } Loading mysql-test/r/mysqltest.result +17 −2 Original line number Diff line number Diff line Loading @@ -201,8 +201,14 @@ source database - world''s most -- popular open # source database '$message' "$message" '# MySQL: The - world''s most -- popular open # source database' "# MySQL: The - world''s most -- popular open # source database" hej hej hej Loading @@ -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: Variable name in =hi does not start with '$' 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: Could not open file ./non_existingFile mysqltest: In included file "MYSQLTEST_VARDIR/tmp/recursive.sql": At line 1: Source directives are nesting too deep Loading mysql-test/t/mysqltest.test +13 −0 Original line number Diff line number Diff line Loading @@ -539,6 +539,19 @@ echo $novar1; --error 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 # let $<var_name>=`<query>`; Loading Loading
client/mysqltest.c +15 −13 Original line number Diff line number Diff line Loading @@ -1384,38 +1384,40 @@ int do_system(struct st_query *q) /* 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 do_echo() q called command DESCRIPTION Usage 1: echo text Print the text after echo until end of command to result file Usage 2: echo $<var_name> 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; VAR v; var_init(&v,0,0,0,0); DYNAMIC_STRING *ds, ds_echo; ds= &ds_res; eval_expr(&v, p, 0); /* NULL terminated */ if (v.str_val_len) dynstr_append_mem(ds, v.str_val, v.str_val_len); init_dynamic_string(&ds_echo, "", 256, 256); do_eval(&ds_echo, command->first_argument); dynstr_append_mem(ds, ds_echo.str, ds_echo.length); dynstr_append_mem(ds, "\n", 1); var_free(&v); q->last_argument= q->end; dynstr_free(&ds_echo); command->last_argument= command->end; return 0; } Loading
mysql-test/r/mysqltest.result +17 −2 Original line number Diff line number Diff line Loading @@ -201,8 +201,14 @@ source database - world''s most -- popular open # source database '$message' "$message" '# MySQL: The - world''s most -- popular open # source database' "# MySQL: The - world''s most -- popular open # source database" hej hej hej Loading @@ -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: Variable name in =hi does not start with '$' 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: Could not open file ./non_existingFile mysqltest: In included file "MYSQLTEST_VARDIR/tmp/recursive.sql": At line 1: Source directives are nesting too deep Loading
mysql-test/t/mysqltest.test +13 −0 Original line number Diff line number Diff line Loading @@ -539,6 +539,19 @@ echo $novar1; --error 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 # let $<var_name>=`<query>`; Loading