diff options
author | Michael Widenius <monty@askmonty.org> | 2010-01-15 17:27:55 +0200 |
---|---|---|
committer | Michael Widenius <monty@askmonty.org> | 2010-01-15 17:27:55 +0200 |
commit | d8ecbbe63471f958aa70443545b63d88d2db0230 (patch) | |
tree | 32a6f432080d9125b3619f8935eb5b1de00e861d /sql/item_func.cc | |
parent | d121e6630519a66eec7c953ee0eae623f592ce87 (diff) | |
parent | 6d69089845ed4c50df0ca8136a2cdacb8f2e1380 (diff) | |
download | mariadb-git-d8ecbbe63471f958aa70443545b63d88d2db0230.tar.gz |
Merge with MySQL 5.1.42
- Marked a couple of tests with --big
- Fixed xtradb/handler/ha_innodb.cc to call explain_filename()
storage/xtradb/handler/ha_innodb.cc:
Call explain_filename() to get proper names for partitioned tables
Diffstat (limited to 'sql/item_func.cc')
-rw-r--r-- | sql/item_func.cc | 39 |
1 files changed, 1 insertions, 38 deletions
diff --git a/sql/item_func.cc b/sql/item_func.cc index 45d874b9cd9..b99e2281641 100644 --- a/sql/item_func.cc +++ b/sql/item_func.cc @@ -450,45 +450,8 @@ Field *Item_func::tmp_table_field(TABLE *table) case STRING_RESULT: return make_string_field(table); case DECIMAL_RESULT: - { - uint8 dec= decimals; - uint8 intg= decimal_precision() - dec; - uint32 len= max_length; - - /* - Trying to put too many digits overall in a DECIMAL(prec,dec) - will always throw a warning. We must limit dec to - DECIMAL_MAX_SCALE however to prevent an assert() later. - */ - - if (dec > 0) - { - int overflow; - - dec= min(dec, DECIMAL_MAX_SCALE); - - /* - If the value still overflows the field with the corrected dec, - we'll throw out decimals rather than integers. This is still - bad and of course throws a truncation warning. - */ - - const int required_length= - my_decimal_precision_to_length(intg + dec, dec, - unsigned_flag); - - overflow= required_length - len; - - if (overflow > 0) - dec= max(0, dec - overflow); // too long, discard fract - else - /* Corrected value fits. */ - len= required_length; - } - - field= new Field_new_decimal(len, maybe_null, name, dec, unsigned_flag); + field= Field_new_decimal::create_from_item(this); break; - } case ROW_RESULT: default: // This case should never be chosen |