• Alexander Barkov's avatar
    MDEV-13864 (partial) Change Item_func_case to store the predicant in args[0] · e12390a3
    Alexander Barkov authored
    This is a preparatory step for MDEV-13864.
    It does not change behavior in any ways. It simply splits methods into smaller peaces.
    The intent of this separate patch is to make more readable the main patch for
    MDEV-13864 (which will actually move the predicant to args[0]).
    
    1. Splitting fix_length_and_dec() into smaller pieces, adding:
      - bool aggregate_then_and_else_arguments(THD *thd);
      - bool aggregate_switch_and_when_arguments(THD *thd);
    
    2. Splitting find_item() into smaller pieces, adding:
      - Item *find_item_searched();
      - Item *find_item_simple();
    
    3. Splitting print() into smaller pieces, adding:
    
      - void print_when_then_arguments(String *str, enum_query_type query_type,
                                       Item **items, uint count);
      - void print_else_argument(String *str, enum_query_type query_type, Item *item)
    
    4. Moving the maybe_null handling part related to ELSE from fix_length_and_dec()
       to fix_fields(), as in all other Item_func's.
    
    5. Removing the unused String* argument from find_item().
    
    6. Moving find_item() from public to private, as it's not needed outside.
    e12390a3
item_cmpfunc.h 112 KB