summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexander Barkov <bar@mariadb.org>2015-12-02 09:26:34 +0400
committerAlexander Barkov <bar@mariadb.org>2015-12-02 09:26:34 +0400
commit47a8c6c39713e03dfba46d82d013b1be7380ee43 (patch)
tree2cd37f6cbb6713a6ced5803b3f0678b24dbf05d8
parent3e471bf3e9ed514d455f5ee9865dcce59ef8f59f (diff)
downloadmariadb-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.cc3
-rw-r--r--sql/item.h19
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.
*****************************************************************************/