summaryrefslogtreecommitdiff
path: root/sql/item_func.cc
diff options
context:
space:
mode:
authorunknown <jimw@mysql.com>2005-06-01 09:48:25 -0700
committerunknown <jimw@mysql.com>2005-06-01 09:48:25 -0700
commitf20c56a9e7cc12a65068392ee733fff2ff4b805a (patch)
tree0e2a4cd0776aae89279894b81f2357603834300d /sql/item_func.cc
parent853a55ad215db4f44bee4281de57054bf2f7da17 (diff)
downloadmariadb-git-f20c56a9e7cc12a65068392ee733fff2ff4b805a.tar.gz
Fix handling of NULL fields in FIELD(). (Bug #10944)
mysql-test/r/func_str.result: Update results mysql-test/t/func_str.test: Add regression tests sql/item_func.cc: Handle NULL as first argument to FIELD()
Diffstat (limited to 'sql/item_func.cc')
-rw-r--r--sql/item_func.cc12
1 files changed, 8 insertions, 4 deletions
diff --git a/sql/item_func.cc b/sql/item_func.cc
index 3c50e750b41..1300dc6faac 100644
--- a/sql/item_func.cc
+++ b/sql/item_func.cc
@@ -1488,6 +1488,10 @@ void Item_func_locate::print(String *str)
longlong Item_func_field::val_int()
{
DBUG_ASSERT(fixed == 1);
+
+ if (args[0]->null_value)
+ return 0;
+
if (cmp_type == STRING_RESULT)
{
String *field;
@@ -1505,8 +1509,8 @@ longlong Item_func_field::val_int()
longlong val= args[0]->val_int();
for (uint i=1; i < arg_count ; i++)
{
- if (val == args[i]->val_int())
- return (longlong) (i);
+ if (!args[i]->null_value && val == args[i]->val_int())
+ return (longlong) (i);
}
}
else
@@ -1514,8 +1518,8 @@ longlong Item_func_field::val_int()
double val= args[0]->val();
for (uint i=1; i < arg_count ; i++)
{
- if (val == args[i]->val())
- return (longlong) (i);
+ if (!args[i]->null_value && val == args[i]->val())
+ return (longlong) (i);
}
}
return 0;