summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--mysql-test/r/sp.result6
-rw-r--r--mysql-test/t/sp.test17
-rw-r--r--sql/item_func.h12
3 files changed, 32 insertions, 3 deletions
diff --git a/mysql-test/r/sp.result b/mysql-test/r/sp.result
index 4cc59679ce5..a4a3968672f 100644
--- a/mysql-test/r/sp.result
+++ b/mysql-test/r/sp.result
@@ -2964,4 +2964,10 @@ select bug9102();
drop function bug9102|
bug9102()
a
+drop procedure if exists bug7648|
+create function bug7648() returns bit(8) return 'a'|
+select bug7648()|
+bug7648()
+a
+drop function bug7648|
drop table t1,t2;
diff --git a/mysql-test/t/sp.test b/mysql-test/t/sp.test
index 3934e8ad17a..6c833b14482 100644
--- a/mysql-test/t/sp.test
+++ b/mysql-test/t/sp.test
@@ -3627,16 +3627,29 @@ set global query_cache_size = @qcs1|
delete from t1|
drop function bug9902|
+
#
-# BUG#9102: New bug synopsis
+# BUG#9102: Stored proccedures: function which returns blob causes crash
#
--disable_warnings
drop function if exists bug9102|
--enable_warnings
create function bug9102() returns blob return 'a'|
-select bug9102();
+select bug9102()|
drop function bug9102|
+
+#
+# BUG#7648: Stored procedure crash when invoking a function that returns a bit
+#
+--disable_warnings
+drop procedure if exists bug7648|
+--enable_warnings
+create function bug7648() returns bit(8) return 'a'|
+select bug7648()|
+drop function bug7648|
+
+
#
# BUG#NNNN: New bug synopsis
#
diff --git a/sql/item_func.h b/sql/item_func.h
index 9bf21fa1aa3..b39786e5544 100644
--- a/sql/item_func.h
+++ b/sql/item_func.h
@@ -1308,7 +1308,17 @@ public:
longlong val_int()
{
- return (longlong)Item_func_sp::val_real();
+ Item *it;
+ longlong l;
+
+ if (execute(&it))
+ {
+ null_value= 1;
+ return 0LL;
+ }
+ l= it->val_int();
+ null_value= it->null_value;
+ return l;
}
double val_real()