Merge gleb.loc:/home/uchum/work/bk/PA/5.0-opt-31471

into  gleb.loc:/home/uchum/work/bk/5.1-opt


mysql-test/r/create.result:
  Auto merged
mysql-test/r/null.result:
  Auto merged
sql/item_cmpfunc.cc:
  Auto merged
This commit is contained in:
unknown 2007-10-11 23:09:08 +05:00
commit f0fcc8c267
4 changed files with 64 additions and 8 deletions

View file

@ -2075,10 +2075,20 @@ Item_func_ifnull::fix_length_and_dec()
agg_result_type(&hybrid_type, args, 2);
maybe_null=args[1]->maybe_null;
decimals= max(args[0]->decimals, args[1]->decimals);
max_length= (hybrid_type == DECIMAL_RESULT || hybrid_type == INT_RESULT) ?
(max(args[0]->max_length - args[0]->decimals,
args[1]->max_length - args[1]->decimals) + decimals) :
max(args[0]->max_length, args[1]->max_length);
unsigned_flag= args[0]->unsigned_flag && args[1]->unsigned_flag;
if (hybrid_type == DECIMAL_RESULT || hybrid_type == INT_RESULT)
{
int len0= args[0]->max_length - args[0]->decimals
- (args[0]->unsigned_flag ? 0 : 1);
int len1= args[1]->max_length - args[1]->decimals
- (args[1]->unsigned_flag ? 0 : 1);
max_length= max(len0, len1) + decimals + (unsigned_flag ? 0 : 1);
}
else
max_length= max(args[0]->max_length, args[1]->max_length);
switch (hybrid_type) {
case STRING_RESULT: