Details
-
Task
-
Status: Closed (View Workflow)
-
Major
-
Resolution: Fixed
Description
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.:
class Type_handler |
{
|
...
|
virtual |
String *Item_func_min_max_val_str(Item_func_min_max *,
|
String *) const; |
}
|
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.
Attachments
Issue Links
- blocks
-
MDEV-4912 Data type plugin API version 1
-
- Closed
-
Activity
Description |
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. |
Description |
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. |
Description |
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. |
Status | Open [ 1 ] | In Progress [ 3 ] |
Assignee | Alexander Barkov [ bar ] | Alexey Botchkov [ holyfoot ] |
Status | In Progress [ 3 ] | In Review [ 10002 ] |
Status | In Review [ 10002 ] | Stalled [ 10000 ] |
Fix Version/s | 10.3.0 [ 22127 ] | |
Fix Version/s | 10.3 [ 22126 ] | |
Resolution | Fixed [ 1 ] | |
Status | Stalled [ 10000 ] | Closed [ 6 ] |
Assignee | Alexey Botchkov [ holyfoot ] | Alexander Barkov [ bar ] |
Labels | datatype |
Workflow | MariaDB v3 [ 78708 ] | MariaDB v4 [ 133070 ] |
Pushed into bb-10.2-ext and 10.3