summaryrefslogtreecommitdiff
path: root/client
diff options
context:
space:
mode:
authorunknown <msvensson@pilot.blaudden>2007-04-04 15:09:12 +0200
committerunknown <msvensson@pilot.blaudden>2007-04-04 15:09:12 +0200
commit075d69548b0badb1a45b831d4c0b4df8253e8472 (patch)
treee8c3ffa14766a2c3903c8cbd358e81a3ef3f3003 /client
parent72098c7fffc5b89e2952bc785e59a9d60d06c382 (diff)
downloadmariadb-git-075d69548b0badb1a45b831d4c0b4df8253e8472.tar.gz
Add expansion of $variables in "let from query",
"if with query" and "while with query"
Diffstat (limited to 'client')
-rw-r--r--client/mysqltest.c11
1 files changed, 8 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])
{