diff options
author | kaa@polly.local <> | 2006-09-12 17:57:15 +0400 |
---|---|---|
committer | kaa@polly.local <> | 2006-09-12 17:57:15 +0400 |
commit | e03faff3e4b38ae1e488d784c86279858d102dcf (patch) | |
tree | 04bd01bf77e5e54c51d38c38513121bea33e0007 /sql/item_cmpfunc.cc | |
parent | b5f67a642fff1a57249100a3d1096a2a0a81c3f8 (diff) | |
parent | 5df7611caa310a88666f7fd2a7f14bd23ca8e24a (diff) | |
download | mariadb-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.cc | 21 |
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; |