=== modified file 'sql/item_cmpfunc.cc' --- sql/item_cmpfunc.cc 2013-06-27 06:50:06 +0000 +++ sql/item_cmpfunc.cc 2013-10-15 10:19:21 +0000 @@ -2663,38 +2663,78 @@ } else if (cmp_type == INT_RESULT) { - longlong a, b, value; - value= compare_as_temporal_times ? args[0]->val_time_temporal() : - compare_as_temporal_dates ? args[0]->val_date_temporal() : - args[0]->val_int(); - if ((null_value=args[0]->null_value)) - return 0; /* purecov: inspected */ - if (compare_as_temporal_times) - { - a= args[1]->val_time_temporal(); - b= args[2]->val_time_temporal(); - } - else if (compare_as_temporal_dates) - { - a= args[1]->val_date_temporal(); - b= args[2]->val_date_temporal(); - } - else - { - a= args[1]->val_int(); - b= args[2]->val_int(); - } - if (!args[1]->null_value && !args[2]->null_value) - return (longlong) ((value >= a && value <= b) != negated); - if (args[1]->null_value && args[2]->null_value) - null_value=1; - else if (args[1]->null_value) - { - null_value= value <= b; // not null if false range. - } - else - { - null_value= value >= a; + if (args[0]->unsigned_flag) + { + ulonglong a, b, value; + value= compare_as_temporal_times ? args[0]->val_time_temporal() : + compare_as_temporal_dates ? args[0]->val_date_temporal() : + args[0]->val_int(); + if ((null_value=args[0]->null_value)) + return 0; /* purecov: inspected */ + if (compare_as_temporal_times) + { + a= args[1]->val_time_temporal(); + b= args[2]->val_time_temporal(); + } + else if (compare_as_temporal_dates) + { + a= args[1]->val_date_temporal(); + b= args[2]->val_date_temporal(); + } + else + { + a= args[1]->val_int(); + b= args[2]->val_int(); + } + if (!args[1]->null_value && !args[2]->null_value) + return (longlong) ((value >= a && value <= b) != negated); + if (args[1]->null_value && args[2]->null_value) + null_value=1; + else if (args[1]->null_value) + { + null_value= value <= b; // not null if false range. + } + else + { + null_value= value >= a; + } + } + else + { + longlong a, b, value; + value= compare_as_temporal_times ? args[0]->val_time_temporal() : + compare_as_temporal_dates ? args[0]->val_date_temporal() : + args[0]->val_int(); + if ((null_value=args[0]->null_value)) + return 0; /* purecov: inspected */ + if (compare_as_temporal_times) + { + a= args[1]->val_time_temporal(); + b= args[2]->val_time_temporal(); + } + else if (compare_as_temporal_dates) + { + a= args[1]->val_date_temporal(); + b= args[2]->val_date_temporal(); + } + else + { + a= args[1]->val_int(); + b= args[2]->val_int(); + } + if (!args[1]->null_value && !args[2]->null_value) + return (longlong) ((value >= a && value <= b) != negated); + if (args[1]->null_value && args[2]->null_value) + null_value=1; + else if (args[1]->null_value) + { + null_value= value <= b; // not null if false range. + } + else + { + null_value= value >= a; + } + } } else if (cmp_type == DECIMAL_RESULT)