summaryrefslogtreecommitdiff
path: root/sql/sp.cc
diff options
context:
space:
mode:
Diffstat (limited to 'sql/sp.cc')
-rw-r--r--sql/sp.cc33
1 files changed, 18 insertions, 15 deletions
diff --git a/sql/sp.cc b/sql/sp.cc
index ac9203ffb8a..4cd5de43606 100644
--- a/sql/sp.cc
+++ b/sql/sp.cc
@@ -122,12 +122,12 @@ TABLE_FIELD_TYPE proc_table_fields[MYSQL_PROC_FIELD_COUNT] =
{
{ STRING_WITH_LEN("db") },
{ STRING_WITH_LEN("char(64)") },
- { STRING_WITH_LEN("utf8") }
+ { STRING_WITH_LEN("utf8mb3") }
},
{
{ STRING_WITH_LEN("name") },
{ STRING_WITH_LEN("char(64)") },
- { STRING_WITH_LEN("utf8") }
+ { STRING_WITH_LEN("utf8mb3") }
},
{
{ STRING_WITH_LEN("type") },
@@ -137,7 +137,7 @@ TABLE_FIELD_TYPE proc_table_fields[MYSQL_PROC_FIELD_COUNT] =
{
{ STRING_WITH_LEN("specific_name") },
{ STRING_WITH_LEN("char(64)") },
- { STRING_WITH_LEN("utf8") }
+ { STRING_WITH_LEN("utf8mb3") }
},
{
{ STRING_WITH_LEN("language") },
@@ -178,7 +178,7 @@ TABLE_FIELD_TYPE proc_table_fields[MYSQL_PROC_FIELD_COUNT] =
{
{ STRING_WITH_LEN("definer") },
{ STRING_WITH_LEN("varchar(") },
- { STRING_WITH_LEN("utf8") }
+ { STRING_WITH_LEN("utf8mb3") }
},
{
{ STRING_WITH_LEN("created") },
@@ -208,22 +208,22 @@ TABLE_FIELD_TYPE proc_table_fields[MYSQL_PROC_FIELD_COUNT] =
{
{ STRING_WITH_LEN("comment") },
{ STRING_WITH_LEN("text") },
- { STRING_WITH_LEN("utf8") }
+ { STRING_WITH_LEN("utf8mb3") }
},
{
{ STRING_WITH_LEN("character_set_client") },
{ STRING_WITH_LEN("char(32)") },
- { STRING_WITH_LEN("utf8") }
+ { STRING_WITH_LEN("utf8mb3") }
},
{
{ STRING_WITH_LEN("collation_connection") },
{ STRING_WITH_LEN("char(32)") },
- { STRING_WITH_LEN("utf8") }
+ { STRING_WITH_LEN("utf8mb3") }
},
{
{ STRING_WITH_LEN("db_collation") },
{ STRING_WITH_LEN("char(32)") },
- { STRING_WITH_LEN("utf8") }
+ { STRING_WITH_LEN("utf8mb3") }
},
{
{ STRING_WITH_LEN("body_utf8") },
@@ -285,12 +285,14 @@ private:
Stored_routine_creation_ctx implementation.
**************************************************************************/
-bool load_charset(MEM_ROOT *mem_root,
+bool load_charset(THD *thd,
+ MEM_ROOT *mem_root,
Field *field,
CHARSET_INFO *dflt_cs,
CHARSET_INFO **cs)
{
LEX_CSTRING cs_name;
+ myf utf8_flag= thd->get_utf8_flag();
if (field->val_str_nopad(mem_root, &cs_name))
{
@@ -299,7 +301,7 @@ bool load_charset(MEM_ROOT *mem_root,
}
DBUG_ASSERT(cs_name.str[cs_name.length] == 0);
- *cs= get_charset_by_csname(cs_name.str, MY_CS_PRIMARY, MYF(0));
+ *cs= get_charset_by_csname(cs_name.str, MY_CS_PRIMARY, MYF(utf8_flag));
if (*cs == NULL)
{
@@ -312,7 +314,7 @@ bool load_charset(MEM_ROOT *mem_root,
/*************************************************************************/
-bool load_collation(MEM_ROOT *mem_root,
+bool load_collation(THD *thd, MEM_ROOT *mem_root,
Field *field,
CHARSET_INFO *dflt_cl,
CHARSET_INFO **cl)
@@ -324,9 +326,10 @@ bool load_collation(MEM_ROOT *mem_root,
*cl= dflt_cl;
return TRUE;
}
+ myf utf8_flag= thd->get_utf8_flag();
DBUG_ASSERT(cl_name.str[cl_name.length] == 0);
- *cl= get_charset_by_name(cl_name.str, MYF(0));
+ *cl= get_charset_by_name(cl_name.str, MYF(utf8_flag));
if (*cl == NULL)
{
@@ -355,7 +358,7 @@ Stored_routine_creation_ctx::load_from_db(THD *thd,
bool invalid_creation_ctx= FALSE;
- if (load_charset(thd->mem_root,
+ if (load_charset(thd, thd->mem_root,
proc_tbl->field[MYSQL_PROC_FIELD_CHARACTER_SET_CLIENT],
thd->variables.character_set_client,
&client_cs))
@@ -368,7 +371,7 @@ Stored_routine_creation_ctx::load_from_db(THD *thd,
invalid_creation_ctx= TRUE;
}
- if (load_collation(thd->mem_root,
+ if (load_collation(thd,thd->mem_root,
proc_tbl->field[MYSQL_PROC_FIELD_COLLATION_CONNECTION],
thd->variables.collation_connection,
&connection_cl))
@@ -381,7 +384,7 @@ Stored_routine_creation_ctx::load_from_db(THD *thd,
invalid_creation_ctx= TRUE;
}
- if (load_collation(thd->mem_root,
+ if (load_collation(thd,thd->mem_root,
proc_tbl->field[MYSQL_PROC_FIELD_DB_COLLATION],
NULL,
&db_cl))