Hi, Alexander! Looks very good! Just one comment - instead of a special treatment for MYSQL_TYPE_NULL, I would try to set decimal=0 in Item_null. It already sets max_length=0, and I cannot think of any reason why we might want decimal to be 31 for it. On Mar 17, Alexander Barkov wrote:
Hi Sergei,
It appeared to be very easy to fix all hybrid functions to use the same attribute aggregation code, and therefore get rid of duplicate implementations for Item_func_case_abbreviation2 and Item_func_case.
This patch fixes: - The original problem reported in MDEV-9653
- An additional problem, see new comments about COALESCE and IF returning 1.1000000000000000000000000000000 instead of just 1.1
- A new problem that I found: MDEV-9752 Wrong data type for COALEASCE(?,1) in prepared statements
Note, the patch does not cover LEAST/GREATEST. They have another version of their own aggregation code. I don't want to touch them in this fix. Let's do them separately.
Note, I also removed Item_func_case::agg_str_lengths(). It was a dead code.
Regards, Sergei Chief Architect MariaDB and security@mariadb.org