List:Commits« Previous MessageNext Message »
From:Bjorn Munch Date:November 19 2010 9:29am
Subject:bzr commit into mysql-5.1-bugteam branch (bjorn.munch:3511)
View as plain text  
#At file:///home/bm136801/my/merge-51/ based on revid:vasil.dimov@stripped

 3511 Bjorn Munch	2010-11-19 [merge]
      merge from 5.1-mtr

    modified:
      client/mysqltest.cc
      mysql-test/r/mysqltest.result
      mysql-test/t/mysqltest.test
=== modified file 'client/mysqltest.cc'
--- a/client/mysqltest.cc	2010-10-25 13:48:41 +0000
+++ b/client/mysqltest.cc	2010-11-19 09:29:08 +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;
@@ -5439,7 +5440,9 @@ void do_block(enum block_cmd cmd, struct
   if (*expr_start == '!')
   {
     not_expr= TRUE;
-    expr_start++; /* Step past the '!' */
+    expr_start++; /* Step past the '!', then any whitespace */
+    while (*expr_start && my_isspace(charset_info, *expr_start))
+      expr_start++;
   }
   /* Find ending ')' */
   expr_end= strrchr(expr_start, ')');

=== 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-17 15:05: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
@@ -398,7 +402,9 @@ true-inner
 true-inner again
 true-outer
 Counter is greater than 0, (counter=10)
+Counter should still be 10, is 10
 Counter is not 0, (counter=0)
+Not space var works
 Counter is true, (counter=alpha)
 Beta is true
 while with string, only once

=== 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-17 15:05: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
 
@@ -1131,6 +1138,11 @@ if (!$counter)
 {
   echo Counter is not 0, (counter=10);
 }
+if (! $counter)
+{
+  let $counter=5;
+}
+echo Counter should still be 10, is $counter;
 let $counter=0;
 if($counter)
 {
@@ -1140,6 +1152,10 @@ if (!$counter)
 {
   echo Counter is not 0, (counter=0);
 }
+if (! $counter)
+{
+  echo Not space var works;
+}
 
 # ----------------------------------------------------------------------------
 # Test if with some non-numerics

No bundle (reason: revision is a merge).
Thread
bzr commit into mysql-5.1-bugteam branch (bjorn.munch:3511) Bjorn Munch19 Nov