diff options
author | Alexander Barkov <bar@mariadb.org> | 2015-12-02 09:26:34 +0400 |
---|---|---|
committer | Alexander Barkov <bar@mariadb.org> | 2015-12-02 09:26:34 +0400 |
commit | 47a8c6c39713e03dfba46d82d013b1be7380ee43 (patch) | |
tree | 2cd37f6cbb6713a6ced5803b3f0678b24dbf05d8 | |
parent | 3e471bf3e9ed514d455f5ee9865dcce59ef8f59f (diff) | |
download | mariadb-git-47a8c6c39713e03dfba46d82d013b1be7380ee43.tar.gz |
- MDEV-9215 Detect cmp_type() and result_type() from field_type()
Part3: Deriving Item_splocal from Type_handler_hybrid_field_type
-rw-r--r-- | sql/item.cc | 3 | ||||
-rw-r--r-- | sql/item.h | 19 |
2 files changed, 9 insertions, 13 deletions
diff --git a/sql/item.cc b/sql/item.cc index ddeeb4c548f..eed9af1f86d 100644 --- a/sql/item.cc +++ b/sql/item.cc @@ -1437,8 +1437,7 @@ Item_splocal::Item_splocal(THD *thd, const LEX_STRING &sp_var_name, sp_var_type= real_type_to_type(sp_var_type); m_type= sp_map_item_type(sp_var_type); - m_field_type= sp_var_type; - m_result_type= sp_map_result_type(sp_var_type); + set_handler_by_field_type(sp_var_type); } diff --git a/sql/item.h b/sql/item.h index db1c3c007a4..d132817a56a 100644 --- a/sql/item.h +++ b/sql/item.h @@ -2031,13 +2031,12 @@ inline bool Item_sp_variable::send(Protocol *protocol, String *str) class Item_splocal :public Item_sp_variable, private Settable_routine_parameter, - public Rewritable_query_parameter + public Rewritable_query_parameter, + public Type_handler_hybrid_field_type { uint m_var_idx; Type m_type; - Item_result m_result_type; - enum_field_types m_field_type; public: Item_splocal(THD *thd, const LEX_STRING &sp_var_name, uint sp_var_idx, enum_field_types sp_var_type, @@ -2055,8 +2054,12 @@ public: inline uint get_var_idx() const; inline enum Type type() const; - inline Item_result result_type() const; - inline enum_field_types field_type() const { return m_field_type; } + enum_field_types field_type() const + { return Type_handler_hybrid_field_type::field_type(); } + enum Item_result result_type () const + { return Type_handler_hybrid_field_type::result_type(); } + enum Item_result cmp_type () const + { return Type_handler_hybrid_field_type::cmp_type(); } private: bool set_value(THD *thd, sp_rcontext *ctx, Item **it); @@ -2092,12 +2095,6 @@ inline enum Item::Type Item_splocal::type() const return m_type; } -inline Item_result Item_splocal::result_type() const -{ - return m_result_type; -} - - /***************************************************************************** A reference to case expression in SP, used in runtime. *****************************************************************************/ |