mirror of
https://github.com/MariaDB/server.git
synced 2026-05-03 13:45:34 +02:00
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:
commit
f0fcc8c267
4 changed files with 64 additions and 8 deletions
|
|
@ -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:
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue