summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--client/mysqltest.c11
-rw-r--r--mysql-test/r/mysqltest.result3
-rw-r--r--mysql-test/t/mysqltest.test15
3 files changed, 26 insertions, 3 deletions
diff --git a/client/mysqltest.c b/client/mysqltest.c
index 170819e9a1e..0a1b3aa239c 100644
--- a/client/mysqltest.c
+++ b/client/mysqltest.c
@@ -1328,6 +1328,7 @@ void var_query_set(VAR *var, const char *query, const char** query_end)
MYSQL_RES *res;
MYSQL_ROW row;
MYSQL* mysql = &cur_con->mysql;
+ DYNAMIC_STRING ds_query;
DBUG_ENTER("var_query_set");
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 '`'");
++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)))
{
- *end = 0;
- die("Error running query '%s': %d %s", query,
+ die("Error running query '%s': %d %s", ds_query.str,
mysql_errno(mysql), mysql_error(mysql));
}
+ dynstr_free(&ds_query);
if ((row = mysql_fetch_row(res)) && row[0])
{
diff --git a/mysql-test/r/mysqltest.result b/mysql-test/r/mysqltest.result
index 71f1c7de4ed..ba37284e597 100644
--- a/mysql-test/r/mysqltest.result
+++ b/mysql-test/r/mysqltest.result
@@ -268,6 +268,9 @@ mysqltest: At line 1: Missing assignment operator in let
1
# Execute: echo $success ;
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: Could not open file ./non_existingFile
mysqltest: In included file "MYSQLTEST_VARDIR/tmp/recursive.sql": At line 1: Source directives are nesting too deep
diff --git a/mysql-test/t/mysqltest.test b/mysql-test/t/mysqltest.test
index 221ad5d5c6e..9a7139187b5 100644
--- a/mysql-test/t/mysqltest.test
+++ b/mysql-test/t/mysqltest.test
@@ -686,6 +686,21 @@ echo # <whatever> success: $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
# let $<var_name>=`<query>`;
# ----------------------------------------------------------------------------