From: Bjorn Munch Date: November 15 2010 1:24pm Subject: bzr commit into mysql-5.1-mtr branch (bjorn.munch:2950) Bug#58087 List-Archive: http://lists.mysql.com/commits/123900 X-Bug: 58087 Message-Id: <201011151324.oAFDOprS002499@khepri15.norway.sun.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============0419172141==" --===============0419172141== MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Content-Disposition: inline #At file:///home/bm136801/my/rekeval-51/ based on revid:bjorn.munch@stripped 2950 Bjorn Munch 2010-11-15 Bug #58087 mysqltest re-evaluates 'let' expressions infinitely Results from query is sent for evaluation Break recursion by asking for ` to be ignored 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-14 11:23:51 +0000 +++ b/client/mysqltest.cc 2010-11-15 13:23:02 +0000 @@ -471,7 +471,7 @@ VAR* var_init(VAR* v, const char *name, void var_free(void* v); 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); +void eval_expr(VAR* v, const char *p, const char** p_end, 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(); @@ -2233,7 +2233,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); dynstr_free(&result); } else @@ -2389,7 +2390,7 @@ void var_copy(VAR *dest, VAR *src) } -void eval_expr(VAR *v, const char *p, const char **p_end) +void eval_expr(VAR *v, const char *p, const char **p_end, bool backtick) { DBUG_ENTER("eval_expr"); @@ -2414,7 +2415,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-09-22 08:57:10 +0000 +++ b/mysql-test/r/mysqltest.result 2010-11-15 13:23:02 +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-10-19 11:56:30 +0000 +++ b/mysql-test/t/mysqltest.test 2010-11-15 13:23:02 +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 --===============0419172141== MIME-Version: 1.0 Content-Type: text/bzr-bundle; charset="us-ascii"; name="bzr/bjorn.munch@stripped" Content-Transfer-Encoding: 7bit Content-Disposition: inline # Bazaar merge directive format 2 (Bazaar 0.90) # revision_id: bjorn.munch@stripped # target_branch: file:///home/bm136801/my/rekeval-51/ # testament_sha1: 8c91ab7a39aff73f0fcf7435232952ad2741fa51 # timestamp: 2010-11-15 14:24:51 +0100 # base_revision_id: bjorn.munch@stripped\ # n3ucdshmr5ygeev5 # # Begin bundle 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 --===============0419172141==--