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

sql/sql_show.cc:
  Fix for bug #14290: wrong CHARACTER_MAXIMUM_LENGTH value for some text fields.
  adjust CHARACTER_MAXIMUM_LENGTH value for text fields.
This commit is contained in:
unknown 2005-10-25 17:22:58 +05:00
parent abd77bc563
commit 48765db2e5
3 changed files with 20 additions and 2 deletions

View File

@ -1025,3 +1025,11 @@ select 1 from (select 1 from test.t1) a;
1
use test;
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;

View File

@ -727,3 +727,12 @@ use information_schema;
select 1 from (select 1 from test.t1) a;
use test;
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;

View File

@ -2559,8 +2559,9 @@ static int get_schema_column_record(THD *thd, struct st_table_list *tables,
is_blob= (field->type() == FIELD_TYPE_BLOB);
if (field->has_charset() || is_blob)
{
longlong char_max_len= is_blob ? (longlong) field->max_length() :
(longlong) field->max_length()/field->charset()->mbmaxlen;
longlong char_max_len= is_blob ?
(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]->set_notnull();
table->field[9]->store((longlong) field->max_length(), TRUE);