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
e67eb77b
Commit
e67eb77b
authored
May 04, 2002
by
unknown
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fixed bug in ISNULL(not_null_expression)
Docs/manual.texi: Changlelog
parent
10729adb
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
48 additions
and
21 deletions
+48
-21
Docs/manual.texi
Docs/manual.texi
+7
-2
mysql-test/r/func_isnull.result
mysql-test/r/func_isnull.result
+1
-0
mysql-test/t/func_isnull.test
mysql-test/t/func_isnull.test
+10
-0
sql/item_cmpfunc.cc
sql/item_cmpfunc.cc
+30
-19
No files found.
Docs/manual.texi
View file @
e67eb77b
...
...
@@ -46926,8 +46926,13 @@ Fixed core dump problem on OSF in @code{gethostbyname_r}.
@item
Fixed that underflowed decimal fields is not zero filled.
@item
@code{'+11111'} in overflow for @code{decimal(5,0) unsigned} columns,
Just sign will be dropped.
If we get an overflow when inserting @code{'+11111'} for
@code{decimal(5,0) unsigned} columns, we will just drop the sign.
@item
Fixed bug with @code{ISNULL(expression_which_cannot_be_null)}.
@item
Fixed host lookup bug in the glibc library that we used with the 3.23.50
Linux-x86 binaries.
@end itemize
@node News-3.23.50, News-3.23.49, News-3.23.51, News-3.23.x
mysql-test/r/func_isnull.result
0 → 100644
View file @
e67eb77b
id mydate
mysql-test/t/func_isnull.test
0 → 100644
View file @
e67eb77b
#
# test of ISNULL()
#
drop
table
if
exists
t1
;
create
table
t1
(
id
int
auto_increment
primary
key
not
null
,
mydate
date
not
null
);
insert
into
t1
values
(
0
,
"2002-05-01"
),(
0
,
"2002-05-01"
),(
0
,
"2002-05-01"
);
flush
tables
;
select
*
from
t1
where
isnull
(
to_days
(
mydate
));
drop
table
t1
;
sql/item_cmpfunc.cc
View file @
e67eb77b
...
...
@@ -25,9 +25,9 @@
#include <m_ctype.h>
/*
**
Test functions
**
These returns 0LL if false and 1LL if true and null if some arg is null
**
'AND' and 'OR' never return null
Test functions
These returns 0LL if false and 1LL if true and null if some arg is null
'AND' and 'OR' never return null
*/
longlong
Item_func_not
::
val_int
()
...
...
@@ -59,8 +59,10 @@ void Item_bool_func2::fix_length_and_dec()
{
max_length
=
1
;
/* As some compare functions are generated after sql_yacc,
we have to check for out of memory conditons here */
/*
As some compare functions are generated after sql_yacc,
we have to check for out of memory conditons here
*/
if
(
!
args
[
0
]
||
!
args
[
1
])
return
;
// Make a special case of compare with fields to get nicer DATE comparisons
...
...
@@ -336,8 +338,10 @@ void Item_func_between::fix_length_and_dec()
{
max_length
=
1
;
/* As some compare functions are generated after sql_yacc,
we have to check for out of memory conditons here */
/*
As some compare functions are generated after sql_yacc,
we have to check for out of memory conditons here
*/
if
(
!
args
[
0
]
||
!
args
[
1
]
||
!
args
[
2
])
return
;
cmp_type
=
args
[
0
]
->
result_type
();
...
...
@@ -389,7 +393,7 @@ longlong Item_func_between::val_int()
{
longlong
value
=
args
[
0
]
->
val_int
(),
a
,
b
;
if
((
null_value
=
args
[
0
]
->
null_value
))
return
0
;
/* purecov: inspected */
return
0
;
/* purecov: inspected */
a
=
args
[
1
]
->
val_int
();
b
=
args
[
2
]
->
val_int
();
if
(
!
args
[
1
]
->
null_value
&&
!
args
[
2
]
->
null_value
)
...
...
@@ -409,7 +413,7 @@ longlong Item_func_between::val_int()
{
double
value
=
args
[
0
]
->
val
(),
a
,
b
;
if
((
null_value
=
args
[
0
]
->
null_value
))
return
0
;
/* purecov: inspected */
return
0
;
/* purecov: inspected */
a
=
args
[
1
]
->
val
();
b
=
args
[
2
]
->
val
();
if
(
!
args
[
1
]
->
null_value
&&
!
args
[
2
]
->
null_value
)
...
...
@@ -594,11 +598,10 @@ Item_func_nullif::val_str(String *str)
}
/*
** CASE expression
CASE expression
Return the matching ITEM or NULL if all compares (including else) failed
*/
/* Return the matching ITEM or NULL if all compares (including else) failed */
Item
*
Item_func_case
::
find_item
(
String
*
str
)
{
String
*
first_expr_str
,
*
tmp
;
...
...
@@ -786,7 +789,7 @@ void Item_func_case::print(String *str)
}
/*
**
Coalesce - return first not NULL argument.
Coalesce - return first not NULL argument.
*/
String
*
Item_func_coalesce
::
val_str
(
String
*
str
)
...
...
@@ -841,7 +844,7 @@ void Item_func_coalesce::fix_length_and_dec()
}
/****************************************************************************
** c
lasses and function for the IN operator
C
lasses and function for the IN operator
****************************************************************************/
static
int
cmp_longlong
(
longlong
*
a
,
longlong
*
b
)
...
...
@@ -914,7 +917,7 @@ byte *in_longlong::get_value(Item *item)
{
tmp
=
item
->
val_int
();
if
(
item
->
null_value
)
return
0
;
/* purecov: inspected */
return
0
;
/* purecov: inspected */
return
(
byte
*
)
&
tmp
;
}
...
...
@@ -932,7 +935,7 @@ byte *in_double::get_value(Item *item)
{
tmp
=
item
->
val
();
if
(
item
->
null_value
)
return
0
;
/* purecov: inspected */
return
0
;
/* purecov: inspected */
return
(
byte
*
)
&
tmp
;
}
...
...
@@ -1170,9 +1173,11 @@ longlong Item_cond_and::val_int()
{
if
(
item
->
val_int
()
==
0
)
{
/* TODO: In case of NULL, ANSI would require us to continue evaluation
until we get a FALSE value or run out of values; This would
require a lot of unnecessary evaluation, which we skip for now */
/*
TODO: In case of NULL, ANSI would require us to continue evaluation
until we get a FALSE value or run out of values; This would
require a lot of unnecessary evaluation, which we skip for now
*/
null_value
=
item
->
null_value
;
return
0
;
}
...
...
@@ -1201,6 +1206,12 @@ longlong Item_cond_or::val_int()
longlong
Item_func_isnull
::
val_int
()
{
/*
Handle optimization if the argument can't be null
This has to be here because of the test in update_used_tables().
*/
if
(
!
used_tables_cache
)
return
0
;
(
void
)
args
[
0
]
->
val
();
return
(
args
[
0
]
->
null_value
)
?
1
:
0
;
}
...
...
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