BUG#18198

Review comments
parent de9001d3
...@@ -846,8 +846,31 @@ class Item { ...@@ -846,8 +846,31 @@ class Item {
allowed in a partition function then it is very important to consider allowed in a partition function then it is very important to consider
whether this should be inherited to the new class. If not the function whether this should be inherited to the new class. If not the function
below should be defined in the new Item class. below should be defined in the new Item class.
*/
virtual bool check_partition_func_processor(byte *bool_arg) { return FALSE; } The general behaviour is that most integer functions are allowed.
If the partition function contains any multi-byte collations then
the function check_part_func_fields will report an error on the
partition function independent of what functions are used. So the
only character sets allowed are single character collation and
even for those only a limited set of functions are allowed. The
problem with multi-byte collations is that almost every string
function has the ability to change things such that two strings
that are equal will not be equal after manipulated by a string
function. E.g. two strings one contains a double s, there is a
special german character that is equal to two s. Now assume a
string function removes one character at this place, then in
one the double s will be removed and in the other there will
still be one s remaining and the strings are no longer equal
and thus the partition function will not sort equal strings into
the same partitions.
So the check if a partition function is valid is two steps. First
check that the field types are valid, next check that the partition
function is valid. The current set of partition functions valid
assumes that there are no multi-byte collations amongst the partition
fields.
*/
virtual bool check_partition_func_processor(byte *bool_arg) { return TRUE;}
virtual bool subst_argument_checker(byte **arg) virtual bool subst_argument_checker(byte **arg)
{ {
if (*arg) if (*arg)
...@@ -1348,7 +1371,7 @@ class Item_field :public Item_ident ...@@ -1348,7 +1371,7 @@ class Item_field :public Item_ident
bool collect_item_field_processor(byte * arg); bool collect_item_field_processor(byte * arg);
bool find_item_in_field_list_processor(byte *arg); bool find_item_in_field_list_processor(byte *arg);
bool register_field_in_read_map(byte *arg); bool register_field_in_read_map(byte *arg);
bool check_partition_func_processor(byte *int_arg) { return FALSE; } bool check_partition_func_processor(byte *int_arg) {return FALSE;}
void cleanup(); void cleanup();
bool result_as_longlong() bool result_as_longlong()
{ {
...@@ -1397,7 +1420,7 @@ class Item_null :public Item ...@@ -1397,7 +1420,7 @@ class Item_null :public Item
bool is_null() { return 1; } bool is_null() { return 1; }
void print(String *str) { str->append(STRING_WITH_LEN("NULL")); } void print(String *str) { str->append(STRING_WITH_LEN("NULL")); }
Item *safe_charset_converter(CHARSET_INFO *tocs); Item *safe_charset_converter(CHARSET_INFO *tocs);
bool check_partition_func_processor(byte *int_arg) { return FALSE;} bool check_partition_func_processor(byte *int_arg) {return FALSE;}
}; };
class Item_null_result :public Item_null class Item_null_result :public Item_null
...@@ -1410,8 +1433,7 @@ class Item_null_result :public Item_null ...@@ -1410,8 +1433,7 @@ class Item_null_result :public Item_null
{ {
save_in_field(result_field, no_conversions); save_in_field(result_field, no_conversions);
} }
bool check_partition_func_processor(byte *int_arg) bool check_partition_func_processor(byte *int_arg) {return TRUE;}
{ *(int *)int_arg= 0; return FALSE; }
}; };
/* Item represents one placeholder ('?') of prepared statement */ /* Item represents one placeholder ('?') of prepared statement */
...@@ -1702,8 +1724,7 @@ class Item_static_float_func :public Item_float ...@@ -1702,8 +1724,7 @@ class Item_static_float_func :public Item_float
{} {}
void print(String *str) { str->append(func_name); } void print(String *str) { str->append(func_name); }
Item *safe_charset_converter(CHARSET_INFO *tocs); Item *safe_charset_converter(CHARSET_INFO *tocs);
bool check_partition_func_processor(byte *int_arg) bool check_partition_func_processor(byte *int_arg) {return TRUE;}
{ *(int *)int_arg= 0; return FALSE; }
}; };
...@@ -1781,7 +1802,7 @@ class Item_string :public Item ...@@ -1781,7 +1802,7 @@ class Item_string :public Item
void print(String *str); void print(String *str);
// to prevent drop fixed flag (no need parent cleanup call) // to prevent drop fixed flag (no need parent cleanup call)
void cleanup() {} void cleanup() {}
bool check_partition_func_processor(byte *int_arg) { return FALSE;} bool check_partition_func_processor(byte *int_arg) {return FALSE;}
}; };
...@@ -1796,8 +1817,7 @@ class Item_static_string_func :public Item_string ...@@ -1796,8 +1817,7 @@ class Item_static_string_func :public Item_string
{} {}
Item *safe_charset_converter(CHARSET_INFO *tocs); Item *safe_charset_converter(CHARSET_INFO *tocs);
void print(String *str) { str->append(func_name); } void print(String *str) { str->append(func_name); }
bool check_partition_func_processor(byte *int_arg) bool check_partition_func_processor(byte *int_arg) {return TRUE;}
{ *(int *)int_arg= 0; return FALSE; }
}; };
...@@ -1810,8 +1830,7 @@ class Item_datetime :public Item_string ...@@ -1810,8 +1830,7 @@ class Item_datetime :public Item_string
&my_charset_bin) &my_charset_bin)
{ max_length=19;} { max_length=19;}
enum_field_types field_type() const { return MYSQL_TYPE_DATETIME; } enum_field_types field_type() const { return MYSQL_TYPE_DATETIME; }
bool check_partition_func_processor(byte *int_arg) bool check_partition_func_processor(byte *int_arg) {return TRUE;}
{ *(int *)int_arg= 0; return FALSE; }
}; };
class Item_empty_string :public Item_string class Item_empty_string :public Item_string
...@@ -1834,8 +1853,7 @@ class Item_return_int :public Item_int ...@@ -1834,8 +1853,7 @@ class Item_return_int :public Item_int
unsigned_flag=1; unsigned_flag=1;
} }
enum_field_types field_type() const { return int_field_type; } enum_field_types field_type() const { return int_field_type; }
bool check_partition_func_processor(byte *int_arg) bool check_partition_func_processor(byte *int_arg) {return TRUE;}
{ *(int *)int_arg= 0; return FALSE; }
}; };
...@@ -1859,7 +1877,7 @@ class Item_hex_string: public Item ...@@ -1859,7 +1877,7 @@ class Item_hex_string: public Item
void cleanup() {} void cleanup() {}
bool eq(const Item *item, bool binary_cmp) const; bool eq(const Item *item, bool binary_cmp) const;
virtual Item *safe_charset_converter(CHARSET_INFO *tocs); virtual Item *safe_charset_converter(CHARSET_INFO *tocs);
bool check_partition_func_processor(byte *int_arg) { return FALSE; } bool check_partition_func_processor(byte *int_arg) {return FALSE;}
}; };
...@@ -2086,8 +2104,7 @@ class Item_int_with_ref :public Item_int ...@@ -2086,8 +2104,7 @@ class Item_int_with_ref :public Item_int
} }
Item *new_item(); Item *new_item();
virtual Item *real_item() { return ref; } virtual Item *real_item() { return ref; }
bool check_partition_func_processor(byte *int_arg) bool check_partition_func_processor(byte *int_arg) {return TRUE;}
{ *(int *)int_arg= 0; return FALSE; }
}; };
#ifdef MYSQL_SERVER #ifdef MYSQL_SERVER
......
...@@ -240,7 +240,7 @@ class Item_bool_rowready_func2 :public Item_bool_func2 ...@@ -240,7 +240,7 @@ class Item_bool_rowready_func2 :public Item_bool_func2
} }
Item *neg_transformer(THD *thd); Item *neg_transformer(THD *thd);
virtual Item *negated_item(); virtual Item *negated_item();
bool check_partition_func_processor(byte *int_arg) { return FALSE; } bool check_partition_func_processor(byte *int_arg) {return FALSE;}
bool subst_argument_checker(byte **arg) { return TRUE; } bool subst_argument_checker(byte **arg) { return TRUE; }
}; };
...@@ -252,7 +252,7 @@ class Item_func_not :public Item_bool_func ...@@ -252,7 +252,7 @@ class Item_func_not :public Item_bool_func
enum Functype functype() const { return NOT_FUNC; } enum Functype functype() const { return NOT_FUNC; }
const char *func_name() const { return "not"; } const char *func_name() const { return "not"; }
Item *neg_transformer(THD *thd); Item *neg_transformer(THD *thd);
bool check_partition_func_processor(byte *int_arg) { return FALSE; } bool check_partition_func_processor(byte *int_arg) {return FALSE;}
}; };
class Item_maxmin_subselect; class Item_maxmin_subselect;
...@@ -469,7 +469,7 @@ class Item_func_between :public Item_func_opt_neg ...@@ -469,7 +469,7 @@ class Item_func_between :public Item_func_opt_neg
bool is_bool_func() { return 1; } bool is_bool_func() { return 1; }
CHARSET_INFO *compare_collation() { return cmp_collation.collation; } CHARSET_INFO *compare_collation() { return cmp_collation.collation; }
uint decimal_precision() const { return 1; } uint decimal_precision() const { return 1; }
bool check_partition_func_processor(byte *int_arg) { return FALSE; } bool check_partition_func_processor(byte *int_arg) {return FALSE;}
}; };
...@@ -481,7 +481,7 @@ class Item_func_strcmp :public Item_bool_func2 ...@@ -481,7 +481,7 @@ class Item_func_strcmp :public Item_bool_func2
optimize_type select_optimize() const { return OPTIMIZE_NONE; } optimize_type select_optimize() const { return OPTIMIZE_NONE; }
const char *func_name() const { return "strcmp"; } const char *func_name() const { return "strcmp"; }
void print(String *str) { Item_func::print(str); } void print(String *str) { Item_func::print(str); }
bool check_partition_func_processor(byte *int_arg) { return FALSE; } bool check_partition_func_processor(byte *int_arg) {return FALSE;}
}; };
...@@ -544,7 +544,7 @@ class Item_func_ifnull :public Item_func_coalesce ...@@ -544,7 +544,7 @@ class Item_func_ifnull :public Item_func_coalesce
const char *func_name() const { return "ifnull"; } const char *func_name() const { return "ifnull"; }
Field *tmp_table_field(TABLE *table); Field *tmp_table_field(TABLE *table);
uint decimal_precision() const; uint decimal_precision() const;
bool check_partition_func_processor(byte *int_arg) { return FALSE; } bool check_partition_func_processor(byte *int_arg) {return FALSE;}
}; };
...@@ -585,7 +585,7 @@ class Item_func_nullif :public Item_bool_func2 ...@@ -585,7 +585,7 @@ class Item_func_nullif :public Item_bool_func2
void print(String *str) { Item_func::print(str); } void print(String *str) { Item_func::print(str); }
table_map not_null_tables() const { return 0; } table_map not_null_tables() const { return 0; }
bool is_null(); bool is_null();
bool check_partition_func_processor(byte *int_arg) { return FALSE; } bool check_partition_func_processor(byte *int_arg) {return FALSE;}
}; };
...@@ -628,7 +628,7 @@ class Item_func_case :public Item_func ...@@ -628,7 +628,7 @@ class Item_func_case :public Item_func
void print(String *str); void print(String *str);
Item *find_item(String *str); Item *find_item(String *str);
CHARSET_INFO *compare_collation() { return cmp_collation.collation; } CHARSET_INFO *compare_collation() { return cmp_collation.collation; }
bool check_partition_func_processor(byte *int_arg) { return FALSE; } bool check_partition_func_processor(byte *int_arg) {return FALSE;}
}; };
...@@ -979,7 +979,7 @@ class Item_func_in :public Item_func_opt_neg ...@@ -979,7 +979,7 @@ class Item_func_in :public Item_func_opt_neg
bool nulls_in_row(); bool nulls_in_row();
bool is_bool_func() { return 1; } bool is_bool_func() { return 1; }
CHARSET_INFO *compare_collation() { return cmp_collation.collation; } CHARSET_INFO *compare_collation() { return cmp_collation.collation; }
bool check_partition_func_processor(byte *int_arg) { return FALSE; } bool check_partition_func_processor(byte *int_arg) {return FALSE;}
}; };
/* Functions used by where clause */ /* Functions used by where clause */
...@@ -1021,7 +1021,7 @@ class Item_func_isnull :public Item_bool_func ...@@ -1021,7 +1021,7 @@ class Item_func_isnull :public Item_bool_func
optimize_type select_optimize() const { return OPTIMIZE_NULL; } optimize_type select_optimize() const { return OPTIMIZE_NULL; }
Item *neg_transformer(THD *thd); Item *neg_transformer(THD *thd);
CHARSET_INFO *compare_collation() { return args[0]->collation.collation; } CHARSET_INFO *compare_collation() { return args[0]->collation.collation; }
bool check_partition_func_processor(byte *int_arg) { return FALSE; } bool check_partition_func_processor(byte *int_arg) {return FALSE;}
}; };
/* Functions used by HAVING for rewriting IN subquery */ /* Functions used by HAVING for rewriting IN subquery */
...@@ -1043,8 +1043,7 @@ class Item_is_not_null_test :public Item_func_isnull ...@@ -1043,8 +1043,7 @@ class Item_is_not_null_test :public Item_func_isnull
*/ */
table_map used_tables() const table_map used_tables() const
{ return used_tables_cache | RAND_TABLE_BIT; } { return used_tables_cache | RAND_TABLE_BIT; }
bool check_partition_func_processor(byte *int_arg) bool check_partition_func_processor(byte *int_arg) {return TRUE;}
{ *(int *)int_arg= 0; return FALSE; }
}; };
...@@ -1067,7 +1066,7 @@ class Item_func_isnotnull :public Item_bool_func ...@@ -1067,7 +1066,7 @@ class Item_func_isnotnull :public Item_bool_func
void print(String *str); void print(String *str);
CHARSET_INFO *compare_collation() { return args[0]->collation.collation; } CHARSET_INFO *compare_collation() { return args[0]->collation.collation; }
void top_level_item() { abort_on_null=1; } void top_level_item() { abort_on_null=1; }
bool check_partition_func_processor(byte *int_arg) { return FALSE; } bool check_partition_func_processor(byte *int_arg) {return FALSE;}
}; };
...@@ -1106,7 +1105,7 @@ class Item_func_like :public Item_bool_func2 ...@@ -1106,7 +1105,7 @@ class Item_func_like :public Item_bool_func2
const char *func_name() const { return "like"; } const char *func_name() const { return "like"; }
bool fix_fields(THD *thd, Item **ref); bool fix_fields(THD *thd, Item **ref);
void cleanup(); void cleanup();
bool check_partition_func_processor(byte *int_arg) { return FALSE; } bool check_partition_func_processor(byte *int_arg) {return FALSE;}
}; };
#ifdef USE_REGEX #ifdef USE_REGEX
...@@ -1129,7 +1128,7 @@ class Item_func_regex :public Item_bool_func ...@@ -1129,7 +1128,7 @@ class Item_func_regex :public Item_bool_func
const char *func_name() const { return "regexp"; } const char *func_name() const { return "regexp"; }
void print(String *str) { print_op(str); } void print(String *str) { print_op(str); }
CHARSET_INFO *compare_collation() { return cmp_collation.collation; } CHARSET_INFO *compare_collation() { return cmp_collation.collation; }
bool check_partition_func_processor(byte *int_arg) { return FALSE; } bool check_partition_func_processor(byte *int_arg) {return FALSE;}
}; };
#else #else
...@@ -1186,7 +1185,7 @@ class Item_cond :public Item_bool_func ...@@ -1186,7 +1185,7 @@ class Item_cond :public Item_bool_func
Item *transform(Item_transformer transformer, byte *arg); Item *transform(Item_transformer transformer, byte *arg);
void traverse_cond(Cond_traverser, void *arg, traverse_order order); void traverse_cond(Cond_traverser, void *arg, traverse_order order);
void neg_arguments(THD *thd); void neg_arguments(THD *thd);
bool check_partition_func_processor(byte *int_arg) { return FALSE; } bool check_partition_func_processor(byte *int_arg) {return FALSE;}
bool subst_argument_checker(byte **arg) { return TRUE; } bool subst_argument_checker(byte **arg) { return TRUE; }
Item *compile(Item_analyzer analyzer, byte **arg_p, Item *compile(Item_analyzer analyzer, byte **arg_p,
Item_transformer transformer, byte *arg_t); Item_transformer transformer, byte *arg_t);
......
...@@ -254,7 +254,7 @@ class Item_func_num1: public Item_func_numhybrid ...@@ -254,7 +254,7 @@ class Item_func_num1: public Item_func_numhybrid
void fix_num_length_and_dec(); void fix_num_length_and_dec();
void find_num_type(); void find_num_type();
String *str_op(String *str) { DBUG_ASSERT(0); return 0; } String *str_op(String *str) { DBUG_ASSERT(0); return 0; }
bool check_partition_func_processor(byte *int_arg) { return FALSE; } bool check_partition_func_processor(byte *int_arg) {return FALSE;}
}; };
...@@ -267,7 +267,7 @@ class Item_num_op :public Item_func_numhybrid ...@@ -267,7 +267,7 @@ class Item_num_op :public Item_func_numhybrid
void print(String *str) { print_op(str); } void print(String *str) { print_op(str); }
void find_num_type(); void find_num_type();
String *str_op(String *str) { DBUG_ASSERT(0); return 0; } String *str_op(String *str) { DBUG_ASSERT(0); return 0; }
bool check_partition_func_processor(byte *int_arg) { return FALSE; } bool check_partition_func_processor(byte *int_arg) {return FALSE;}
}; };
...@@ -318,7 +318,7 @@ class Item_func_signed :public Item_int_func ...@@ -318,7 +318,7 @@ class Item_func_signed :public Item_int_func
{ max_length=args[0]->max_length; unsigned_flag=0; } { max_length=args[0]->max_length; unsigned_flag=0; }
void print(String *str); void print(String *str);
uint decimal_precision() const { return args[0]->decimal_precision(); } uint decimal_precision() const { return args[0]->decimal_precision(); }
bool check_partition_func_processor(byte *int_arg) { return FALSE; } bool check_partition_func_processor(byte *int_arg) {return FALSE;}
}; };
...@@ -352,7 +352,7 @@ class Item_decimal_typecast :public Item_func ...@@ -352,7 +352,7 @@ class Item_decimal_typecast :public Item_func
void fix_length_and_dec() {}; void fix_length_and_dec() {};
const char *func_name() const { return "decimal_typecast"; } const char *func_name() const { return "decimal_typecast"; }
void print(String *); void print(String *);
bool check_partition_func_processor(byte *int_arg) { return FALSE; } bool check_partition_func_processor(byte *int_arg) {return FALSE;}
}; };
...@@ -421,7 +421,7 @@ class Item_func_int_div :public Item_int_func ...@@ -421,7 +421,7 @@ class Item_func_int_div :public Item_int_func
const char *func_name() const { return "DIV"; } const char *func_name() const { return "DIV"; }
void fix_length_and_dec(); void fix_length_and_dec();
void print(String *str) { print_op(str); } void print(String *str) { print_op(str); }
bool check_partition_func_processor(byte *int_arg) { return FALSE; } bool check_partition_func_processor(byte *int_arg) {return FALSE;}
}; };
...@@ -494,7 +494,7 @@ class Item_func_exp :public Item_dec_func ...@@ -494,7 +494,7 @@ class Item_func_exp :public Item_dec_func
Item_func_exp(Item *a) :Item_dec_func(a) {} Item_func_exp(Item *a) :Item_dec_func(a) {}
double val_real(); double val_real();
const char *func_name() const { return "exp"; } const char *func_name() const { return "exp"; }
bool check_partition_func_processor(byte *int_arg) { return FALSE; } bool check_partition_func_processor(byte *int_arg) {return FALSE;}
}; };
...@@ -504,7 +504,7 @@ class Item_func_ln :public Item_dec_func ...@@ -504,7 +504,7 @@ class Item_func_ln :public Item_dec_func
Item_func_ln(Item *a) :Item_dec_func(a) {} Item_func_ln(Item *a) :Item_dec_func(a) {}
double val_real(); double val_real();
const char *func_name() const { return "ln"; } const char *func_name() const { return "ln"; }
bool check_partition_func_processor(byte *int_arg) { return FALSE; } bool check_partition_func_processor(byte *int_arg) {return FALSE;}
}; };
...@@ -515,7 +515,7 @@ class Item_func_log :public Item_dec_func ...@@ -515,7 +515,7 @@ class Item_func_log :public Item_dec_func
Item_func_log(Item *a,Item *b) :Item_dec_func(a,b) {} Item_func_log(Item *a,Item *b) :Item_dec_func(a,b) {}
double val_real(); double val_real();
const char *func_name() const { return "log"; } const char *func_name() const { return "log"; }
bool check_partition_func_processor(byte *int_arg) { return FALSE; } bool check_partition_func_processor(byte *int_arg) {return FALSE;}
}; };
...@@ -525,7 +525,7 @@ class Item_func_log2 :public Item_dec_func ...@@ -525,7 +525,7 @@ class Item_func_log2 :public Item_dec_func
Item_func_log2(Item *a) :Item_dec_func(a) {} Item_func_log2(Item *a) :Item_dec_func(a) {}
double val_real(); double val_real();
const char *func_name() const { return "log2"; } const char *func_name() const { return "log2"; }
bool check_partition_func_processor(byte *int_arg) { return FALSE; } bool check_partition_func_processor(byte *int_arg) {return FALSE;}
}; };
...@@ -535,7 +535,7 @@ class Item_func_log10 :public Item_dec_func ...@@ -535,7 +535,7 @@ class Item_func_log10 :public Item_dec_func
Item_func_log10(Item *a) :Item_dec_func(a) {} Item_func_log10(Item *a) :Item_dec_func(a) {}
double val_real(); double val_real();
const char *func_name() const { return "log10"; } const char *func_name() const { return "log10"; }
bool check_partition_func_processor(byte *int_arg) { return FALSE; } bool check_partition_func_processor(byte *int_arg) {return FALSE;}
}; };
...@@ -545,7 +545,7 @@ class Item_func_sqrt :public Item_dec_func ...@@ -545,7 +545,7 @@ class Item_func_sqrt :public Item_dec_func
Item_func_sqrt(Item *a) :Item_dec_func(a) {} Item_func_sqrt(Item *a) :Item_dec_func(a) {}
double val_real(); double val_real();
const char *func_name() const { return "sqrt"; } const char *func_name() const { return "sqrt"; }
bool check_partition_func_processor(byte *int_arg) { return FALSE; } bool check_partition_func_processor(byte *int_arg) {return FALSE;}
}; };
...@@ -555,7 +555,7 @@ class Item_func_pow :public Item_dec_func ...@@ -555,7 +555,7 @@ class Item_func_pow :public Item_dec_func
Item_func_pow(Item *a,Item *b) :Item_dec_func(a,b) {} Item_func_pow(Item *a,Item *b) :Item_dec_func(a,b) {}
double val_real(); double val_real();
const char *func_name() const { return "pow"; } const char *func_name() const { return "pow"; }
bool check_partition_func_processor(byte *int_arg) { return FALSE; } bool check_partition_func_processor(byte *int_arg) {return FALSE;}
}; };
...@@ -565,7 +565,7 @@ class Item_func_acos :public Item_dec_func ...@@ -565,7 +565,7 @@ class Item_func_acos :public Item_dec_func
Item_func_acos(Item *a) :Item_dec_func(a) {} Item_func_acos(Item *a) :Item_dec_func(a) {}
double val_real(); double val_real();
const char *func_name() const { return "acos"; } const char *func_name() const { return "acos"; }
bool check_partition_func_processor(byte *int_arg) { return FALSE; } bool check_partition_func_processor(byte *int_arg) {return FALSE;}
}; };
class Item_func_asin :public Item_dec_func class Item_func_asin :public Item_dec_func
...@@ -574,7 +574,7 @@ class Item_func_asin :public Item_dec_func ...@@ -574,7 +574,7 @@ class Item_func_asin :public Item_dec_func
Item_func_asin(Item *a) :Item_dec_func(a) {} Item_func_asin(Item *a) :Item_dec_func(a) {}
double val_real(); double val_real();
const char *func_name() const { return "asin"; } const char *func_name() const { return "asin"; }
bool check_partition_func_processor(byte *int_arg) { return FALSE; } bool check_partition_func_processor(byte *int_arg) {return FALSE;}
}; };
class Item_func_atan :public Item_dec_func class Item_func_atan :public Item_dec_func
...@@ -584,7 +584,7 @@ class Item_func_atan :public Item_dec_func ...@@ -584,7 +584,7 @@ class Item_func_atan :public Item_dec_func
Item_func_atan(Item *a,Item *b) :Item_dec_func(a,b) {} Item_func_atan(Item *a,Item *b) :Item_dec_func(a,b) {}
double val_real(); double val_real();
const char *func_name() const { return "atan"; } const char *func_name() const { return "atan"; }
bool check_partition_func_processor(byte *int_arg) { return FALSE; } bool check_partition_func_processor(byte *int_arg) {return FALSE;}
}; };
class Item_func_cos :public Item_dec_func class Item_func_cos :public Item_dec_func
...@@ -593,7 +593,7 @@ class Item_func_cos :public Item_dec_func ...@@ -593,7 +593,7 @@ class Item_func_cos :public Item_dec_func
Item_func_cos(Item *a) :Item_dec_func(a) {} Item_func_cos(Item *a) :Item_dec_func(a) {}
double val_real(); double val_real();
const char *func_name() const { return "cos"; } const char *func_name() const { return "cos"; }
bool check_partition_func_processor(byte *int_arg) { return FALSE; } bool check_partition_func_processor(byte *int_arg) {return FALSE;}
}; };
class Item_func_sin :public Item_dec_func class Item_func_sin :public Item_dec_func
...@@ -602,7 +602,7 @@ class Item_func_sin :public Item_dec_func ...@@ -602,7 +602,7 @@ class Item_func_sin :public Item_dec_func
Item_func_sin(Item *a) :Item_dec_func(a) {} Item_func_sin(Item *a) :Item_dec_func(a) {}
double val_real(); double val_real();
const char *func_name() const { return "sin"; } const char *func_name() const { return "sin"; }
bool check_partition_func_processor(byte *int_arg) { return FALSE; } bool check_partition_func_processor(byte *int_arg) {return FALSE;}
}; };
class Item_func_tan :public Item_dec_func class Item_func_tan :public Item_dec_func
...@@ -611,7 +611,7 @@ class Item_func_tan :public Item_dec_func ...@@ -611,7 +611,7 @@ class Item_func_tan :public Item_dec_func
Item_func_tan(Item *a) :Item_dec_func(a) {} Item_func_tan(Item *a) :Item_dec_func(a) {}
double val_real(); double val_real();
const char *func_name() const { return "tan"; } const char *func_name() const { return "tan"; }
bool check_partition_func_processor(byte *int_arg) { return FALSE; } bool check_partition_func_processor(byte *int_arg) {return FALSE;}
}; };
class Item_func_integer :public Item_int_func class Item_func_integer :public Item_int_func
...@@ -688,7 +688,7 @@ class Item_func_sign :public Item_int_func ...@@ -688,7 +688,7 @@ class Item_func_sign :public Item_int_func
Item_func_sign(Item *a) :Item_int_func(a) {} Item_func_sign(Item *a) :Item_int_func(a) {}
const char *func_name() const { return "sign"; } const char *func_name() const { return "sign"; }
longlong val_int(); longlong val_int();
bool check_partition_func_processor(byte *int_arg) { return FALSE; } bool check_partition_func_processor(byte *int_arg) {return FALSE;}
}; };
...@@ -703,7 +703,7 @@ class Item_func_units :public Item_real_func ...@@ -703,7 +703,7 @@ class Item_func_units :public Item_real_func
const char *func_name() const { return name; } const char *func_name() const { return name; }
void fix_length_and_dec() void fix_length_and_dec()
{ decimals= NOT_FIXED_DEC; max_length= float_length(decimals); } { decimals= NOT_FIXED_DEC; max_length= float_length(decimals); }
bool check_partition_func_processor(byte *int_arg) { return FALSE; } bool check_partition_func_processor(byte *int_arg) {return FALSE;}
}; };
...@@ -721,7 +721,7 @@ class Item_func_min_max :public Item_func ...@@ -721,7 +721,7 @@ class Item_func_min_max :public Item_func
my_decimal *val_decimal(my_decimal *); my_decimal *val_decimal(my_decimal *);
void fix_length_and_dec(); void fix_length_and_dec();
enum Item_result result_type () const { return cmp_type; } enum Item_result result_type () const { return cmp_type; }
bool check_partition_func_processor(byte *int_arg) { return FALSE; } bool check_partition_func_processor(byte *int_arg) {return FALSE;}
}; };
class Item_func_min :public Item_func_min_max class Item_func_min :public Item_func_min_max
...@@ -747,7 +747,7 @@ class Item_func_length :public Item_int_func ...@@ -747,7 +747,7 @@ class Item_func_length :public Item_int_func
longlong val_int(); longlong val_int();
const char *func_name() const { return "length"; } const char *func_name() const { return "length"; }
void fix_length_and_dec() { max_length=10; } void fix_length_and_dec() { max_length=10; }
bool check_partition_func_processor(byte *int_arg) { return FALSE; } bool check_partition_func_processor(byte *int_arg) {return FALSE;}
}; };
class Item_func_bit_length :public Item_func_length class Item_func_bit_length :public Item_func_length
...@@ -767,7 +767,7 @@ class Item_func_char_length :public Item_int_func ...@@ -767,7 +767,7 @@ class Item_func_char_length :public Item_int_func
longlong val_int(); longlong val_int();
const char *func_name() const { return "char_length"; } const char *func_name() const { return "char_length"; }
void fix_length_and_dec() { max_length=10; } void fix_length_and_dec() { max_length=10; }
bool check_partition_func_processor(byte *int_arg) { return FALSE; } bool check_partition_func_processor(byte *int_arg) {return FALSE;}
}; };
class Item_func_coercibility :public Item_int_func class Item_func_coercibility :public Item_int_func
...@@ -791,7 +791,7 @@ class Item_func_locate :public Item_int_func ...@@ -791,7 +791,7 @@ class Item_func_locate :public Item_int_func
longlong val_int(); longlong val_int();
void fix_length_and_dec(); void fix_length_and_dec();
void print(String *str); void print(String *str);
bool check_partition_func_processor(byte *int_arg) { return FALSE; } bool check_partition_func_processor(byte *int_arg) {return FALSE;}
}; };
...@@ -816,7 +816,7 @@ class Item_func_ascii :public Item_int_func ...@@ -816,7 +816,7 @@ class Item_func_ascii :public Item_int_func
longlong val_int(); longlong val_int();
const char *func_name() const { return "ascii"; } const char *func_name() const { return "ascii"; }
void fix_length_and_dec() { max_length=3; } void fix_length_and_dec() { max_length=3; }
bool check_partition_func_processor(byte *int_arg) { return FALSE; } bool check_partition_func_processor(byte *int_arg) {return FALSE;}
}; };
class Item_func_ord :public Item_int_func class Item_func_ord :public Item_int_func
...@@ -826,7 +826,7 @@ class Item_func_ord :public Item_int_func ...@@ -826,7 +826,7 @@ class Item_func_ord :public Item_int_func
Item_func_ord(Item *a) :Item_int_func(a) {} Item_func_ord(Item *a) :Item_int_func(a) {}
longlong val_int(); longlong val_int();
const char *func_name() const { return "ord"; } const char *func_name() const { return "ord"; }
bool check_partition_func_processor(byte *int_arg) { return FALSE; } bool check_partition_func_processor(byte *int_arg) {return FALSE;}
}; };
class Item_func_find_in_set :public Item_int_func class Item_func_find_in_set :public Item_int_func
...@@ -840,7 +840,7 @@ class Item_func_find_in_set :public Item_int_func ...@@ -840,7 +840,7 @@ class Item_func_find_in_set :public Item_int_func
longlong val_int(); longlong val_int();
const char *func_name() const { return "find_in_set"; } const char *func_name() const { return "find_in_set"; }
void fix_length_and_dec(); void fix_length_and_dec();
bool check_partition_func_processor(byte *int_arg) { return FALSE; } bool check_partition_func_processor(byte *int_arg) {return FALSE;}
}; };
/* Base class for all bit functions: '~', '|', '^', '&', '>>', '<<' */ /* Base class for all bit functions: '~', '|', '^', '&', '>>', '<<' */
...@@ -852,7 +852,7 @@ class Item_func_bit: public Item_int_func ...@@ -852,7 +852,7 @@ class Item_func_bit: public Item_int_func
Item_func_bit(Item *a) :Item_int_func(a) {} Item_func_bit(Item *a) :Item_int_func(a) {}
void fix_length_and_dec() { unsigned_flag= 1; } void fix_length_and_dec() { unsigned_flag= 1; }
void print(String *str) { print_op(str); } void print(String *str) { print_op(str); }
bool check_partition_func_processor(byte *int_arg) { return FALSE; } bool check_partition_func_processor(byte *int_arg) {return FALSE;}
}; };
class Item_func_bit_or :public Item_func_bit class Item_func_bit_or :public Item_func_bit
...@@ -878,7 +878,7 @@ class Item_func_bit_count :public Item_int_func ...@@ -878,7 +878,7 @@ class Item_func_bit_count :public Item_int_func
longlong val_int(); longlong val_int();
const char *func_name() const { return "bit_count"; } const char *func_name() const { return "bit_count"; }
void fix_length_and_dec() { max_length=2; } void fix_length_and_dec() { max_length=2; }
bool check_partition_func_processor(byte *int_arg) { return FALSE; } bool check_partition_func_processor(byte *int_arg) {return FALSE;}
}; };
class Item_func_shift_left :public Item_func_bit class Item_func_shift_left :public Item_func_bit
...@@ -1318,7 +1318,7 @@ class Item_func_inet_aton : public Item_int_func ...@@ -1318,7 +1318,7 @@ class Item_func_inet_aton : public Item_int_func
longlong val_int(); longlong val_int();
const char *func_name() const { return "inet_aton"; } const char *func_name() const { return "inet_aton"; }
void fix_length_and_dec() { decimals = 0; max_length = 21; maybe_null=1;} void fix_length_and_dec() { decimals = 0; max_length = 21; maybe_null=1;}
bool check_partition_func_processor(byte *int_arg) { return FALSE; } bool check_partition_func_processor(byte *int_arg) {return FALSE;}
}; };
......
...@@ -50,7 +50,7 @@ class Item_func_md5 :public Item_str_func ...@@ -50,7 +50,7 @@ class Item_func_md5 :public Item_str_func
String *val_str(String *); String *val_str(String *);
void fix_length_and_dec(); void fix_length_and_dec();
const char *func_name() const { return "md5"; } const char *func_name() const { return "md5"; }
bool check_partition_func_processor(byte *int_arg) { return FALSE; } bool check_partition_func_processor(byte *int_arg) {return FALSE;}
}; };
...@@ -94,7 +94,7 @@ class Item_func_concat :public Item_str_func ...@@ -94,7 +94,7 @@ class Item_func_concat :public Item_str_func
String *val_str(String *); String *val_str(String *);
void fix_length_and_dec(); void fix_length_and_dec();
const char *func_name() const { return "concat"; } const char *func_name() const { return "concat"; }
bool check_partition_func_processor(byte *int_arg) { return FALSE; } bool check_partition_func_processor(byte *int_arg) {return FALSE;}
}; };
class Item_func_concat_ws :public Item_str_func class Item_func_concat_ws :public Item_str_func
...@@ -116,7 +116,7 @@ class Item_func_reverse :public Item_str_func ...@@ -116,7 +116,7 @@ class Item_func_reverse :public Item_str_func
String *val_str(String *); String *val_str(String *);
void fix_length_and_dec(); void fix_length_and_dec();
const char *func_name() const { return "reverse"; } const char *func_name() const { return "reverse"; }
bool check_partition_func_processor(byte *int_arg) { return FALSE; } bool check_partition_func_processor(byte *int_arg) {return FALSE;}
}; };
...@@ -154,7 +154,7 @@ class Item_str_conv :public Item_str_func ...@@ -154,7 +154,7 @@ class Item_str_conv :public Item_str_func
public: public:
Item_str_conv(Item *item) :Item_str_func(item) {} Item_str_conv(Item *item) :Item_str_func(item) {}
String *val_str(String *); String *val_str(String *);
bool check_partition_func_processor(byte *int_arg) { return FALSE; } bool check_partition_func_processor(byte *int_arg) {return FALSE;}
}; };
...@@ -457,7 +457,7 @@ class Item_func_soundex :public Item_str_func ...@@ -457,7 +457,7 @@ class Item_func_soundex :public Item_str_func
String *val_str(String *); String *val_str(String *);
void fix_length_and_dec(); void fix_length_and_dec();
const char *func_name() const { return "soundex"; } const char *func_name() const { return "soundex"; }
bool check_partition_func_processor(byte *int_arg) { return FALSE; } bool check_partition_func_processor(byte *int_arg) {return FALSE;}
}; };
...@@ -558,7 +558,7 @@ class Item_func_rpad :public Item_str_func ...@@ -558,7 +558,7 @@ class Item_func_rpad :public Item_str_func
String *val_str(String *); String *val_str(String *);
void fix_length_and_dec(); void fix_length_and_dec();
const char *func_name() const { return "rpad"; } const char *func_name() const { return "rpad"; }
bool check_partition_func_processor(byte *int_arg) { return FALSE; } bool check_partition_func_processor(byte *int_arg) {return FALSE;}
}; };
...@@ -571,7 +571,7 @@ class Item_func_lpad :public Item_str_func ...@@ -571,7 +571,7 @@ class Item_func_lpad :public Item_str_func
String *val_str(String *); String *val_str(String *);
void fix_length_and_dec(); void fix_length_and_dec();
const char *func_name() const { return "lpad"; } const char *func_name() const { return "lpad"; }
bool check_partition_func_processor(byte *int_arg) { return FALSE; } bool check_partition_func_processor(byte *int_arg) {return FALSE;}
}; };
...@@ -586,7 +586,7 @@ class Item_func_conv :public Item_str_func ...@@ -586,7 +586,7 @@ class Item_func_conv :public Item_str_func
collation.set(default_charset()); collation.set(default_charset());
max_length= 64; max_length= 64;
} }
bool check_partition_func_processor(byte *int_arg) { return FALSE; } bool check_partition_func_processor(byte *int_arg) {return FALSE;}
}; };
...@@ -603,7 +603,7 @@ class Item_func_hex :public Item_str_func ...@@ -603,7 +603,7 @@ class Item_func_hex :public Item_str_func
decimals=0; decimals=0;
max_length=args[0]->max_length*2*collation.collation->mbmaxlen; max_length=args[0]->max_length*2*collation.collation->mbmaxlen;
} }
bool check_partition_func_processor(byte *int_arg) { return FALSE; } bool check_partition_func_processor(byte *int_arg) {return FALSE;}
}; };
class Item_func_unhex :public Item_str_func class Item_func_unhex :public Item_str_func
...@@ -619,7 +619,7 @@ class Item_func_unhex :public Item_str_func ...@@ -619,7 +619,7 @@ class Item_func_unhex :public Item_str_func
decimals=0; decimals=0;
max_length=(1+args[0]->max_length)/2; max_length=(1+args[0]->max_length)/2;
} }
bool check_partition_func_processor(byte *int_arg) { return FALSE; } bool check_partition_func_processor(byte *int_arg) {return FALSE;}
}; };
...@@ -643,7 +643,7 @@ class Item_func_binary :public Item_str_func ...@@ -643,7 +643,7 @@ class Item_func_binary :public Item_str_func
} }
void print(String *str); void print(String *str);
const char *func_name() const { return "cast_as_binary"; } const char *func_name() const { return "cast_as_binary"; }
bool check_partition_func_processor(byte *int_arg) { return FALSE; } bool check_partition_func_processor(byte *int_arg) {return FALSE;}
}; };
...@@ -683,7 +683,7 @@ class Item_func_inet_ntoa : public Item_str_func ...@@ -683,7 +683,7 @@ class Item_func_inet_ntoa : public Item_str_func
String* val_str(String* str); String* val_str(String* str);
const char *func_name() const { return "inet_ntoa"; } const char *func_name() const { return "inet_ntoa"; }
void fix_length_and_dec() { decimals = 0; max_length=3*8+7; } void fix_length_and_dec() { decimals = 0; max_length=3*8+7; }
bool check_partition_func_processor(byte *int_arg) { return FALSE; } bool check_partition_func_processor(byte *int_arg) {return FALSE;}
}; };
class Item_func_quote :public Item_str_func class Item_func_quote :public Item_str_func
...@@ -698,7 +698,7 @@ class Item_func_quote :public Item_str_func ...@@ -698,7 +698,7 @@ class Item_func_quote :public Item_str_func
collation.set(args[0]->collation); collation.set(args[0]->collation);
max_length= args[0]->max_length * 2 + 2; max_length= args[0]->max_length * 2 + 2;
} }
bool check_partition_func_processor(byte *int_arg) { return FALSE; } bool check_partition_func_processor(byte *int_arg) {return FALSE;}
}; };
class Item_func_conv_charset :public Item_str_func class Item_func_conv_charset :public Item_str_func
...@@ -799,7 +799,7 @@ class Item_func_crc32 :public Item_int_func ...@@ -799,7 +799,7 @@ class Item_func_crc32 :public Item_int_func
const char *func_name() const { return "crc32"; } const char *func_name() const { return "crc32"; }
void fix_length_and_dec() { max_length=10; } void fix_length_and_dec() { max_length=10; }
longlong val_int(); longlong val_int();
bool check_partition_func_processor(byte *int_arg) { return FALSE; } bool check_partition_func_processor(byte *int_arg) {return FALSE;}
}; };
class Item_func_uncompressed_length : public Item_int_func class Item_func_uncompressed_length : public Item_int_func
......
...@@ -39,7 +39,7 @@ class Item_func_period_add :public Item_int_func ...@@ -39,7 +39,7 @@ class Item_func_period_add :public Item_int_func
{ {
max_length=6*MY_CHARSET_BIN_MB_MAXLEN; max_length=6*MY_CHARSET_BIN_MB_MAXLEN;
} }
bool check_partition_func_processor(byte *int_arg) { return FALSE;} bool check_partition_func_processor(byte *int_arg) {return FALSE;}
}; };
...@@ -54,7 +54,7 @@ class Item_func_period_diff :public Item_int_func ...@@ -54,7 +54,7 @@ class Item_func_period_diff :public Item_int_func
decimals=0; decimals=0;
max_length=6*MY_CHARSET_BIN_MB_MAXLEN; max_length=6*MY_CHARSET_BIN_MB_MAXLEN;
} }
bool check_partition_func_processor(byte *int_arg) { return FALSE;} bool check_partition_func_processor(byte *int_arg) {return FALSE;}
}; };
...@@ -71,7 +71,7 @@ class Item_func_to_days :public Item_int_func ...@@ -71,7 +71,7 @@ class Item_func_to_days :public Item_int_func
maybe_null=1; maybe_null=1;
} }
enum_monotonicity_info get_monotonicity_info() const; enum_monotonicity_info get_monotonicity_info() const;
bool check_partition_func_processor(byte *int_arg) { return FALSE;} bool check_partition_func_processor(byte *int_arg) {return FALSE;}
}; };
...@@ -87,7 +87,7 @@ class Item_func_dayofmonth :public Item_int_func ...@@ -87,7 +87,7 @@ class Item_func_dayofmonth :public Item_int_func
max_length=2*MY_CHARSET_BIN_MB_MAXLEN; max_length=2*MY_CHARSET_BIN_MB_MAXLEN;
maybe_null=1; maybe_null=1;
} }
bool check_partition_func_processor(byte *int_arg) { return FALSE;} bool check_partition_func_processor(byte *int_arg) {return FALSE;}
}; };
...@@ -112,7 +112,7 @@ class Item_func_month :public Item_func ...@@ -112,7 +112,7 @@ class Item_func_month :public Item_func
max_length=2*MY_CHARSET_BIN_MB_MAXLEN; max_length=2*MY_CHARSET_BIN_MB_MAXLEN;
maybe_null=1; maybe_null=1;
} }
bool check_partition_func_processor(byte *int_arg) { return FALSE;} bool check_partition_func_processor(byte *int_arg) {return FALSE;}
}; };
...@@ -145,7 +145,7 @@ class Item_func_dayofyear :public Item_int_func ...@@ -145,7 +145,7 @@ class Item_func_dayofyear :public Item_int_func
max_length=3*MY_CHARSET_BIN_MB_MAXLEN; max_length=3*MY_CHARSET_BIN_MB_MAXLEN;
maybe_null=1; maybe_null=1;
} }
bool check_partition_func_processor(byte *int_arg) { return FALSE;} bool check_partition_func_processor(byte *int_arg) {return FALSE;}
}; };
...@@ -161,7 +161,7 @@ class Item_func_hour :public Item_int_func ...@@ -161,7 +161,7 @@ class Item_func_hour :public Item_int_func
max_length=2*MY_CHARSET_BIN_MB_MAXLEN; max_length=2*MY_CHARSET_BIN_MB_MAXLEN;
maybe_null=1; maybe_null=1;
} }
bool check_partition_func_processor(byte *int_arg) { return FALSE;} bool check_partition_func_processor(byte *int_arg) {return FALSE;}
}; };
...@@ -177,7 +177,7 @@ class Item_func_minute :public Item_int_func ...@@ -177,7 +177,7 @@ class Item_func_minute :public Item_int_func
max_length=2*MY_CHARSET_BIN_MB_MAXLEN; max_length=2*MY_CHARSET_BIN_MB_MAXLEN;
maybe_null=1; maybe_null=1;
} }
bool check_partition_func_processor(byte *int_arg) { return FALSE;} bool check_partition_func_processor(byte *int_arg) {return FALSE;}
}; };
...@@ -193,7 +193,7 @@ class Item_func_quarter :public Item_int_func ...@@ -193,7 +193,7 @@ class Item_func_quarter :public Item_int_func
max_length=1*MY_CHARSET_BIN_MB_MAXLEN; max_length=1*MY_CHARSET_BIN_MB_MAXLEN;
maybe_null=1; maybe_null=1;
} }
bool check_partition_func_processor(byte *int_arg) { return FALSE;} bool check_partition_func_processor(byte *int_arg) {return FALSE;}
}; };
...@@ -209,7 +209,7 @@ class Item_func_second :public Item_int_func ...@@ -209,7 +209,7 @@ class Item_func_second :public Item_int_func
max_length=2*MY_CHARSET_BIN_MB_MAXLEN; max_length=2*MY_CHARSET_BIN_MB_MAXLEN;
maybe_null=1; maybe_null=1;
} }
bool check_partition_func_processor(byte *int_arg) { return FALSE;} bool check_partition_func_processor(byte *int_arg) {return FALSE;}
}; };
...@@ -225,7 +225,7 @@ class Item_func_week :public Item_int_func ...@@ -225,7 +225,7 @@ class Item_func_week :public Item_int_func
max_length=2*MY_CHARSET_BIN_MB_MAXLEN; max_length=2*MY_CHARSET_BIN_MB_MAXLEN;
maybe_null=1; maybe_null=1;
} }
bool check_partition_func_processor(byte *int_arg) { return FALSE;} bool check_partition_func_processor(byte *int_arg) {return FALSE;}
}; };
class Item_func_yearweek :public Item_int_func class Item_func_yearweek :public Item_int_func
...@@ -240,7 +240,7 @@ class Item_func_yearweek :public Item_int_func ...@@ -240,7 +240,7 @@ class Item_func_yearweek :public Item_int_func
max_length=6*MY_CHARSET_BIN_MB_MAXLEN; max_length=6*MY_CHARSET_BIN_MB_MAXLEN;
maybe_null=1; maybe_null=1;
} }
bool check_partition_func_processor(byte *int_arg) { return FALSE;} bool check_partition_func_processor(byte *int_arg) {return FALSE;}
}; };
...@@ -257,7 +257,7 @@ class Item_func_year :public Item_int_func ...@@ -257,7 +257,7 @@ class Item_func_year :public Item_int_func
max_length=4*MY_CHARSET_BIN_MB_MAXLEN; max_length=4*MY_CHARSET_BIN_MB_MAXLEN;
maybe_null=1; maybe_null=1;
} }
bool check_partition_func_processor(byte *int_arg) { return FALSE;} bool check_partition_func_processor(byte *int_arg) {return FALSE;}
}; };
...@@ -287,7 +287,7 @@ class Item_func_weekday :public Item_func ...@@ -287,7 +287,7 @@ class Item_func_weekday :public Item_func
max_length=1*MY_CHARSET_BIN_MB_MAXLEN; max_length=1*MY_CHARSET_BIN_MB_MAXLEN;
maybe_null=1; maybe_null=1;
} }
bool check_partition_func_processor(byte *int_arg) { return FALSE;} bool check_partition_func_processor(byte *int_arg) {return FALSE;}
}; };
class Item_func_dayname :public Item_func_weekday class Item_func_dayname :public Item_func_weekday
...@@ -320,7 +320,7 @@ class Item_func_unix_timestamp :public Item_int_func ...@@ -320,7 +320,7 @@ class Item_func_unix_timestamp :public Item_int_func
decimals=0; decimals=0;
max_length=10*MY_CHARSET_BIN_MB_MAXLEN; max_length=10*MY_CHARSET_BIN_MB_MAXLEN;
} }
bool check_partition_func_processor(byte *int_arg) { return FALSE;} bool check_partition_func_processor(byte *int_arg) {return FALSE;}
}; };
...@@ -335,7 +335,7 @@ class Item_func_time_to_sec :public Item_int_func ...@@ -335,7 +335,7 @@ class Item_func_time_to_sec :public Item_int_func
decimals=0; decimals=0;
max_length=10*MY_CHARSET_BIN_MB_MAXLEN; max_length=10*MY_CHARSET_BIN_MB_MAXLEN;
} }
bool check_partition_func_processor(byte *int_arg) { return FALSE;} bool check_partition_func_processor(byte *int_arg) {return FALSE;}
}; };
...@@ -545,7 +545,7 @@ class Item_func_from_days :public Item_date ...@@ -545,7 +545,7 @@ class Item_func_from_days :public Item_date
Item_func_from_days(Item *a) :Item_date(a) {} Item_func_from_days(Item *a) :Item_date(a) {}
const char *func_name() const { return "from_days"; } const char *func_name() const { return "from_days"; }
bool get_date(TIME *res, uint fuzzy_date); bool get_date(TIME *res, uint fuzzy_date);
bool check_partition_func_processor(byte *int_arg) { return FALSE;} bool check_partition_func_processor(byte *int_arg) {return FALSE;}
}; };
...@@ -563,7 +563,7 @@ class Item_func_date_format :public Item_str_func ...@@ -563,7 +563,7 @@ class Item_func_date_format :public Item_str_func
void fix_length_and_dec(); void fix_length_and_dec();
uint format_length(const String *format); uint format_length(const String *format);
bool eq(const Item *item, bool binary_cmp) const; bool eq(const Item *item, bool binary_cmp) const;
bool check_partition_func_processor(byte *int_arg) { return FALSE;} bool check_partition_func_processor(byte *int_arg) {return FALSE;}
}; };
...@@ -582,7 +582,7 @@ class Item_func_from_unixtime :public Item_date_func ...@@ -582,7 +582,7 @@ class Item_func_from_unixtime :public Item_date_func
const char *func_name() const { return "from_unixtime"; } const char *func_name() const { return "from_unixtime"; }
void fix_length_and_dec(); void fix_length_and_dec();
bool get_date(TIME *res, uint fuzzy_date); bool get_date(TIME *res, uint fuzzy_date);
bool check_partition_func_processor(byte *int_arg) { return FALSE;} bool check_partition_func_processor(byte *int_arg) {return FALSE;}
}; };
...@@ -651,7 +651,7 @@ class Item_func_sec_to_time :public Item_str_func ...@@ -651,7 +651,7 @@ class Item_func_sec_to_time :public Item_str_func
return tmp_table_field_from_field_type(table, 0); return tmp_table_field_from_field_type(table, 0);
} }
bool result_as_longlong() { return TRUE; } bool result_as_longlong() { return TRUE; }
bool check_partition_func_processor(byte *int_arg) { return FALSE;} bool check_partition_func_processor(byte *int_arg) {return FALSE;}
}; };
...@@ -674,7 +674,7 @@ class Item_date_add_interval :public Item_date_func ...@@ -674,7 +674,7 @@ class Item_date_add_interval :public Item_date_func
bool get_date(TIME *res, uint fuzzy_date); bool get_date(TIME *res, uint fuzzy_date);
bool eq(const Item *item, bool binary_cmp) const; bool eq(const Item *item, bool binary_cmp) const;
void print(String *str); void print(String *str);
bool check_partition_func_processor(byte *int_arg) { return FALSE;} bool check_partition_func_processor(byte *int_arg) {return FALSE;}
}; };
...@@ -692,7 +692,7 @@ class Item_extract :public Item_int_func ...@@ -692,7 +692,7 @@ class Item_extract :public Item_int_func
void fix_length_and_dec(); void fix_length_and_dec();
bool eq(const Item *item, bool binary_cmp) const; bool eq(const Item *item, bool binary_cmp) const;
void print(String *str); void print(String *str);
bool check_partition_func_processor(byte *int_arg) { return FALSE;} bool check_partition_func_processor(byte *int_arg) {return FALSE;}
}; };
...@@ -729,7 +729,7 @@ class Item_typecast_maybe_null :public Item_typecast ...@@ -729,7 +729,7 @@ class Item_typecast_maybe_null :public Item_typecast
max_length=args[0]->max_length; max_length=args[0]->max_length;
maybe_null= 1; maybe_null= 1;
} }
bool check_partition_func_processor(byte *int_arg) { return FALSE;} bool check_partition_func_processor(byte *int_arg) {return FALSE;}
}; };
...@@ -749,7 +749,7 @@ class Item_char_typecast :public Item_typecast ...@@ -749,7 +749,7 @@ class Item_char_typecast :public Item_typecast
String *val_str(String *a); String *val_str(String *a);
void fix_length_and_dec(); void fix_length_and_dec();
void print(String *str); void print(String *str);
bool check_partition_func_processor(byte *int_arg) { return FALSE;} bool check_partition_func_processor(byte *int_arg) {return FALSE;}
}; };
...@@ -829,7 +829,7 @@ class Item_func_makedate :public Item_str_func ...@@ -829,7 +829,7 @@ class Item_func_makedate :public Item_str_func
} }
bool result_as_longlong() { return TRUE; } bool result_as_longlong() { return TRUE; }
longlong val_int(); longlong val_int();
bool check_partition_func_processor(byte *int_arg) { return FALSE;} bool check_partition_func_processor(byte *int_arg) {return FALSE;}
}; };
...@@ -852,7 +852,7 @@ class Item_func_add_time :public Item_str_func ...@@ -852,7 +852,7 @@ class Item_func_add_time :public Item_str_func
} }
void print(String *str); void print(String *str);
const char *func_name() const { return "add_time"; } const char *func_name() const { return "add_time"; }
bool check_partition_func_processor(byte *int_arg) { return FALSE;} bool check_partition_func_processor(byte *int_arg) {return FALSE;}
}; };
class Item_func_timediff :public Item_str_func class Item_func_timediff :public Item_str_func
...@@ -892,7 +892,7 @@ class Item_func_maketime :public Item_str_func ...@@ -892,7 +892,7 @@ class Item_func_maketime :public Item_str_func
{ {
return tmp_table_field_from_field_type(table, 0); return tmp_table_field_from_field_type(table, 0);
} }
bool check_partition_func_processor(byte *int_arg) { return FALSE;} bool check_partition_func_processor(byte *int_arg) {return FALSE;}
}; };
class Item_func_microsecond :public Item_int_func class Item_func_microsecond :public Item_int_func
...@@ -906,7 +906,7 @@ class Item_func_microsecond :public Item_int_func ...@@ -906,7 +906,7 @@ class Item_func_microsecond :public Item_int_func
decimals=0; decimals=0;
maybe_null=1; maybe_null=1;
} }
bool check_partition_func_processor(byte *int_arg) { return FALSE;} bool check_partition_func_processor(byte *int_arg) {return FALSE;}
}; };
...@@ -924,7 +924,7 @@ class Item_func_timestamp_diff :public Item_int_func ...@@ -924,7 +924,7 @@ class Item_func_timestamp_diff :public Item_int_func
maybe_null=1; maybe_null=1;
} }
void print(String *str); void print(String *str);
bool check_partition_func_processor(byte *int_arg) { return FALSE;} bool check_partition_func_processor(byte *int_arg) {return FALSE;}
}; };
...@@ -971,7 +971,7 @@ class Item_func_str_to_date :public Item_str_func ...@@ -971,7 +971,7 @@ class Item_func_str_to_date :public Item_str_func
{ {
return tmp_table_field_from_field_type(table, 1); return tmp_table_field_from_field_type(table, 1);
} }
bool check_partition_func_processor(byte *int_arg) { return FALSE;} bool check_partition_func_processor(byte *int_arg) {return FALSE;}
}; };
......
...@@ -42,7 +42,7 @@ class Item_func_xml_extractvalue: public Item_xml_str_func ...@@ -42,7 +42,7 @@ class Item_func_xml_extractvalue: public Item_xml_str_func
Item_func_xml_extractvalue(Item *a,Item *b) :Item_xml_str_func(a,b) {} Item_func_xml_extractvalue(Item *a,Item *b) :Item_xml_str_func(a,b) {}
const char *func_name() const { return "extractvalue"; } const char *func_name() const { return "extractvalue"; }
String *val_str(String *); String *val_str(String *);
bool check_partition_func_processor(byte *int_arg) { return FALSE; } bool check_partition_func_processor(byte *int_arg) {return FALSE;}
}; };
......
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