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
This commit is contained in:
parent
b2d1b1f897
commit
ca2ea5541e
@ -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;
|
|||||||
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)
|
|||||||
{
|
{
|
||||||
# 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)
|
|||||||
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)
|
|||||||
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)
|
|||||||
# 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
|
|||||||
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)
|
|||||||
{
|
{
|
||||||
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;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user