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

Remove the use of STRING_ITEM from Item_func_date_format::fix_length_and_dec()

    Details

      Description

      We'll be replacing data type specific constants STRING_ITEM, INT_ITEM, REAL_ITEM, DECIMAL_ITEM, DATE_ITEM to LITERAL_ITEM soon (see MDEV-14630).

      Under terms of this task we'll remove usage of STRING_ITEM in Item_func_date_format::fix_length_and_dec() by replacing this condition:

        if (arg1->type() == STRING_ITEM)
      

      to

        StringBuffer<STRING_BUFFER_USUAL_SIZE> buffer;
        String *str;
        if (args[1]->basic_const_item() &&
            (str= args[1]->val_str(&buffer)))
      

      The main point in this condition is to catch constants (literals and bound Item_param instances), so calling val_str() can be done directly in fix_length_and_dec() to calculate the result max_length more precisely.

      As a good side effect, this change will allow constants of non-string types, to calculate max_length more precisely.

        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: