summaryrefslogtreecommitdiff
path: root/sql/field.cc
diff options
context:
space:
mode:
Diffstat (limited to 'sql/field.cc')
-rw-r--r--sql/field.cc26
1 files changed, 22 insertions, 4 deletions
diff --git a/sql/field.cc b/sql/field.cc
index eca3ea05d45..8f61e053d27 100644
--- a/sql/field.cc
+++ b/sql/field.cc
@@ -4906,7 +4906,7 @@ String *Field_enum::val_str(String *val_buffer __attribute__((unused)),
else
val_ptr->set((const char*) typelib->type_names[tmp-1],
(uint) strlen(typelib->type_names[tmp-1]),
- default_charset_info);
+ field_charset);
return val_ptr;
}
@@ -4947,6 +4947,15 @@ void Field_enum::sql_type(String &res) const
flag=1;
}
res.append(')');
+ if (binary())
+ {
+ res.append(" binary");
+ }
+ else
+ {
+ res.append(" character set ");
+ res.append(field_charset->name);
+ }
}
@@ -5050,7 +5059,7 @@ String *Field_set::val_str(String *val_buffer,
val_buffer->append(field_separator);
String str(typelib->type_names[bitnr],
(uint) strlen(typelib->type_names[bitnr]),
- default_charset_info);
+ field_charset);
val_buffer->append(str);
}
tmp>>=1;
@@ -5074,6 +5083,15 @@ void Field_set::sql_type(String &res) const
flag=1;
}
res.append(')');
+ if (binary())
+ {
+ res.append(" binary");
+ }
+ else
+ {
+ res.append(" character set ");
+ res.append(field_charset->name);
+ }
}
/* returns 1 if the fields are equally defined */
@@ -5207,11 +5225,11 @@ Field *make_field(char *ptr, uint32 field_length,
if (f_is_enum(pack_flag))
return new Field_enum(ptr,field_length,null_pos,null_bit,
unireg_check, field_name, table,
- pack_length, interval);
+ pack_length, interval, field_charset);
else
return new Field_set(ptr,field_length,null_pos,null_bit,
unireg_check, field_name, table,
- pack_length, interval);
+ pack_length, interval, field_charset);
}
}