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

Split Item_hybrid_func::fix_attributes into virtual methods in Type_handler

    XMLWordPrintable

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

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

              Dates

                Created:
                Updated:
                Resolved:

                Git Integration

                  Error rendering 'com.xiplink.jira.git.jira_git_plugin:git-issue-webpanel'. Please contact your Jira administrators.