mirror of
https://github.com/MariaDB/server.git
synced 2025-12-24 11:21:21 +03:00
Fix for bug #9344 INFORMATION_SCHEMA, wrong content, numeric columns
The columns CHARACTER_MAXIMUM_LENGTH and CHARACTER_OCTET_LENGTH of INFORMATION_SCHEMA.COLUMNS must be NULL for numeric columns mysql-test/r/information_schema.result: Fix for bug #9344 INFORMATION_SCHEMA, wrong content, numeric columns mysql-test/t/information_schema.test: Fix for bug #9344 INFORMATION_SCHEMA, wrong content, numeric columns sql/sql_show.cc: Fix for bug #9344 INFORMATION_SCHEMA, wrong content, numeric columns BitKeeper/etc/logging_ok: Logging to logging@openlogging.org accepted
This commit is contained in:
@@ -2333,12 +2333,26 @@ static int get_schema_column_record(THD *thd, struct st_table_list *tables,
|
||||
"NO" : "YES");
|
||||
table->field[6]->store((const char*) pos,
|
||||
strlen((const char*) pos), cs);
|
||||
if (field->has_charset())
|
||||
table->field[8]->store((longlong) field->representation_length()/
|
||||
field->charset()->mbmaxlen);
|
||||
else
|
||||
table->field[8]->store((longlong) field->representation_length());
|
||||
table->field[9]->store((longlong) field->representation_length());
|
||||
|
||||
switch (field->type()) {
|
||||
case FIELD_TYPE_TINY_BLOB:
|
||||
case FIELD_TYPE_MEDIUM_BLOB:
|
||||
case FIELD_TYPE_LONG_BLOB:
|
||||
case FIELD_TYPE_BLOB:
|
||||
case FIELD_TYPE_VAR_STRING:
|
||||
case FIELD_TYPE_STRING:
|
||||
if (field->has_charset())
|
||||
table->field[8]->store((longlong) field->representation_length()/
|
||||
field->charset()->mbmaxlen);
|
||||
else
|
||||
table->field[8]->store((longlong) field->representation_length());
|
||||
table->field[8]->set_notnull();
|
||||
table->field[9]->store((longlong) field->representation_length());
|
||||
table->field[9]->set_notnull();
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
{
|
||||
uint dec =field->decimals();
|
||||
@@ -3514,8 +3528,8 @@ ST_FIELD_INFO columns_fields_info[]=
|
||||
{"COLUMN_DEFAULT", NAME_LEN, MYSQL_TYPE_STRING, 0, 1, "Default"},
|
||||
{"IS_NULLABLE", 3, MYSQL_TYPE_STRING, 0, 0, "Null"},
|
||||
{"DATA_TYPE", NAME_LEN, MYSQL_TYPE_STRING, 0, 0, 0},
|
||||
{"CHARACTER_MAXIMUM_LENGTH", 21 , MYSQL_TYPE_LONG, 0, 0, 0},
|
||||
{"CHARACTER_OCTET_LENGTH", 21 , MYSQL_TYPE_LONG, 0, 0, 0},
|
||||
{"CHARACTER_MAXIMUM_LENGTH", 21 , MYSQL_TYPE_LONG, 0, 1, 0},
|
||||
{"CHARACTER_OCTET_LENGTH", 21 , MYSQL_TYPE_LONG, 0, 1, 0},
|
||||
{"NUMERIC_PRECISION", 21 , MYSQL_TYPE_LONG, 0, 1, 0},
|
||||
{"NUMERIC_SCALE", 21 , MYSQL_TYPE_LONG, 0, 1, 0},
|
||||
{"CHARACTER_SET_NAME", 64, MYSQL_TYPE_STRING, 0, 1, 0},
|
||||
|
||||
Reference in New Issue
Block a user