Commit cb5f32eb authored by Alexander Barkov's avatar Alexander Barkov

Moving Item_func_xor out of Item_bool_func2, as it does not need

any of the optimizer related functionality.
parent 40e5acea
...@@ -284,6 +284,10 @@ public: ...@@ -284,6 +284,10 @@ public:
void reset_cache() { cache= NULL; } void reset_cache() { cache= NULL; }
}; };
/*
Functions and operators with two arguments that can use range optimizer.
*/
class Item_bool_func2 :public Item_bool_func class Item_bool_func2 :public Item_bool_func
{ /* Bool with 2 string args */ { /* Bool with 2 string args */
public: public:
...@@ -351,16 +355,18 @@ public: ...@@ -351,16 +355,18 @@ public:
}; };
/** /**
XOR inherits from Item_bool_func2 because it is not optimized yet. XOR inherits from Item_bool_func because it is not optimized yet.
Later, when XOR is optimized, it needs to inherit from Later, when XOR is optimized, it needs to inherit from
Item_cond instead. See WL#5800. Item_cond instead. See WL#5800.
*/ */
class Item_func_xor :public Item_bool_func2 class Item_func_xor :public Item_bool_func
{ {
public: public:
Item_func_xor(Item *i1, Item *i2) :Item_bool_func2(i1, i2) {} Item_func_xor(Item *i1, Item *i2) :Item_bool_func(i1, i2) {}
enum Functype functype() const { return XOR_FUNC; } enum Functype functype() const { return XOR_FUNC; }
const char *func_name() const { return "xor"; } const char *func_name() const { return "xor"; }
void print(String *str, enum_query_type query_type)
{ Item_func::print_op(str, query_type); }
longlong val_int(); longlong val_int();
Item *neg_transformer(THD *thd); Item *neg_transformer(THD *thd);
bool subst_argument_checker(uchar **arg) bool subst_argument_checker(uchar **arg)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment