Uploaded image for project: 'MariaDB Server'
  1. MariaDB Server
  2. MDEV-11615

Split Item_hybrid_func::fix_attributes into virtual methods in Type_handler

    Details

      Description

      This task will add a new virtual method in Type_handler:

        virtual bool Item_hybrid_func_fix_attributes(THD *thd, Item_hybrid_func *func,
                                                     Item **items,
                                                     uint nitems) const;
      

      and split this code in Item_hybrid_func::fix_attributes into the new method implementation in the relevant type handler implementations:

       switch (Item_hybrid_func::result_type()) {
       case STRING_RESULT:
       ..
       case DECIMAL_RESULT:
        ..
       case REAL_RESULT:
       ..
       case INT_RESULT:
       ..
       case ROW_RESULT:
       case TIME_RESULT:
       ..
       }
      

      and also remove a special STRING_RESULT condition in Item_func_case::fix_length_and_dec(), to make the code symmetric across the data types.

      Note, the THD* parameter to Type_handler::Item_hybrid_func_fix_attributes is not needed right now, but it will be needed soon:

      • for MDEV-10575
      • to get rid of current_thd calls inside count_string_length(), as it was planned to get rid of most current_thd calls in 10.3.

        Attachments

          Issue Links

            Activity

              People

              • Assignee:
                bar Alexander Barkov
                Reporter:
                bar Alexander Barkov
              • Votes:
                0 Vote for this issue
                Watchers:
                1 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: