diff --git a/mysql-test/r/sp.result b/mysql-test/r/sp.result
index 05f9000bb333a3f0186ad922f2034cb37c6bfc6c..414eeada0dec404ef1882934c7b847770498aeab 100644
--- a/mysql-test/r/sp.result
+++ b/mysql-test/r/sp.result
@@ -7849,3 +7849,36 @@ c1	c2	count(c3)
 2012-03-01 01:00:00	3	1
 2012-03-01 02:00:00	3	1
 DROP PROCEDURE p1;
+#
+# LP bug#1002157 : testing stored function
+# bug#62125        result for null incorrectly yields 1292 warning.
+#
+DROP FUNCTION IF EXISTS f1;
+DROP FUNCTION IF EXISTS f2;
+DROP FUNCTION IF EXISTS f3;
+DROP FUNCTION IF EXISTS f4;
+CREATE FUNCTION f1() RETURNS VARCHAR(1)
+BEGIN RETURN 'X'; END;/
+CREATE FUNCTION f2() RETURNS CHAR(1)
+BEGIN RETURN 'X'; END;/
+CREATE FUNCTION f3() RETURNS VARCHAR(1)
+BEGIN RETURN NULL; END;/
+CREATE FUNCTION f4() RETURNS CHAR(1)
+BEGIN RETURN NULL; END;/
+SELECT f1() IS NULL;
+f1() IS NULL
+0
+SELECT f2() IS NULL;
+f2() IS NULL
+0
+SELECT f3() IS NULL;
+f3() IS NULL
+1
+SELECT f4() IS NULL;
+f4() IS NULL
+1
+DROP FUNCTION f1;
+DROP FUNCTION f2;
+DROP FUNCTION f3;
+DROP FUNCTION f4;
+# End of 5.5 test
diff --git a/mysql-test/t/sp.test b/mysql-test/t/sp.test
index 5d92fea0bf1bb29d9f81b6790a43f519703fafb0..084210401095db45c4445fb301f1c22ae102c826 100644
--- a/mysql-test/t/sp.test
+++ b/mysql-test/t/sp.test
@@ -9145,3 +9145,44 @@ CALL p1(2);
 CALL p1(1);
 
 DROP PROCEDURE p1; 
+
+--echo #
+--echo # LP bug#1002157 : testing stored function
+--echo # bug#62125        result for null incorrectly yields 1292 warning.
+--echo #
+
+--disable_warnings
+DROP FUNCTION IF EXISTS f1;
+DROP FUNCTION IF EXISTS f2;
+DROP FUNCTION IF EXISTS f3;
+DROP FUNCTION IF EXISTS f4;
+--enable_warnings
+
+delimiter /;
+
+CREATE FUNCTION f1() RETURNS VARCHAR(1)
+BEGIN RETURN 'X'; END;/
+
+CREATE FUNCTION f2() RETURNS CHAR(1)
+BEGIN RETURN 'X'; END;/
+
+CREATE FUNCTION f3() RETURNS VARCHAR(1)
+BEGIN RETURN NULL; END;/
+
+CREATE FUNCTION f4() RETURNS CHAR(1)
+BEGIN RETURN NULL; END;/
+
+delimiter ;/
+
+SELECT f1() IS NULL;
+SELECT f2() IS NULL;
+SELECT f3() IS NULL;
+SELECT f4() IS NULL;
+
+DROP FUNCTION f1;
+DROP FUNCTION f2;
+DROP FUNCTION f3;
+DROP FUNCTION f4;
+
+--echo # End of 5.5 test
+
diff --git a/sql/item_func.h b/sql/item_func.h
index f91107c54451800206e6ef6ec50a3f09ec6b103e..cb9c1929d7d0fd4df026773b60adffbd82978d29 100644
--- a/sql/item_func.h
+++ b/sql/item_func.h
@@ -1941,6 +1941,11 @@ class Item_func_sp :public Item_func
     return str;
   }
 
+  void update_null_value()
+  { 
+    execute();
+  }
+
   virtual bool change_context_processor(uchar *cntx)
     { context= (Name_resolution_context *)cntx; return FALSE; }
 
@@ -1955,6 +1960,7 @@ class Item_func_sp :public Item_func
   {
     return sp_result_field;
   }
+
   bool check_vcol_func_processor(uchar *int_arg) 
   {
     return trace_unsupported_by_check_vcol_func_processor(func_name());