summaryrefslogtreecommitdiffstats
path: root/sql/sql_type.cc
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--sql/sql_type.cc52
1 files changed, 36 insertions, 16 deletions
diff --git a/sql/sql_type.cc b/sql/sql_type.cc
index 277f495a..a086e338 100644
--- a/sql/sql_type.cc
+++ b/sql/sql_type.cc
@@ -1446,22 +1446,6 @@ Type_handler_string_result::charset_for_protocol(const Item *item) const
}
-const Type_handler *
-Type_handler::get_handler_by_cmp_type(Item_result type)
-{
- switch (type) {
- case REAL_RESULT: return &type_handler_double;
- case INT_RESULT: return &type_handler_slonglong;
- case DECIMAL_RESULT: return &type_handler_newdecimal;
- case STRING_RESULT: return &type_handler_long_blob;
- case TIME_RESULT: return &type_handler_datetime;
- case ROW_RESULT: return &type_handler_row;
- }
- DBUG_ASSERT(0);
- return &type_handler_string;
-}
-
-
/*
If we have a mixture of:
- a MariaDB standard (built-in permanent) data type, and
@@ -2258,6 +2242,34 @@ Type_handler::get_handler_by_real_type(enum_field_types type)
}
+const Type_handler *
+Type_handler::handler_by_log_event_data_type(THD *thd,
+ const Log_event_data_type &type)
+{
+ if (type.data_type_name().length)
+ {
+ const Type_handler *th= handler_by_name(thd, type.data_type_name());
+ if (th)
+ return th;
+ }
+ switch (type.type()) {
+ case STRING_RESULT:
+ case ROW_RESULT:
+ case TIME_RESULT:
+ break;
+ case REAL_RESULT:
+ return &type_handler_double;
+ case INT_RESULT:
+ if (type.is_unsigned())
+ return &type_handler_ulonglong;
+ return &type_handler_slonglong;
+ case DECIMAL_RESULT:
+ return &type_handler_newdecimal;
+ }
+ return &type_handler_long_blob;
+}
+
+
/**
Create a DOUBLE field by default.
*/
@@ -5668,6 +5680,14 @@ Type_handler_string_result::Item_func_hybrid_field_type_get_date(
/***************************************************************************/
+bool Type_handler::Item_bool_rowready_func2_fix_length_and_dec(THD *thd,
+ Item_bool_rowready_func2 *func) const
+{
+ return func->fix_length_and_dec_generic(thd, this);
+}
+
+/***************************************************************************/
+
bool Type_handler_numeric::
Item_func_between_fix_length_and_dec(Item_func_between *func) const
{