Hi Sergei, On 03/17/2016 01:14 PM, Sergei Golubchik wrote: > Hi, Alexander! > > On Mar 17, Alexander Barkov wrote: >>> >>> why is it NOT_FIXED_DEC? it seems to me that it has to be 0 here. >> >> Perhaps my example in the comments made you think that >> it happens in a very special case with CAST AS UNSIGNED. >> It also happens in simpler cases: >> >> SELECT CASE WHEN TRUE >> THEN COALESCE(NULL) >> ELSE 40 >> END; >> >> I guess I should fix the example to this ^^^. > > Yes, please. > > More questions: > > 1. Perhaps my_decimal_length_to_precision() then? It's used not only in > Item_func_case::agg_num_lengths. Quick grepping finds more > potentially dangerous places. For example > Item_decimal_typecast::print.
I could not find places where my_decimal_length_to_precision() can be called with (0,NOT_FIXED_DEC). Item_decimal_typecast::print() is safe. Item_decimal_typecast::max_length and Item_decimal_typecast::decimals are set to valid values in constructor. The latter cannot be NOT_FIXED_DEC. > > 2. Why my_decimal_length_to_precision is only used in Item_func_case? > How do other functions aggregate types? Perhaps CASE needs > to be changed to work like other similar functions do? There is some code duplication in hybrid type functions: - Item_func_case::agg_num_lengths() - Item_func::count_decimal_length(), which is called from Item_func_coalesce::fix_length_and_dec() - Item_func_case_abbreviation2::fix_length_and_dec() I earlier created a task for this for 10.2: https://jira.mariadb.org/browse/MDEV-9406 I found new bugs when replying to this letter: SELECT COALESCE(COALESCE(NULL), 1.1); SELECT IF(0, COALESCE(NULL), 1.1); return 1.1000000000000000000000000000000, which is wrong. I'll come up with a new patch soon. Thanks. > > Regards, > Sergei > Chief Architect MariaDB > and [email protected] > _______________________________________________ Mailing list: https://launchpad.net/~maria-developers Post to : [email protected] Unsubscribe : https://launchpad.net/~maria-developers More help : https://help.launchpad.net/ListHelp

