summaryrefslogtreecommitdiff
path: root/sql/item_timefunc.cc
diff options
context:
space:
mode:
authorAlexander Barkov <bar@mnogosearch.org>2013-11-08 14:30:35 +0400
committerAlexander Barkov <bar@mnogosearch.org>2013-11-08 14:30:35 +0400
commitd79d0c4045f5b93ded001ca6b963727b3362cd15 (patch)
tree5645bdbdae6cd831846798f18815e11e21d60c2e /sql/item_timefunc.cc
parenta588de1fe8d6b376cabb67581374078c7a7d38d7 (diff)
parenta33bb001445d2576f15437d9392bc70736ab419a (diff)
downloadmariadb-git-d79d0c4045f5b93ded001ca6b963727b3362cd15.tar.gz
merge 5.3 -> 5.5
Diffstat (limited to 'sql/item_timefunc.cc')
-rw-r--r--sql/item_timefunc.cc18
1 files changed, 15 insertions, 3 deletions
diff --git a/sql/item_timefunc.cc b/sql/item_timefunc.cc
index d7858d8e7d8..40068bc49c0 100644
--- a/sql/item_timefunc.cc
+++ b/sql/item_timefunc.cc
@@ -3096,13 +3096,25 @@ get_date_time_result_type(const char *format, uint length)
void Item_func_str_to_date::fix_length_and_dec()
{
+ if (agg_arg_charsets(collation, args, 2, MY_COLL_ALLOW_CONV, 1))
+ return;
+ if (collation.collation->mbminlen > 1)
+ {
+#if MYSQL_VERSION_ID > 50500
+ internal_charset= &my_charset_utf8mb4_general_ci;
+#else
+ internal_charset= &my_charset_utf8_general_ci;
+#endif
+ }
+
cached_field_type= MYSQL_TYPE_DATETIME;
decimals= NOT_FIXED_DEC;
if ((const_item= args[1]->const_item()))
{
char format_buff[64];
String format_str(format_buff, sizeof(format_buff), &my_charset_bin);
- String *format= args[1]->val_str(&format_str);
+ String *format= args[1]->val_str(&format_str, &format_converter,
+ internal_charset);
decimals= 0;
if (!args[1]->null_value)
{
@@ -3140,8 +3152,8 @@ bool Item_func_str_to_date::get_date(MYSQL_TIME *ltime, ulonglong fuzzy_date)
String format_str(format_buff, sizeof(format_buff), &my_charset_bin),
*format;
- val= args[0]->val_str(&val_string);
- format= args[1]->val_str(&format_str);
+ val= args[0]->val_str(&val_string, &subject_converter, internal_charset);
+ format= args[1]->val_str(&format_str, &format_converter, internal_charset);
if (args[0]->null_value || args[1]->null_value)
return (null_value=1);