Bug#12817 SHOW STATUS now blob fields
This fix is cancellation of ChangeSet 1.2329 05/07/12 08:35:30 reggie@linux.site +8 -0 Bug 7142 Show Fields from fails using Borland's dbExpress interface The reason is we can't fix bug#7142 without breaking of existing applications/APIs that worked fine with earlier 4.1 bug 7142 is fixed in 5.0
This commit is contained in:
parent
819db2471c
commit
99bc9607e1
@ -470,12 +470,12 @@ def id 8 3 1 N 32929 0 63
|
|||||||
def select_type 253 19 6 N 1 31 8
|
def select_type 253 19 6 N 1 31 8
|
||||||
def table 253 64 2 Y 0 31 8
|
def table 253 64 2 Y 0 31 8
|
||||||
def type 253 10 3 Y 0 31 8
|
def type 253 10 3 Y 0 31 8
|
||||||
def possible_keys 252 4096 0 Y 0 31 8
|
def possible_keys 253 4096 0 Y 0 31 8
|
||||||
def key 253 64 0 Y 0 31 8
|
def key 253 64 0 Y 0 31 8
|
||||||
def key_len 8 3 0 Y 32928 0 63
|
def key_len 8 3 0 Y 32928 0 63
|
||||||
def ref 252 1024 0 Y 0 31 8
|
def ref 253 1024 0 Y 0 31 8
|
||||||
def rows 8 10 1 Y 32928 0 63
|
def rows 8 10 1 Y 32928 0 63
|
||||||
def Extra 252 255 14 N 1 31 8
|
def Extra 253 255 14 N 1 31 8
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 4 Using filesort
|
1 SIMPLE t1 ALL NULL NULL NULL NULL 4 Using filesort
|
||||||
SET @arg00=1 ;
|
SET @arg00=1 ;
|
||||||
@ -486,12 +486,12 @@ def id 8 3 1 N 32929 0 63
|
|||||||
def select_type 253 19 6 N 1 31 8
|
def select_type 253 19 6 N 1 31 8
|
||||||
def table 253 64 2 Y 0 31 8
|
def table 253 64 2 Y 0 31 8
|
||||||
def type 253 10 5 Y 0 31 8
|
def type 253 10 5 Y 0 31 8
|
||||||
def possible_keys 252 4096 7 Y 0 31 8
|
def possible_keys 253 4096 7 Y 0 31 8
|
||||||
def key 253 64 7 Y 0 31 8
|
def key 253 64 7 Y 0 31 8
|
||||||
def key_len 8 3 1 Y 32928 0 63
|
def key_len 8 3 1 Y 32928 0 63
|
||||||
def ref 252 1024 0 Y 0 31 8
|
def ref 253 1024 0 Y 0 31 8
|
||||||
def rows 8 10 1 Y 32928 0 63
|
def rows 8 10 1 Y 32928 0 63
|
||||||
def Extra 252 255 27 N 1 31 8
|
def Extra 253 255 27 N 1 31 8
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE t1 range PRIMARY PRIMARY 4 NULL 3 Using where; Using filesort
|
1 SIMPLE t1 range PRIMARY PRIMARY 4 NULL 3 Using where; Using filesort
|
||||||
drop table if exists t2;
|
drop table if exists t2;
|
||||||
|
@ -1153,12 +1153,12 @@ def id 8 3 1 N 32929 0 63
|
|||||||
def select_type 253 19 6 N 1 31 8
|
def select_type 253 19 6 N 1 31 8
|
||||||
def table 253 64 2 Y 0 31 8
|
def table 253 64 2 Y 0 31 8
|
||||||
def type 253 10 3 Y 0 31 8
|
def type 253 10 3 Y 0 31 8
|
||||||
def possible_keys 252 4096 0 Y 0 31 8
|
def possible_keys 253 4096 0 Y 0 31 8
|
||||||
def key 253 64 0 Y 0 31 8
|
def key 253 64 0 Y 0 31 8
|
||||||
def key_len 8 3 0 Y 32928 0 63
|
def key_len 8 3 0 Y 32928 0 63
|
||||||
def ref 252 1024 0 Y 0 31 8
|
def ref 253 1024 0 Y 0 31 8
|
||||||
def rows 8 10 1 Y 32928 0 63
|
def rows 8 10 1 Y 32928 0 63
|
||||||
def Extra 252 255 0 N 1 31 8
|
def Extra 253 255 0 N 1 31 8
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE t9 ALL NULL NULL NULL NULL 2
|
1 SIMPLE t9 ALL NULL NULL NULL NULL 2
|
||||||
drop table if exists t2 ;
|
drop table if exists t2 ;
|
||||||
|
@ -1153,12 +1153,12 @@ def id 8 3 1 N 32929 0 63
|
|||||||
def select_type 253 19 6 N 1 31 8
|
def select_type 253 19 6 N 1 31 8
|
||||||
def table 253 64 2 Y 0 31 8
|
def table 253 64 2 Y 0 31 8
|
||||||
def type 253 10 3 Y 0 31 8
|
def type 253 10 3 Y 0 31 8
|
||||||
def possible_keys 252 4096 0 Y 0 31 8
|
def possible_keys 253 4096 0 Y 0 31 8
|
||||||
def key 253 64 0 Y 0 31 8
|
def key 253 64 0 Y 0 31 8
|
||||||
def key_len 8 3 0 Y 32928 0 63
|
def key_len 8 3 0 Y 32928 0 63
|
||||||
def ref 252 1024 0 Y 0 31 8
|
def ref 253 1024 0 Y 0 31 8
|
||||||
def rows 8 10 1 Y 32928 0 63
|
def rows 8 10 1 Y 32928 0 63
|
||||||
def Extra 252 255 0 N 1 31 8
|
def Extra 253 255 0 N 1 31 8
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE t9 ALL NULL NULL NULL NULL 2
|
1 SIMPLE t9 ALL NULL NULL NULL NULL 2
|
||||||
test_sequence
|
test_sequence
|
||||||
|
@ -1154,12 +1154,12 @@ def id 8 3 1 N 32929 0 63
|
|||||||
def select_type 253 19 6 N 1 31 8
|
def select_type 253 19 6 N 1 31 8
|
||||||
def table 253 64 2 Y 0 31 8
|
def table 253 64 2 Y 0 31 8
|
||||||
def type 253 10 3 Y 0 31 8
|
def type 253 10 3 Y 0 31 8
|
||||||
def possible_keys 252 4096 0 Y 0 31 8
|
def possible_keys 253 4096 0 Y 0 31 8
|
||||||
def key 253 64 0 Y 0 31 8
|
def key 253 64 0 Y 0 31 8
|
||||||
def key_len 8 3 0 Y 32928 0 63
|
def key_len 8 3 0 Y 32928 0 63
|
||||||
def ref 252 1024 0 Y 0 31 8
|
def ref 253 1024 0 Y 0 31 8
|
||||||
def rows 8 10 1 Y 32928 0 63
|
def rows 8 10 1 Y 32928 0 63
|
||||||
def Extra 252 255 0 N 1 31 8
|
def Extra 253 255 0 N 1 31 8
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE t9 ALL NULL NULL NULL NULL 2
|
1 SIMPLE t9 ALL NULL NULL NULL NULL 2
|
||||||
test_sequence
|
test_sequence
|
||||||
|
@ -1196,12 +1196,12 @@ def id 8 3 1 N 32929 0 63
|
|||||||
def select_type 253 19 6 N 1 31 8
|
def select_type 253 19 6 N 1 31 8
|
||||||
def table 253 64 2 Y 0 31 8
|
def table 253 64 2 Y 0 31 8
|
||||||
def type 253 10 3 Y 0 31 8
|
def type 253 10 3 Y 0 31 8
|
||||||
def possible_keys 252 4096 0 Y 0 31 8
|
def possible_keys 253 4096 0 Y 0 31 8
|
||||||
def key 253 64 0 Y 0 31 8
|
def key 253 64 0 Y 0 31 8
|
||||||
def key_len 8 3 0 Y 32928 0 63
|
def key_len 8 3 0 Y 32928 0 63
|
||||||
def ref 252 1024 0 Y 0 31 8
|
def ref 253 1024 0 Y 0 31 8
|
||||||
def rows 8 10 1 Y 32928 0 63
|
def rows 8 10 1 Y 32928 0 63
|
||||||
def Extra 252 255 0 N 1 31 8
|
def Extra 253 255 0 N 1 31 8
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE t9 ALL NULL NULL NULL NULL 2
|
1 SIMPLE t9 ALL NULL NULL NULL NULL 2
|
||||||
test_sequence
|
test_sequence
|
||||||
@ -4210,12 +4210,12 @@ def id 8 3 1 N 32929 0 63
|
|||||||
def select_type 253 19 6 N 1 31 8
|
def select_type 253 19 6 N 1 31 8
|
||||||
def table 253 64 2 Y 0 31 8
|
def table 253 64 2 Y 0 31 8
|
||||||
def type 253 10 3 Y 0 31 8
|
def type 253 10 3 Y 0 31 8
|
||||||
def possible_keys 252 4096 0 Y 0 31 8
|
def possible_keys 253 4096 0 Y 0 31 8
|
||||||
def key 253 64 0 Y 0 31 8
|
def key 253 64 0 Y 0 31 8
|
||||||
def key_len 8 3 0 Y 32928 0 63
|
def key_len 8 3 0 Y 32928 0 63
|
||||||
def ref 252 1024 0 Y 0 31 8
|
def ref 253 1024 0 Y 0 31 8
|
||||||
def rows 8 10 1 Y 32928 0 63
|
def rows 8 10 1 Y 32928 0 63
|
||||||
def Extra 252 255 0 N 1 31 8
|
def Extra 253 255 0 N 1 31 8
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE t9 ALL NULL NULL NULL NULL 2
|
1 SIMPLE t9 ALL NULL NULL NULL NULL 2
|
||||||
test_sequence
|
test_sequence
|
||||||
|
@ -1973,14 +1973,7 @@ void Item::make_field(Send_field *tmp_field)
|
|||||||
|
|
||||||
void Item_empty_string::make_field(Send_field *tmp_field)
|
void Item_empty_string::make_field(Send_field *tmp_field)
|
||||||
{
|
{
|
||||||
enum_field_types type = FIELD_TYPE_VAR_STRING;
|
init_make_field(tmp_field,FIELD_TYPE_VAR_STRING);
|
||||||
if (max_length >= 16777216)
|
|
||||||
type = FIELD_TYPE_LONG_BLOB;
|
|
||||||
else if (max_length >= 65536)
|
|
||||||
type = FIELD_TYPE_MEDIUM_BLOB;
|
|
||||||
else if (max_length >= 256)
|
|
||||||
type = FIELD_TYPE_BLOB;
|
|
||||||
init_make_field(tmp_field, type);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -638,33 +638,6 @@ int mysqld_extend_show_tables(THD *thd,const char *db,const char *wild)
|
|||||||
DBUG_RETURN(0);
|
DBUG_RETURN(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
returns the length of the longest type on the given table.
|
|
||||||
|
|
||||||
This is used so that show fields will return the data using the proper
|
|
||||||
lengths instead of forcing columns such as type to always return with a
|
|
||||||
given length.
|
|
||||||
*/
|
|
||||||
|
|
||||||
uint get_longest_type_in_table(TABLE *table, const char *wild)
|
|
||||||
{
|
|
||||||
Field **ptr,*field;
|
|
||||||
char tmp[MAX_FIELD_WIDTH];
|
|
||||||
uint max_len= 0;
|
|
||||||
|
|
||||||
for (ptr=table->field; (field= *ptr); ptr++)
|
|
||||||
{
|
|
||||||
if (!wild || !wild[0] ||
|
|
||||||
!wild_case_compare(system_charset_info, field->field_name,wild))
|
|
||||||
{
|
|
||||||
String type(tmp,sizeof(tmp), system_charset_info);
|
|
||||||
field->sql_type(type);
|
|
||||||
max_len= max(max_len, type.length());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return max_len;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/***************************************************************************
|
/***************************************************************************
|
||||||
** List all columns in a table_list->real_name
|
** List all columns in a table_list->real_name
|
||||||
@ -694,14 +667,9 @@ mysqld_show_fields(THD *thd, TABLE_LIST *table_list,const char *wild,
|
|||||||
#ifndef NO_EMBEDDED_ACCESS_CHECKS
|
#ifndef NO_EMBEDDED_ACCESS_CHECKS
|
||||||
(void) get_table_grant(thd, table_list);
|
(void) get_table_grant(thd, table_list);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* we scan for the longest since long enum types can exceed 40 */
|
|
||||||
uint max_len = get_longest_type_in_table(table, wild);
|
|
||||||
|
|
||||||
List<Item> field_list;
|
List<Item> field_list;
|
||||||
field_list.push_back(new Item_empty_string("Field",NAME_LEN));
|
field_list.push_back(new Item_empty_string("Field",NAME_LEN));
|
||||||
field_list.push_back(new Item_empty_string("Type",
|
field_list.push_back(new Item_empty_string("Type", 40));
|
||||||
max_len > 40 ? max_len : 40));
|
|
||||||
if (verbose)
|
if (verbose)
|
||||||
field_list.push_back(new Item_empty_string("Collation",40));
|
field_list.push_back(new Item_empty_string("Collation",40));
|
||||||
field_list.push_back(new Item_empty_string("Null",1));
|
field_list.push_back(new Item_empty_string("Null",1));
|
||||||
|
@ -7182,7 +7182,7 @@ static void test_explain_bug()
|
|||||||
verify_prepare_field(result, 3, "type", "", MYSQL_TYPE_VAR_STRING,
|
verify_prepare_field(result, 3, "type", "", MYSQL_TYPE_VAR_STRING,
|
||||||
"", "", "", 10, 0);
|
"", "", "", 10, 0);
|
||||||
|
|
||||||
verify_prepare_field(result, 4, "possible_keys", "", MYSQL_TYPE_BLOB,
|
verify_prepare_field(result, 4, "possible_keys", "", MYSQL_TYPE_VAR_STRING,
|
||||||
"", "", "", NAME_LEN*64, 0);
|
"", "", "", NAME_LEN*64, 0);
|
||||||
|
|
||||||
verify_prepare_field(result, 5, "key", "", MYSQL_TYPE_VAR_STRING,
|
verify_prepare_field(result, 5, "key", "", MYSQL_TYPE_VAR_STRING,
|
||||||
@ -7195,13 +7195,13 @@ static void test_explain_bug()
|
|||||||
(mysql_get_server_version(mysql) <= 50000 ? 3 : 4096),
|
(mysql_get_server_version(mysql) <= 50000 ? 3 : 4096),
|
||||||
0);
|
0);
|
||||||
|
|
||||||
verify_prepare_field(result, 7, "ref", "", MYSQL_TYPE_BLOB,
|
verify_prepare_field(result, 7, "ref", "", MYSQL_TYPE_VAR_STRING,
|
||||||
"", "", "", NAME_LEN*16, 0);
|
"", "", "", NAME_LEN*16, 0);
|
||||||
|
|
||||||
verify_prepare_field(result, 8, "rows", "", MYSQL_TYPE_LONGLONG,
|
verify_prepare_field(result, 8, "rows", "", MYSQL_TYPE_LONGLONG,
|
||||||
"", "", "", 10, 0);
|
"", "", "", 10, 0);
|
||||||
|
|
||||||
verify_prepare_field(result, 9, "Extra", "", MYSQL_TYPE_BLOB,
|
verify_prepare_field(result, 9, "Extra", "", MYSQL_TYPE_VAR_STRING,
|
||||||
"", "", "", 255, 0);
|
"", "", "", 255, 0);
|
||||||
|
|
||||||
mysql_free_result(result);
|
mysql_free_result(result);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user