Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
M
mariadb
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
mariadb
Commits
cac0931b
Commit
cac0931b
authored
Feb 15, 2006
by
msvensson@neptunus.(none)
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add possibility to have a negative expression in "if" and "while" in mysqltest
parent
01ddf969
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
78 additions
and
5 deletions
+78
-5
client/mysqltest.c
client/mysqltest.c
+45
-4
mysql-test/r/mysqltest.result
mysql-test/r/mysqltest.result
+3
-0
mysql-test/t/mysqltest.test
mysql-test/t/mysqltest.test
+30
-1
No files found.
client/mysqltest.c
View file @
cac0931b
...
...
@@ -2362,12 +2362,41 @@ int do_done(struct st_query *q)
}
/*
Process start of a "if" or "while" statement
SYNOPSIS
do_block()
cmd Type of block
q called command
DESCRIPTION
if ([!]<expr>)
{
<block statements>
}
while ([!]<expr>)
{
<block statements>
}
Evaluates the <expr> and if it evaluates to
greater than zero executes the following code block.
A '!' can be used before the <expr> to indicate it should
be executed if it evaluates to zero.
*/
int
do_block
(
enum
block_cmd
cmd
,
struct
st_query
*
q
)
{
char
*
p
=
q
->
first_argument
;
const
char
*
expr_start
,
*
expr_end
;
VAR
v
;
const
char
*
cmd_name
=
(
cmd
==
cmd_while
?
"while"
:
"if"
);
my_bool
not_expr
=
FALSE
;
DBUG_ENTER
(
"do_block"
);
DBUG_PRINT
(
"enter"
,
(
"%s"
,
cmd_name
));
/* Check stack overflow */
if
(
cur_block
==
block_stack_end
)
...
...
@@ -2388,8 +2417,16 @@ int do_block(enum block_cmd cmd, struct st_query* q)
/* Parse and evaluate test expression */
expr_start
=
strchr
(
p
,
'('
);
if
(
!
expr_start
)
if
(
!
expr_start
++
)
die
(
"missing '(' in %s"
,
cmd_name
);
/* Check for !<expr> */
if
(
*
expr_start
==
'!'
)
{
not_expr
=
TRUE
;
expr_start
++
;
/* Step past the '!' */
}
/* Find ending ')' */
expr_end
=
strrchr
(
expr_start
,
')'
);
if
(
!
expr_end
)
die
(
"missing ')' in %s"
,
cmd_name
);
...
...
@@ -2403,14 +2440,20 @@ int do_block(enum block_cmd cmd, struct st_query* q)
die
(
"Missing '{' after %s. Found
\"
%s
\"
"
,
cmd_name
,
p
);
var_init
(
&
v
,
0
,
0
,
0
,
0
);
eval_expr
(
&
v
,
++
expr_start
,
&
expr_end
);
eval_expr
(
&
v
,
expr_start
,
&
expr_end
);
/* Define inner block */
cur_block
++
;
cur_block
->
cmd
=
cmd
;
cur_block
->
ok
=
(
v
.
int_val
?
TRUE
:
FALSE
);
if
(
not_expr
)
cur_block
->
ok
=
!
cur_block
->
ok
;
DBUG_PRINT
(
"info"
,
(
"OK: %d"
,
cur_block
->
ok
));
var_free
(
&
v
);
DBUG_VOID_RETURN
;
return
0
;
}
...
...
@@ -3046,8 +3089,6 @@ static void replace_dynstr_append(DYNAMIC_STRING *ds, const char *val)
static
void
append_field
(
DYNAMIC_STRING
*
ds
,
uint
col_idx
,
MYSQL_FIELD
*
field
,
const
char
*
val
,
ulonglong
len
,
bool
is_null
)
{
char
buf
[
256
];
if
(
col_idx
<
max_replace_column
&&
replace_column
[
col_idx
])
{
val
=
replace_column
[
col_idx
];
...
...
mysql-test/r/mysqltest.result
View file @
cac0931b
...
...
@@ -309,7 +309,10 @@ test
test2
test3
test4
Counter is greater than 0, (counter=10)
Counter is not 0, (counter=0)
1
Testing while with not
mysqltest: In included file "./include/mysqltest_while.inc": At line 64: Nesting too deeply
mysqltest: At line 1: missing '(' in while
mysqltest: At line 1: missing ')' in while
...
...
mysql-test/t/mysqltest.test
View file @
cac0931b
...
...
@@ -742,6 +742,30 @@ echo test3stop
--
delimiter
;
echo
test4
;
# ----------------------------------------------------------------------------
# Test if
# ----------------------------------------------------------------------------
let
$counter
=
10
;
if
(
$counter
)
{
echo
Counter
is
greater
than
0
,
(
counter
=
10
);
}
if
(
!
$counter
)
{
echo
Counter
is
not
0
,
(
counter
=
10
);
}
let
$counter
=
0
;
if
(
$counter
)
{
echo
Counter
is
greater
than
0
,
(
counter
=
0
);
}
if
(
!
$counter
)
{
echo
Counter
is
not
0
,
(
counter
=
0
);
}
# ----------------------------------------------------------------------------
# Test while, { and }
# ----------------------------------------------------------------------------
...
...
@@ -755,7 +779,12 @@ while ($i)
# One liner
#let $i=1;while ($i){echo $i;dec $i;}
let
$i
=
0
;
while
(
!
$i
)
{
echo
Testing
while
with
not
;
inc
$i
;
}
# Exceed max nesting level
--
error
1
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment