summaryrefslogtreecommitdiff
path: root/sql
diff options
context:
space:
mode:
authorunknown <sergefp@mysql.com>2004-05-05 20:04:25 +0400
committerunknown <sergefp@mysql.com>2004-05-05 20:04:25 +0400
commite1fc542382faac3c1c19b82db7ad28849d5d0658 (patch)
tree00e01c4d1651e5b8f974e572b3b707db9557df9c /sql
parent393ed84c9a0cd98479aa8bf8c4de1236740639ea (diff)
downloadmariadb-git-e1fc542382faac3c1c19b82db7ad28849d5d0658.tar.gz
Make Item_param::val_int and Item_param::val_str follow the used convention and return 0 if null_value==1.
sql/item.h: Added comments about Item::valxx() behavior if Item's value is NULL.
Diffstat (limited to 'sql')
-rw-r--r--sql/item.cc4
-rw-r--r--sql/item.h1
2 files changed, 5 insertions, 0 deletions
diff --git a/sql/item.cc b/sql/item.cc
index e1cdfcf42c0..963f97b059f 100644
--- a/sql/item.cc
+++ b/sql/item.cc
@@ -745,6 +745,8 @@ double Item_param::val()
{
DBUG_ASSERT(value_is_set == 1);
int err;
+ if (null_value)
+ return 0.0;
switch (item_result_type) {
case STRING_RESULT:
return (double) my_strntod(str_value.charset(), (char*) str_value.ptr(),
@@ -761,6 +763,8 @@ longlong Item_param::val_int()
{
DBUG_ASSERT(value_is_set == 1);
int err;
+ if (null_value)
+ return 0;
switch (item_result_type) {
case STRING_RESULT:
return my_strntoll(str_value.charset(),
diff --git a/sql/item.h b/sql/item.h
index b756d824de0..780e2fcadac 100644
--- a/sql/item.h
+++ b/sql/item.h
@@ -157,6 +157,7 @@ public:
virtual Item_result result_type () const { return REAL_RESULT; }
virtual enum_field_types field_type() const;
virtual enum Type type() const =0;
+ /* valXXX methods must return NULL or 0 or 0.0 if null_value is set. */
virtual double val()=0;
virtual longlong val_int()=0;
virtual String *val_str(String*)=0;