summaryrefslogtreecommitdiff
path: root/sql/item_cmpfunc.cc
diff options
context:
space:
mode:
authorkaa@polly.local <>2006-09-12 17:57:15 +0400
committerkaa@polly.local <>2006-09-12 17:57:15 +0400
commite03faff3e4b38ae1e488d784c86279858d102dcf (patch)
tree04bd01bf77e5e54c51d38c38513121bea33e0007 /sql/item_cmpfunc.cc
parentb5f67a642fff1a57249100a3d1096a2a0a81c3f8 (diff)
parent5df7611caa310a88666f7fd2a7f14bd23ca8e24a (diff)
downloadmariadb-git-e03faff3e4b38ae1e488d784c86279858d102dcf.tar.gz
Merge polly.local:/tmp/20924/bug20294/my41-bug20294
into polly.local:/tmp/20924/bug20294/my50-bug20294
Diffstat (limited to 'sql/item_cmpfunc.cc')
-rw-r--r--sql/item_cmpfunc.cc21
1 files changed, 9 insertions, 12 deletions
diff --git a/sql/item_cmpfunc.cc b/sql/item_cmpfunc.cc
index 98453899375..30ef80ee3f6 100644
--- a/sql/item_cmpfunc.cc
+++ b/sql/item_cmpfunc.cc
@@ -719,11 +719,7 @@ int Arg_comparator::compare_int_signed_unsigned()
if (!(*b)->null_value)
{
owner->null_value= 0;
- if (sval1 < 0 || (ulonglong)sval1 < uval2)
- return -1;
- if ((ulonglong)sval1 == uval2)
- return 0;
- return 1;
+ return ::compare_int_signed_unsigned(sval1, uval2);
}
}
owner->null_value= 1;
@@ -744,13 +740,7 @@ int Arg_comparator::compare_int_unsigned_signed()
if (!(*b)->null_value)
{
owner->null_value= 0;
- if (sval2 < 0)
- return 1;
- if (uval1 < (ulonglong)sval2)
- return -1;
- if (uval1 == (ulonglong)sval2)
- return 0;
- return 1;
+ return ::compare_int_unsigned_signed(uval1, sval2);
}
}
owner->null_value= 1;
@@ -1390,11 +1380,13 @@ Item_func_ifnull::int_op()
if (!args[0]->null_value)
{
null_value=0;
+ unsigned_flag= args[0]->unsigned_flag;
return value;
}
value=args[1]->val_int();
if ((null_value=args[1]->null_value))
return 0;
+ unsigned_flag= args[1]->unsigned_flag;
return value;
}
@@ -1545,6 +1537,7 @@ Item_func_if::val_int()
Item *arg= args[0]->val_bool() ? args[1] : args[2];
longlong value=arg->val_int();
null_value=arg->null_value;
+ unsigned_flag= arg->unsigned_flag;
return value;
}
@@ -1793,6 +1786,7 @@ longlong Item_func_case::val_int()
}
res=item->val_int();
null_value=item->null_value;
+ unsigned_flag= item->unsigned_flag;
return res;
}
@@ -1979,7 +1973,10 @@ longlong Item_func_coalesce::int_op()
{
longlong res=args[i]->val_int();
if (!args[i]->null_value)
+ {
+ unsigned_flag= args[i]->unsigned_flag;
return res;
+ }
}
null_value=1;
return 0;