Commit c06673d4 authored by ramil@mysql.com's avatar ramil@mysql.com

Fix for bug #14290: wrong CHARACTER_MAXIMUM_LENGTH value for some text fields.

parent c88f0e9c
...@@ -1025,3 +1025,11 @@ select 1 from (select 1 from test.t1) a; ...@@ -1025,3 +1025,11 @@ select 1 from (select 1 from test.t1) a;
1 1
use test; use test;
drop table t1; drop table t1;
create table t1(a blob, b text charset utf8, c text charset ucs2);
select data_type, character_octet_length, character_maximum_length
from information_schema.columns where table_name='t1';
data_type character_octet_length character_maximum_length
blob 65535 65535
text 65535 65535
text 65535 32767
drop table t1;
...@@ -727,3 +727,12 @@ use information_schema; ...@@ -727,3 +727,12 @@ use information_schema;
select 1 from (select 1 from test.t1) a; select 1 from (select 1 from test.t1) a;
use test; use test;
drop table t1; drop table t1;
#
# Bug #14290: character_maximum_length for text fields
#
create table t1(a blob, b text charset utf8, c text charset ucs2);
select data_type, character_octet_length, character_maximum_length
from information_schema.columns where table_name='t1';
drop table t1;
...@@ -2559,8 +2559,9 @@ static int get_schema_column_record(THD *thd, struct st_table_list *tables, ...@@ -2559,8 +2559,9 @@ static int get_schema_column_record(THD *thd, struct st_table_list *tables,
is_blob= (field->type() == FIELD_TYPE_BLOB); is_blob= (field->type() == FIELD_TYPE_BLOB);
if (field->has_charset() || is_blob) if (field->has_charset() || is_blob)
{ {
longlong char_max_len= is_blob ? (longlong) field->max_length() : longlong char_max_len= is_blob ?
(longlong) field->max_length()/field->charset()->mbmaxlen; (longlong) field->max_length() / field->charset()->mbminlen :
(longlong) field->max_length() / field->charset()->mbmaxlen;
table->field[8]->store(char_max_len, TRUE); table->field[8]->store(char_max_len, TRUE);
table->field[8]->set_notnull(); table->field[8]->set_notnull();
table->field[9]->store((longlong) field->max_length(), TRUE); table->field[9]->store((longlong) field->max_length(), TRUE);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment