• Alexander Barkov's avatar
    MDEV-12001 Split Item_func_round::fix_length_and_dec to virtual methods in Type_handler · 3f83801d
    Alexander Barkov authored
    This patch makes the following changes (according to the task description):
    - Adds Type_handler::Item_func_round_fix_length_and_dec().
    - Splits the code from Item_func_round::fix_length_and_dec() into new
      Item_func_round methods fix_arg_int(), fix_arg_decimal(), fix_arg_double().
    - Calls the new Item_func_round methods from the relevant implementations of
      Type_handler_xxx::Item_func_round_fix_length_and_dec().
    - Adds a new error message ER_ILLEGAL_PARAMETER_DATA_TYPE_FOR_OPERATION
    - Makes ROUND() return the new error for GEOMETRY
    
    Additionally:
    - Inherits Item_func_round directly from Item_func_numhybrid as it
      uses nothing from Item_func_num1.
    - Fixes "MDEV-12000 ROUND(expr,const_expr_returning_NULL) creates DOUBLE(0,0)".
      Now if args[1] returns NULL, the data type is set to DOUBLE with
      NOT_FIXED_DEC decimals instead of 0 decimals.
    3f83801d
sql_type.cc 72.6 KB