diff options
Diffstat (limited to 'sql/item_cmpfunc.h')
-rw-r--r-- | sql/item_cmpfunc.h | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/sql/item_cmpfunc.h b/sql/item_cmpfunc.h index 0a91d45c2a2..ffe17f8a0bc 100644 --- a/sql/item_cmpfunc.h +++ b/sql/item_cmpfunc.h @@ -292,6 +292,7 @@ public: Item_func_truth(thd, a, true, false) {} ~Item_func_isnottrue() {} virtual const char* func_name() const { return "isnottrue"; } + bool find_not_null_fields(table_map allowed) { return false; } Item *get_copy(THD *thd) { return get_item_copy<Item_func_isnottrue>(thd, this); } bool eval_not_null_tables(void *) { not_null_tables_cache= 0; return false; } @@ -324,6 +325,7 @@ public: Item_func_truth(thd, a, false, false) {} ~Item_func_isnotfalse() {} virtual const char* func_name() const { return "isnotfalse"; } + bool find_not_null_fields(table_map allowed) { return false; } Item *get_copy(THD *thd) { return get_item_copy<Item_func_isnotfalse>(thd, this); } bool eval_not_null_tables(void *) { not_null_tables_cache= 0; return false; } @@ -386,6 +388,7 @@ public: virtual void get_cache_parameters(List<Item> ¶meters); bool is_top_level_item(); bool eval_not_null_tables(void *opt_arg); + bool find_not_null_fields(table_map allowed); void fix_after_pullout(st_select_lex *new_parent, Item **ref, bool merge); bool invisible_mode(); void reset_cache() { cache= NULL; } @@ -582,6 +585,7 @@ public: void print(String *str, enum_query_type query_type) { Item_func::print_op(str, query_type); } longlong val_int(); + bool find_not_null_fields(table_map allowed) { return false; } Item *neg_transformer(THD *thd); Item* propagate_equal_fields(THD *thd, const Context &ctx, COND_EQUAL *cond) { @@ -603,6 +607,7 @@ public: longlong val_int(); enum Functype functype() const { return NOT_FUNC; } const char *func_name() const { return "not"; } + bool find_not_null_fields(table_map allowed) { return false; } enum precedence precedence() const { return BANG_PRECEDENCE; } Item *neg_transformer(THD *thd); bool fix_fields(THD *, Item **); @@ -747,6 +752,7 @@ public: longlong val_int(); bool fix_length_and_dec(); table_map not_null_tables() const { return 0; } + bool find_not_null_fields(table_map allowed) { return false; } enum Functype functype() const { return EQUAL_FUNC; } enum Functype rev_functype() const { return EQUAL_FUNC; } cond_result eq_cmp_result() const { return COND_TRUE; } @@ -924,6 +930,7 @@ public: bool fix_length_and_dec_numeric(THD *); virtual void print(String *str, enum_query_type query_type); bool eval_not_null_tables(void *opt_arg); + bool find_not_null_fields(table_map allowed); void fix_after_pullout(st_select_lex *new_parent, Item **ref, bool merge); bool count_sargable_conds(void *arg); void add_key_fields(JOIN *join, KEY_FIELD **key_fields, @@ -1425,7 +1432,7 @@ public: ((Item_int*) item)->unsigned_flag= (bool) ((packed_longlong*) base)[pos].unsigned_flag; } - const Type_handler *type_handler() const { return &type_handler_longlong; } + const Type_handler *type_handler() const { return &type_handler_slonglong; } friend int cmp_longlong(void *cmp_arg, packed_longlong *a,packed_longlong *b); }; @@ -2449,6 +2456,7 @@ public: const char *func_name() const { return "in"; } enum precedence precedence() const { return CMP_PRECEDENCE; } bool eval_not_null_tables(void *opt_arg); + bool find_not_null_fields(table_map allowed); void fix_after_pullout(st_select_lex *new_parent, Item **ref, bool merge); bool count_sargable_conds(void *arg); Item *get_copy(THD *thd) @@ -2592,6 +2600,7 @@ public: COND *remove_eq_conds(THD *thd, Item::cond_result *cond_value, bool top_level); table_map not_null_tables() const { return 0; } + bool find_not_null_fields(table_map allowed); Item *neg_transformer(THD *thd); Item *get_copy(THD *thd) { return get_item_copy<Item_func_isnull>(thd, this); } @@ -2799,7 +2808,6 @@ class Regexp_processor_pcre bool m_conversion_is_needed; bool m_is_const; int m_library_flags; - CHARSET_INFO *m_data_charset; CHARSET_INFO *m_library_charset; String m_prev_pattern; int m_pcre_exec_rc; @@ -2816,8 +2824,7 @@ public: Regexp_processor_pcre() : m_pcre(NULL), m_conversion_is_needed(true), m_is_const(0), m_library_flags(0), - m_data_charset(&my_charset_utf8_general_ci), - m_library_charset(&my_charset_utf8_general_ci) + m_library_charset(&my_charset_utf8mb3_general_ci) { m_pcre_extra.flags= PCRE_EXTRA_MATCH_LIMIT_RECURSION; m_pcre_extra.match_limit_recursion= 100L; @@ -2834,7 +2841,7 @@ public: // Convert text data to utf-8. m_library_charset= data_charset == &my_charset_bin ? - &my_charset_bin : &my_charset_utf8_general_ci; + &my_charset_bin : &my_charset_utf8mb3_general_ci; m_conversion_is_needed= (data_charset != &my_charset_bin) && !my_charset_same(data_charset, m_library_charset); @@ -3016,6 +3023,7 @@ public: Item *compile(THD *thd, Item_analyzer analyzer, uchar **arg_p, Item_transformer transformer, uchar *arg_t); bool eval_not_null_tables(void *opt_arg); + bool find_not_null_fields(table_map allowed); Item *build_clone(THD *thd); bool excl_dep_on_table(table_map tab_map); bool excl_dep_on_grouping_fields(st_select_lex *sel); @@ -3181,6 +3189,7 @@ public: eval_item= NULL; } void update_used_tables(); + bool find_not_null_fields(table_map allowed); COND *build_equal_items(THD *thd, COND_EQUAL *inherited, bool link_item_fields, COND_EQUAL **cond_equal_ref); |