mirror of
https://github.com/MariaDB/server.git
synced 2025-07-08 17:02:21 +03:00
MDEV-12559 Split Item::temporal_precision() into virtual methods in Type_handler
- Adding a new virtual method Type_handler::Item_time_precision() - Adding a new virtual method Type_handler::Item_datetime_precision() - Removing Item::temporal_precision() and adding Item::time_precision() and Item::datetime_precision() instead. - Moving Item_func_convert_tz::fix_length_and_dec() from item_timefunc.cc to item_timefunc.h. It's only two lines, and we're changing it anyway. - Removing Item_temporal_typecast::fix_length_and_dec_generic(), moving this code to Type_handler::Item_{date|time|datetime}_typecast_fix_length_and_dec(). This allows to get rid of one more field_type() call. Also, in the old reduction, Item_date_typecast::fix_length_and_dec() unnecessarily called args[0]->temporal_precision(). The new reduction does not call args[0]->datetime_precision(), as DATE does not have fractional digits.
This commit is contained in:
@ -389,6 +389,8 @@ public:
|
||||
{
|
||||
return true;
|
||||
}
|
||||
virtual uint Item_time_precision(Item *item) const;
|
||||
virtual uint Item_datetime_precision(Item *item) const;
|
||||
/**
|
||||
Makes a temporary table Field to handle numeric aggregate functions,
|
||||
e.g. SUM(DISTINCT expr), AVG(DISTINCT expr), etc.
|
||||
@ -1040,6 +1042,7 @@ public:
|
||||
|
||||
class Type_handler_string_result: public Type_handler
|
||||
{
|
||||
uint Item_temporal_precision(Item *item, bool is_time) const;
|
||||
public:
|
||||
Item_result result_type() const { return STRING_RESULT; }
|
||||
Item_result cmp_type() const { return STRING_RESULT; }
|
||||
@ -1055,6 +1058,14 @@ public:
|
||||
const Type_std_attributes *item,
|
||||
SORT_FIELD_ATTR *attr) const;
|
||||
uint32 max_display_length(const Item *item) const;
|
||||
uint Item_time_precision(Item *item) const
|
||||
{
|
||||
return Item_temporal_precision(item, true);
|
||||
}
|
||||
uint Item_datetime_precision(Item *item) const
|
||||
{
|
||||
return Item_temporal_precision(item, false);
|
||||
}
|
||||
int Item_save_in_field(Item *item, Field *field, bool no_conversions) const;
|
||||
String *print_item_value(THD *thd, Item *item, String *str) const
|
||||
{
|
||||
|
Reference in New Issue
Block a user