[MDEV-15702] Remove the use of STRING_ITEM from Item_func_date_format::fix_length_and_dec() Created: 2018-03-28  Updated: 2018-03-28  Resolved: 2018-03-28

Status: Closed
Project: MariaDB Server
Component/s: Data types
Fix Version/s: 10.3.6

Type: Task Priority: Major
Reporter: Alexander Barkov Assignee: Alexander Barkov
Resolution: Fixed Votes: 0
Labels: None

Issue Links:
Blocks
blocks MDEV-4912 Data type plugin API version 1 Closed
blocks MDEV-14630 Replace {STRING|INT|REAL|DECIMAL|DATE... Closed

 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.


Generated at Thu Feb 08 08:23:22 UTC 2024 using Jira 8.20.16#820016-sha1:9d11dbea5f4be3d4cc21f03a88dd11d8c8687422.