From 7c3376229e6ae94d7a88b8e10554d6a0c26ede9c Mon Sep 17 00:00:00 2001
From: "sergefp@mysql.com" <>
Date: Wed, 5 May 2004 20:04:25 +0400
Subject: [PATCH] Make Item_param::val_int and Item_param::val_str follow the
 used convention and return 0 if null_value==1.

---
 sql/item.cc | 4 ++++
 sql/item.h  | 1 +
 2 files changed, 5 insertions(+)

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 @@ class Item {
   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;
-- 
2.30.9