From: Bjorn Munch Date: November 17 2010 10:19am Subject: bzr commit into mysql-5.5-mtr branch (bjorn.munch:3116) List-Archive: http://lists.mysql.com/commits/124130 Message-Id: <201011171019.oAHAJjRL005049@khepri15.norway.sun.com> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit #At file:///home/bm136801/my/optimif-55/ based on revid:bjorn.munch@stripped 3116 Bjorn Munch 2010-11-17 [merge] upmerge 58087 modified: client/mysqltest.cc mysql-test/r/mysqltest.result mysql-test/t/mysqltest.test === modified file 'client/mysqltest.cc' --- a/client/mysqltest.cc 2010-11-15 09:51:59 +0000 +++ b/client/mysqltest.cc 2010-11-17 10:18:52 +0000 @@ -488,7 +488,7 @@ VAR* var_init(VAR* v, const char *name, VAR* var_get(const char *var_name, const char** var_name_end, my_bool raw, my_bool ignore_not_existing); void eval_expr(VAR* v, const char *p, const char** p_end, - bool open_end=false); + bool open_end=false, bool backtick=true); my_bool match_delimiter(int c, const char *delim, uint length); void dump_result_to_reject_file(char *buf, int size); void dump_warning_messages(); @@ -2338,7 +2338,8 @@ void var_query_set(VAR *var, const char dynstr_append_mem(&result, "\t", 1); } end= result.str + result.length-1; - eval_expr(var, result.str, (const char**) &end); + /* Evaluation should not recurse via backtick */ + eval_expr(var, result.str, (const char**) &end, false, false); dynstr_free(&result); } else @@ -2548,7 +2549,8 @@ void var_copy(VAR *dest, VAR *src) } -void eval_expr(VAR *v, const char *p, const char **p_end, bool open_end) +void eval_expr(VAR *v, const char *p, const char **p_end, + bool open_end, bool backtick) { DBUG_ENTER("eval_expr"); @@ -2573,7 +2575,7 @@ void eval_expr(VAR *v, const char *p, co DBUG_VOID_RETURN; } - if (*p == '`') + if (*p == '`' && backtick) { var_query_set(v, p, p_end); DBUG_VOID_RETURN; === modified file 'mysql-test/r/mysqltest.result' --- a/mysql-test/r/mysqltest.result 2010-11-10 08:42:14 +0000 +++ b/mysql-test/r/mysqltest.result 2010-11-17 10:18:52 +0000 @@ -308,6 +308,10 @@ var3 two columns with same name var4 from query that returns NULL var5 from query that returns no row failing query in let +create table t1 (a varchar(100)); +insert into t1 values ('`select 42`'); +`select 42` +drop table t1; mysqltest: At line 1: Error running query 'failing query': 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'failing query' at line 1 mysqltest: At line 1: Missing required argument 'filename' to command 'source' mysqltest: At line 1: Could not open './non_existingFile' for reading, errno: 2 === modified file 'mysql-test/t/mysqltest.test' --- a/mysql-test/t/mysqltest.test 2010-11-17 10:16:13 +0000 +++ b/mysql-test/t/mysqltest.test 2010-11-17 10:18:52 +0000 @@ -854,6 +854,13 @@ let $var2= `failing query`; echo $var2; EOF +create table t1 (a varchar(100)); +insert into t1 values ('`select 42`'); +let $a= `select * from t1`; +# This should output `select 42`, not evaluate it again to 42 +echo $a; +drop table t1; + --error 1 --exec $MYSQL_TEST < $MYSQLTEST_VARDIR/tmp/let.sql 2>&1 No bundle (reason: revision is a merge).