mirror of
https://github.com/MariaDB/server.git
synced 2025-08-01 03:47:19 +03:00
Add expansion of $variables in "let from query",
"if with query" and "while with query"
This commit is contained in:
@ -1328,6 +1328,7 @@ void var_query_set(VAR *var, const char *query, const char** query_end)
|
|||||||
MYSQL_RES *res;
|
MYSQL_RES *res;
|
||||||
MYSQL_ROW row;
|
MYSQL_ROW row;
|
||||||
MYSQL* mysql = &cur_con->mysql;
|
MYSQL* mysql = &cur_con->mysql;
|
||||||
|
DYNAMIC_STRING ds_query;
|
||||||
DBUG_ENTER("var_query_set");
|
DBUG_ENTER("var_query_set");
|
||||||
LINT_INIT(res);
|
LINT_INIT(res);
|
||||||
|
|
||||||
@ -1337,13 +1338,17 @@ void var_query_set(VAR *var, const char *query, const char** query_end)
|
|||||||
die("Syntax error in query, missing '`'");
|
die("Syntax error in query, missing '`'");
|
||||||
++query;
|
++query;
|
||||||
|
|
||||||
if (mysql_real_query(mysql, query, (int)(end - query)) ||
|
/* Eval the query, thus replacing all environment variables */
|
||||||
|
init_dynamic_string(&ds_query, 0, (end - query) + 32, 256);
|
||||||
|
do_eval(&ds_query, query, end, FALSE);
|
||||||
|
|
||||||
|
if (mysql_real_query(mysql, ds_query.str, ds_query.length) ||
|
||||||
!(res = mysql_store_result(mysql)))
|
!(res = mysql_store_result(mysql)))
|
||||||
{
|
{
|
||||||
*end = 0;
|
die("Error running query '%s': %d %s", ds_query.str,
|
||||||
die("Error running query '%s': %d %s", query,
|
|
||||||
mysql_errno(mysql), mysql_error(mysql));
|
mysql_errno(mysql), mysql_error(mysql));
|
||||||
}
|
}
|
||||||
|
dynstr_free(&ds_query);
|
||||||
|
|
||||||
if ((row = mysql_fetch_row(res)) && row[0])
|
if ((row = mysql_fetch_row(res)) && row[0])
|
||||||
{
|
{
|
||||||
|
@ -268,6 +268,9 @@ mysqltest: At line 1: Missing assignment operator in let
|
|||||||
1
|
1
|
||||||
# Execute: echo $success ;
|
# Execute: echo $success ;
|
||||||
1
|
1
|
||||||
|
var2: content of variable 1
|
||||||
|
var3: content of variable 1 content of variable 1
|
||||||
|
length of var3 is longer than 0
|
||||||
mysqltest: At line 1: Missing required argument 'filename' to command 'source'
|
mysqltest: At line 1: Missing required argument 'filename' to command '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
|
||||||
|
@ -685,6 +685,21 @@ echo # <whatever> success: $success ;
|
|||||||
--echo # Execute: echo \$success ;
|
--echo # Execute: echo \$success ;
|
||||||
echo $success ;
|
echo $success ;
|
||||||
|
|
||||||
|
# ----------------------------------------------------------------------------
|
||||||
|
# Test let from query with $variable
|
||||||
|
# let $<var_name>=`<query with $variable>`;
|
||||||
|
# ----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
let $var1=content of variable 1;
|
||||||
|
let $var2= `select "$var1"`;
|
||||||
|
let $var3= `select concat("$var1", " ", "$var2")`;
|
||||||
|
echo var2: $var2;
|
||||||
|
echo var3: $var3;
|
||||||
|
if (`select length("$var3") > 0`)
|
||||||
|
{
|
||||||
|
echo length of var3 is longer than 0;
|
||||||
|
}
|
||||||
|
|
||||||
# ----------------------------------------------------------------------------
|
# ----------------------------------------------------------------------------
|
||||||
# Test to assign let from query
|
# Test to assign let from query
|
||||||
# let $<var_name>=`<query>`;
|
# let $<var_name>=`<query>`;
|
||||||
|
Reference in New Issue
Block a user