Commit 20851e40 authored by Bjorn Munch's avatar Bjorn Munch

Bug #58412 mysqltest: allow quoting of strings in let and in if comparison

Stripping quotes in let was a bad idea, will not fix
Added code to strip quotes from rhs in comparisons
parent 08c9f317
...@@ -5678,6 +5678,17 @@ void do_block(enum block_cmd cmd, struct st_command* command) ...@@ -5678,6 +5678,17 @@ void do_block(enum block_cmd cmd, struct st_command* command)
while (my_isspace(charset_info, *curr_ptr)) while (my_isspace(charset_info, *curr_ptr))
curr_ptr++; curr_ptr++;
/* Strip off trailing white space */
while (my_isspace(charset_info, expr_end[-1]))
expr_end--;
/* strip off ' or " around the string */
if (*curr_ptr == '\'' || *curr_ptr == '"')
{
if (expr_end[-1] != *curr_ptr)
die("Unterminated string value");
curr_ptr++;
expr_end--;
}
VAR v2; VAR v2;
var_init(&v2,0,0,0,0); var_init(&v2,0,0,0,0);
eval_expr(&v2, curr_ptr, &expr_end); eval_expr(&v2, curr_ptr, &expr_end);
......
...@@ -36,8 +36,8 @@ let $ddl_cases= 41; ...@@ -36,8 +36,8 @@ let $ddl_cases= 41;
while ($ddl_cases >= 1) while ($ddl_cases >= 1)
{ {
--echo -b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b- --echo -b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
let $in_temporary= "no"; let $in_temporary= no;
let $ok= "yes"; let $ok= yes;
# #
# In SBR and MIXED modes, the commit event is usually the third event in the # In SBR and MIXED modes, the commit event is usually the third event in the
# binary log: # binary log:
...@@ -91,7 +91,7 @@ while ($ddl_cases >= 1) ...@@ -91,7 +91,7 @@ while ($ddl_cases >= 1)
{ {
# This seems to be related to epochs. # This seems to be related to epochs.
# We need to check this against an updated version or avoid it. # We need to check this against an updated version or avoid it.
let $ok= "no"; let $ok= no;
let $commit_event_row_number= 6; let $commit_event_row_number= 6;
} }
} }
...@@ -356,7 +356,7 @@ while ($ddl_cases >= 1) ...@@ -356,7 +356,7 @@ while ($ddl_cases >= 1)
if ($ddl_cases == 11) if ($ddl_cases == 11)
{ {
let $cmd= CREATE TEMPORARY TABLE tt_xx (a int); let $cmd= CREATE TEMPORARY TABLE tt_xx (a int);
let $in_temporary= "yes"; let $in_temporary= yes;
# In SBR and MIXED modes, the DDL statement is written to the binary log but # In SBR and MIXED modes, the DDL statement is written to the binary log but
# does not commit the current transaction. # does not commit the current transaction.
# #
...@@ -478,7 +478,7 @@ while ($ddl_cases >= 1) ...@@ -478,7 +478,7 @@ while ($ddl_cases >= 1)
if ($ddl_cases == 8) if ($ddl_cases == 8)
{ {
let $cmd= DROP TEMPORARY TABLE IF EXISTS new_tt_xx; let $cmd= DROP TEMPORARY TABLE IF EXISTS new_tt_xx;
let $in_temporary= "yes"; let $in_temporary= yes;
# #
# In SBR and MIXED modes, the DDL statement is written to the binary log # In SBR and MIXED modes, the DDL statement is written to the binary log
# but does not commit the current transaction: # but does not commit the current transaction:
...@@ -618,14 +618,14 @@ while ($ddl_cases >= 1) ...@@ -618,14 +618,14 @@ while ($ddl_cases >= 1)
# commit. The flag in_temporary is used to avoid aborting the test in such # commit. The flag in_temporary is used to avoid aborting the test in such
# cases. Thus we force the commit. # cases. Thus we force the commit.
# #
if ($in_temporary == "yes") if ($in_temporary == yes)
{ {
--eval COMMIT --eval COMMIT
} }
let $event_commit= query_get_value("SHOW BINLOG EVENTS FROM $first_binlog_position", Info, $commit_event_row_number); let $event_commit= query_get_value("SHOW BINLOG EVENTS FROM $first_binlog_position", Info, $commit_event_row_number);
if (`SELECT SUBSTRING("$event_commit",1,6) != "COMMIT"`) if (`SELECT SUBSTRING("$event_commit",1,6) != "COMMIT"`)
{ {
if ($ok == "yes") if ($ok == yes)
{ {
--echo it *does not* commit the current transaction. --echo it *does not* commit the current transaction.
--echo $cmd --echo $cmd
......
...@@ -423,7 +423,10 @@ while with string, only once ...@@ -423,7 +423,10 @@ while with string, only once
hello == hello hello == hello
hello == hello hello == hello
hello != goodbye hello != goodbye
'quoted' == ''quoted''
two words two words
'two words'
"two words"
two words are two words two words are two words
right answer right answer
anything goes anything goes
......
...@@ -1276,12 +1276,24 @@ if ($ifvar != goodbye) ...@@ -1276,12 +1276,24 @@ if ($ifvar != goodbye)
{ {
echo hello != goodbye; echo hello != goodbye;
} }
let $ifvar= 'quoted';
if ($ifvar == ''quoted'')
{
echo 'quoted' == ''quoted'';
}
let $ifvar= two words; let $ifvar= two words;
if ($ifvar == two words) if ($ifvar == two words)
{ {
echo two words; echo two words;
} }
if ($ifvar == 'two words')
{
echo 'two words';
}
if ($ifvar == "two words")
{
echo "two words";
}
if ($ifvar == `SELECT 'two words'`) if ($ifvar == `SELECT 'two words'`)
{ {
echo two words are two words; echo two words are two words;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment