Under term of this tasks we'll remove tests for cmp_type() and result_type() in Item_func_min_max::val_xxx() and Item_func_min_max::get_date() and introduce instead new methods in Type_handler, e.g.:
The methods Item_func_hybrid_min_max::val_xxx() and Item_func_min_max::get_date() will call the corresponding new methods in Type_handler:
class Item_func_min_max: public Item_hybrid_func
{
...
String *val_str(String*str)
{
return Item_func_min_max::type_handler()->
Item_func_min_max_val_str(this, str);
}
...
}
For performance purposes, the change should try not to introduce new virtual calls.
One virtual call for xxx_type() should be replaced to one virtual call in Type_handler.
All possible calls inside the new methods should be done statically.
Under term of this tasks we'll remove tests for {{cmp_type())}} and {{result_type()}} in {{Item_func_min_max::val_xxx()}} and {{Item_func_min_max::get_date()}} and introduce instead new methods in {{Type_handler}}, e.g.:
{code:cpp}
class Type_handler
{
...
virtual
String *Item_func_min_max_val_str(Item_func_min_max *,
String *) const;
}
{code}
The methods {{Item_func_hybrid_min_max::val_xxx()}} and {{Item_func_min_max::get_date()}} will call the corresponding new methods in {{Type_handler}}:
{code:cpp}
class Item_func_min_max: public Item_hybrid_func
{
...
String *val_str(String*str)
{
return Item_func_min_max::type_handler()->
Item_func_min_max_val_str(this, str);
}
...
}
{code}
For performance purposes, the change should try not to introduce new virtual calls.
One virtual call in {{switch(xxx_type())}} should be replaced to one virtual call in {{Type_handler}}.
Calls inside the new methods in {{Type_handler}} should be done statically.
Under term of this tasks we'll remove tests for {{cmp_type()}} and {{result_type()}} in {{Item_func_min_max::val_xxx()}} and {{Item_func_min_max::get_date()}} and introduce instead new methods in {{Type_handler}}, e.g.:
{code:cpp}
class Type_handler
{
...
virtual
String *Item_func_min_max_val_str(Item_func_min_max *,
String *) const;
}
{code}
The methods {{Item_func_hybrid_min_max::val_xxx()}} and {{Item_func_min_max::get_date()}} will call the corresponding new methods in {{Type_handler}}:
{code:cpp}
class Item_func_min_max: public Item_hybrid_func
{
...
String *val_str(String*str)
{
return Item_func_min_max::type_handler()->
Item_func_min_max_val_str(this, str);
}
...
}
{code}
For performance purposes, the change should try not to introduce new virtual calls.
One virtual call in {{switch(xxx_type())}} should be replaced to one virtual call in {{Type_handler}}.
Calls inside the new methods in {{Type_handler}} should be done statically.
Under term of this tasks we'll remove tests for {{cmp_type()}} and {{result_type()}} in {{Item_func_min_max::val_xxx()}} and {{Item_func_min_max::get_date()}} and introduce instead new methods in {{Type_handler}}, e.g.:
{code:cpp}
class Type_handler
{
...
virtual
String *Item_func_min_max_val_str(Item_func_min_max *,
String *) const;
}
{code}
The methods {{Item_func_hybrid_min_max::val_xxx()}} and {{Item_func_min_max::get_date()}} will call the corresponding new methods in {{Type_handler}}:
{code:cpp}
class Item_func_min_max: public Item_hybrid_func
{
...
String *val_str(String*str)
{
return Item_func_min_max::type_handler()->
Item_func_min_max_val_str(this, str);
}
...
}
{code}
For performance purposes, the change should try not to introduce new virtual calls.
One virtual call in {{switch(xxx_type())}} should be replaced to one virtual call in {{Type_handler}}.
Calls inside the new methods in {{Type_handler}} should be done statically.
Under term of this tasks we'll remove tests for {{cmp_type()}} and {{result_type()}} in {{Item_func_min_max::val_xxx()}} and {{Item_func_min_max::get_date()}} and introduce instead new methods in {{Type_handler}}, e.g.:
{code:cpp}
class Type_handler
{
...
virtual
String *Item_func_min_max_val_str(Item_func_min_max *,
String *) const;
}
{code}
The methods {{Item_func_hybrid_min_max::val_xxx()}} and {{Item_func_min_max::get_date()}} will call the corresponding new methods in {{Type_handler}}:
{code:cpp}
class Item_func_min_max: public Item_hybrid_func
{
...
String *val_str(String*str)
{
return Item_func_min_max::type_handler()->
Item_func_min_max_val_str(this, str);
}
...
}
{code}
For performance purposes, the change should try not to introduce new virtual calls.
One virtual call in {{switch(xxx_type())}} should be replaced to one virtual call in {{Type_handler}}.
All possible calls inside the new methods should be done statically.
Under term of this tasks we'll remove tests for {{cmp_type()}} and {{result_type()}} in {{Item_func_min_max::val_xxx()}} and {{Item_func_min_max::get_date()}} and introduce instead new methods in {{Type_handler}}, e.g.:
{code:cpp}
class Type_handler
{
...
virtual
String *Item_func_min_max_val_str(Item_func_min_max *,
String *) const;
}
{code}
The methods {{Item_func_hybrid_min_max::val_xxx()}} and {{Item_func_min_max::get_date()}} will call the corresponding new methods in {{Type_handler}}:
{code:cpp}
class Item_func_min_max: public Item_hybrid_func
{
...
String *val_str(String*str)
{
return Item_func_min_max::type_handler()->
Item_func_min_max_val_str(this, str);
}
...
}
{code}
For performance purposes, the change should try not to introduce new virtual calls.
One virtual call in {{switch(xxx_type())}} should be replaced to one virtual call in {{Type_handler}}.
All possible calls inside the new methods should be done statically.
Under term of this tasks we'll remove tests for {{cmp_type()}} and {{result_type()}} in {{Item_func_min_max::val_xxx()}} and {{Item_func_min_max::get_date()}} and introduce instead new methods in {{Type_handler}}, e.g.:
{code:cpp}
class Type_handler
{
...
virtual
String *Item_func_min_max_val_str(Item_func_min_max *,
String *) const;
}
{code}
The methods {{Item_func_hybrid_min_max::val_xxx()}} and {{Item_func_min_max::get_date()}} will call the corresponding new methods in {{Type_handler}}:
{code:cpp}
class Item_func_min_max: public Item_hybrid_func
{
...
String *val_str(String*str)
{
return Item_func_min_max::type_handler()->
Item_func_min_max_val_str(this, str);
}
...
}
{code}
For performance purposes, the change should try not to introduce new virtual calls.
One virtual call for {{xxx_type()}} should be replaced to one virtual call in {{Type_handler}}.
All possible calls inside the new methods should be done statically.