diff --git a/mysql-test/r/ps_1general.result b/mysql-test/r/ps_1general.result index e9a5f705fa7..2561caa3759 100644 --- a/mysql-test/r/ps_1general.result +++ b/mysql-test/r/ps_1general.result @@ -414,15 +414,15 @@ prepare stmt1 from ' explain select a from t1 order by b '; execute stmt1; Catalog Database Table Table_alias Column Column_alias Name Type Length Max length Is_null Flags Decimals Charsetnr def id 8 3 1 N 32801 0 8 -def select_type 253 19 6 N 1 31 63 -def table 253 64 2 N 1 31 63 -def type 253 10 3 N 1 31 63 -def possible_keys 253 4096 0 Y 0 31 63 -def key 253 64 0 Y 0 31 63 +def select_type 253 19 6 N 1 31 8 +def table 253 64 2 N 1 31 8 +def type 253 10 3 N 1 31 8 +def possible_keys 253 4096 0 Y 0 31 8 +def key 253 64 0 Y 0 31 8 def key_len 8 3 0 Y 32800 0 8 -def ref 253 1024 0 Y 0 31 63 +def ref 253 1024 0 Y 0 31 8 def rows 8 10 1 N 32801 0 8 -def Extra 253 255 14 N 1 31 63 +def Extra 253 255 14 N 1 31 8 id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t1 ALL NULL NULL NULL NULL 4 Using filesort SET @arg00=1 ; @@ -430,15 +430,15 @@ prepare stmt1 from ' explain select a from t1 where a > ? order by b '; execute stmt1 using @arg00; Catalog Database Table Table_alias Column Column_alias Name Type Length Max length Is_null Flags Decimals Charsetnr def id 8 3 1 N 32801 0 8 -def select_type 253 19 6 N 1 31 63 -def table 253 64 2 N 1 31 63 -def type 253 10 5 N 1 31 63 -def possible_keys 253 4096 7 Y 0 31 63 -def key 253 64 7 Y 0 31 63 +def select_type 253 19 6 N 1 31 8 +def table 253 64 2 N 1 31 8 +def type 253 10 5 N 1 31 8 +def possible_keys 253 4096 7 Y 0 31 8 +def key 253 64 7 Y 0 31 8 def key_len 8 3 1 Y 32800 0 8 -def ref 253 1024 0 Y 0 31 63 +def ref 253 1024 0 Y 0 31 8 def rows 8 10 1 N 32801 0 8 -def Extra 253 255 27 N 1 31 63 +def Extra 253 255 27 N 1 31 8 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 test_sequence diff --git a/mysql-test/r/ps_2myisam.result b/mysql-test/r/ps_2myisam.result index ff0b7d65433..16d3cdbbb47 100644 --- a/mysql-test/r/ps_2myisam.result +++ b/mysql-test/r/ps_2myisam.result @@ -574,15 +574,15 @@ prepare stmt1 from @stmt ; execute stmt1 ; Catalog Database Table Table_alias Column Column_alias Name Type Length Max length Is_null Flags Decimals Charsetnr def id 8 3 1 N 32801 0 8 -def select_type 253 19 18 N 1 31 63 -def table 253 64 16 N 1 31 63 -def type 253 10 3 N 1 31 63 -def possible_keys 253 4096 0 Y 0 31 63 -def key 253 64 0 Y 0 31 63 +def select_type 253 19 18 N 1 31 8 +def table 253 64 16 N 1 31 8 +def type 253 10 3 N 1 31 8 +def possible_keys 253 4096 0 Y 0 31 8 +def key 253 64 0 Y 0 31 8 def key_len 8 3 0 Y 32800 0 8 -def ref 253 1024 0 Y 0 31 63 +def ref 253 1024 0 Y 0 31 8 def rows 8 10 1 N 32801 0 8 -def Extra 253 255 44 N 1 31 63 +def Extra 253 255 44 N 1 31 8 id select_type table type possible_keys key key_len ref rows Extra 1 PRIMARY t_many_col_types ALL NULL NULL NULL NULL 2 1 PRIMARY ALL NULL NULL NULL NULL 2 Using where @@ -645,15 +645,15 @@ execute stmt1 using @arg00, @arg01, @arg02, @arg03, @arg04, @arg05, @arg06, @arg07, @arg08, @arg09 ; Catalog Database Table Table_alias Column Column_alias Name Type Length Max length Is_null Flags Decimals Charsetnr def id 8 3 1 N 32801 0 8 -def select_type 253 19 18 N 1 31 63 -def table 253 64 16 N 1 31 63 -def type 253 10 3 N 1 31 63 -def possible_keys 253 4096 0 Y 0 31 63 -def key 253 64 0 Y 0 31 63 +def select_type 253 19 18 N 1 31 8 +def table 253 64 16 N 1 31 8 +def type 253 10 3 N 1 31 8 +def possible_keys 253 4096 0 Y 0 31 8 +def key 253 64 0 Y 0 31 8 def key_len 8 3 0 Y 32800 0 8 -def ref 253 1024 0 Y 0 31 63 +def ref 253 1024 0 Y 0 31 8 def rows 8 10 1 N 32801 0 8 -def Extra 253 255 44 N 1 31 63 +def Extra 253 255 44 N 1 31 8 id select_type table type possible_keys key key_len ref rows Extra 1 PRIMARY t_many_col_types ALL NULL NULL NULL NULL 2 1 PRIMARY ALL NULL NULL NULL NULL 2 Using where diff --git a/mysql-test/r/ps_3innodb.result b/mysql-test/r/ps_3innodb.result index 6e18e3e5ec9..865b108d7ed 100644 --- a/mysql-test/r/ps_3innodb.result +++ b/mysql-test/r/ps_3innodb.result @@ -574,15 +574,15 @@ prepare stmt1 from @stmt ; execute stmt1 ; Catalog Database Table Table_alias Column Column_alias Name Type Length Max length Is_null Flags Decimals Charsetnr def id 8 3 1 N 32801 0 8 -def select_type 253 19 18 N 1 31 63 -def table 253 64 16 N 1 31 63 -def type 253 10 3 N 1 31 63 -def possible_keys 253 4096 0 Y 0 31 63 -def key 253 64 0 Y 0 31 63 +def select_type 253 19 18 N 1 31 8 +def table 253 64 16 N 1 31 8 +def type 253 10 3 N 1 31 8 +def possible_keys 253 4096 0 Y 0 31 8 +def key 253 64 0 Y 0 31 8 def key_len 8 3 0 Y 32800 0 8 -def ref 253 1024 0 Y 0 31 63 +def ref 253 1024 0 Y 0 31 8 def rows 8 10 1 N 32801 0 8 -def Extra 253 255 44 N 1 31 63 +def Extra 253 255 44 N 1 31 8 id select_type table type possible_keys key key_len ref rows Extra 1 PRIMARY t_many_col_types ALL NULL NULL NULL NULL 2 1 PRIMARY ALL NULL NULL NULL NULL 2 Using where @@ -645,15 +645,15 @@ execute stmt1 using @arg00, @arg01, @arg02, @arg03, @arg04, @arg05, @arg06, @arg07, @arg08, @arg09 ; Catalog Database Table Table_alias Column Column_alias Name Type Length Max length Is_null Flags Decimals Charsetnr def id 8 3 1 N 32801 0 8 -def select_type 253 19 18 N 1 31 63 -def table 253 64 16 N 1 31 63 -def type 253 10 3 N 1 31 63 -def possible_keys 253 4096 0 Y 0 31 63 -def key 253 64 0 Y 0 31 63 +def select_type 253 19 18 N 1 31 8 +def table 253 64 16 N 1 31 8 +def type 253 10 3 N 1 31 8 +def possible_keys 253 4096 0 Y 0 31 8 +def key 253 64 0 Y 0 31 8 def key_len 8 3 0 Y 32800 0 8 -def ref 253 1024 0 Y 0 31 63 +def ref 253 1024 0 Y 0 31 8 def rows 8 10 1 N 32801 0 8 -def Extra 253 255 44 N 1 31 63 +def Extra 253 255 44 N 1 31 8 id select_type table type possible_keys key key_len ref rows Extra 1 PRIMARY t_many_col_types ALL NULL NULL NULL NULL 2 1 PRIMARY ALL NULL NULL NULL NULL 2 Using where diff --git a/mysql-test/r/ps_4heap.result b/mysql-test/r/ps_4heap.result index 13bb3b26311..1cc18575dd1 100644 --- a/mysql-test/r/ps_4heap.result +++ b/mysql-test/r/ps_4heap.result @@ -575,15 +575,15 @@ prepare stmt1 from @stmt ; execute stmt1 ; Catalog Database Table Table_alias Column Column_alias Name Type Length Max length Is_null Flags Decimals Charsetnr def id 8 3 1 N 32801 0 8 -def select_type 253 19 18 N 1 31 63 -def table 253 64 16 N 1 31 63 -def type 253 10 3 N 1 31 63 -def possible_keys 253 4096 0 Y 0 31 63 -def key 253 64 0 Y 0 31 63 +def select_type 253 19 18 N 1 31 8 +def table 253 64 16 N 1 31 8 +def type 253 10 3 N 1 31 8 +def possible_keys 253 4096 0 Y 0 31 8 +def key 253 64 0 Y 0 31 8 def key_len 8 3 0 Y 32800 0 8 -def ref 253 1024 0 Y 0 31 63 +def ref 253 1024 0 Y 0 31 8 def rows 8 10 1 N 32801 0 8 -def Extra 253 255 44 N 1 31 63 +def Extra 253 255 44 N 1 31 8 id select_type table type possible_keys key key_len ref rows Extra 1 PRIMARY t_many_col_types ALL NULL NULL NULL NULL 2 1 PRIMARY ALL NULL NULL NULL NULL 2 Using where @@ -646,15 +646,15 @@ execute stmt1 using @arg00, @arg01, @arg02, @arg03, @arg04, @arg05, @arg06, @arg07, @arg08, @arg09 ; Catalog Database Table Table_alias Column Column_alias Name Type Length Max length Is_null Flags Decimals Charsetnr def id 8 3 1 N 32801 0 8 -def select_type 253 19 18 N 1 31 63 -def table 253 64 16 N 1 31 63 -def type 253 10 3 N 1 31 63 -def possible_keys 253 4096 0 Y 0 31 63 -def key 253 64 0 Y 0 31 63 +def select_type 253 19 18 N 1 31 8 +def table 253 64 16 N 1 31 8 +def type 253 10 3 N 1 31 8 +def possible_keys 253 4096 0 Y 0 31 8 +def key 253 64 0 Y 0 31 8 def key_len 8 3 0 Y 32800 0 8 -def ref 253 1024 0 Y 0 31 63 +def ref 253 1024 0 Y 0 31 8 def rows 8 10 1 N 32801 0 8 -def Extra 253 255 44 N 1 31 63 +def Extra 253 255 44 N 1 31 8 id select_type table type possible_keys key key_len ref rows Extra 1 PRIMARY t_many_col_types ALL NULL NULL NULL NULL 2 1 PRIMARY ALL NULL NULL NULL NULL 2 Using where diff --git a/mysql-test/r/ps_5merge.result b/mysql-test/r/ps_5merge.result index 6f8109d64de..2d67635cc10 100644 --- a/mysql-test/r/ps_5merge.result +++ b/mysql-test/r/ps_5merge.result @@ -617,15 +617,15 @@ prepare stmt1 from @stmt ; execute stmt1 ; Catalog Database Table Table_alias Column Column_alias Name Type Length Max length Is_null Flags Decimals Charsetnr def id 8 3 1 N 32801 0 8 -def select_type 253 19 18 N 1 31 63 -def table 253 64 16 N 1 31 63 -def type 253 10 3 N 1 31 63 -def possible_keys 253 4096 0 Y 0 31 63 -def key 253 64 0 Y 0 31 63 +def select_type 253 19 18 N 1 31 8 +def table 253 64 16 N 1 31 8 +def type 253 10 3 N 1 31 8 +def possible_keys 253 4096 0 Y 0 31 8 +def key 253 64 0 Y 0 31 8 def key_len 8 3 0 Y 32800 0 8 -def ref 253 1024 0 Y 0 31 63 +def ref 253 1024 0 Y 0 31 8 def rows 8 10 1 N 32801 0 8 -def Extra 253 255 44 N 1 31 63 +def Extra 253 255 44 N 1 31 8 id select_type table type possible_keys key key_len ref rows Extra 1 PRIMARY t_many_col_types ALL NULL NULL NULL NULL 2 1 PRIMARY ALL NULL NULL NULL NULL 2 Using where @@ -688,15 +688,15 @@ execute stmt1 using @arg00, @arg01, @arg02, @arg03, @arg04, @arg05, @arg06, @arg07, @arg08, @arg09 ; Catalog Database Table Table_alias Column Column_alias Name Type Length Max length Is_null Flags Decimals Charsetnr def id 8 3 1 N 32801 0 8 -def select_type 253 19 18 N 1 31 63 -def table 253 64 16 N 1 31 63 -def type 253 10 3 N 1 31 63 -def possible_keys 253 4096 0 Y 0 31 63 -def key 253 64 0 Y 0 31 63 +def select_type 253 19 18 N 1 31 8 +def table 253 64 16 N 1 31 8 +def type 253 10 3 N 1 31 8 +def possible_keys 253 4096 0 Y 0 31 8 +def key 253 64 0 Y 0 31 8 def key_len 8 3 0 Y 32800 0 8 -def ref 253 1024 0 Y 0 31 63 +def ref 253 1024 0 Y 0 31 8 def rows 8 10 1 N 32801 0 8 -def Extra 253 255 44 N 1 31 63 +def Extra 253 255 44 N 1 31 8 id select_type table type possible_keys key key_len ref rows Extra 1 PRIMARY t_many_col_types ALL NULL NULL NULL NULL 2 1 PRIMARY ALL NULL NULL NULL NULL 2 Using where @@ -1812,15 +1812,15 @@ prepare stmt1 from @stmt ; execute stmt1 ; Catalog Database Table Table_alias Column Column_alias Name Type Length Max length Is_null Flags Decimals Charsetnr def id 8 3 1 N 32801 0 8 -def select_type 253 19 18 N 1 31 63 -def table 253 64 16 N 1 31 63 -def type 253 10 3 N 1 31 63 -def possible_keys 253 4096 0 Y 0 31 63 -def key 253 64 0 Y 0 31 63 +def select_type 253 19 18 N 1 31 8 +def table 253 64 16 N 1 31 8 +def type 253 10 3 N 1 31 8 +def possible_keys 253 4096 0 Y 0 31 8 +def key 253 64 0 Y 0 31 8 def key_len 8 3 0 Y 32800 0 8 -def ref 253 1024 0 Y 0 31 63 +def ref 253 1024 0 Y 0 31 8 def rows 8 10 1 N 32801 0 8 -def Extra 253 255 44 N 1 31 63 +def Extra 253 255 44 N 1 31 8 id select_type table type possible_keys key key_len ref rows Extra 1 PRIMARY t_many_col_types ALL NULL NULL NULL NULL 2 1 PRIMARY ALL NULL NULL NULL NULL 2 Using where @@ -1883,15 +1883,15 @@ execute stmt1 using @arg00, @arg01, @arg02, @arg03, @arg04, @arg05, @arg06, @arg07, @arg08, @arg09 ; Catalog Database Table Table_alias Column Column_alias Name Type Length Max length Is_null Flags Decimals Charsetnr def id 8 3 1 N 32801 0 8 -def select_type 253 19 18 N 1 31 63 -def table 253 64 16 N 1 31 63 -def type 253 10 3 N 1 31 63 -def possible_keys 253 4096 0 Y 0 31 63 -def key 253 64 0 Y 0 31 63 +def select_type 253 19 18 N 1 31 8 +def table 253 64 16 N 1 31 8 +def type 253 10 3 N 1 31 8 +def possible_keys 253 4096 0 Y 0 31 8 +def key 253 64 0 Y 0 31 8 def key_len 8 3 0 Y 32800 0 8 -def ref 253 1024 0 Y 0 31 63 +def ref 253 1024 0 Y 0 31 8 def rows 8 10 1 N 32801 0 8 -def Extra 253 255 44 N 1 31 63 +def Extra 253 255 44 N 1 31 8 id select_type table type possible_keys key key_len ref rows Extra 1 PRIMARY t_many_col_types ALL NULL NULL NULL NULL 2 1 PRIMARY ALL NULL NULL NULL NULL 2 Using where diff --git a/mysql-test/r/ps_6bdb.result b/mysql-test/r/ps_6bdb.result index 5481ee6b4f2..8fe76dae3ab 100644 --- a/mysql-test/r/ps_6bdb.result +++ b/mysql-test/r/ps_6bdb.result @@ -574,15 +574,15 @@ prepare stmt1 from @stmt ; execute stmt1 ; Catalog Database Table Table_alias Column Column_alias Name Type Length Max length Is_null Flags Decimals Charsetnr def id 8 3 1 N 32801 0 8 -def select_type 253 19 18 N 1 31 63 -def table 253 64 16 N 1 31 63 -def type 253 10 3 N 1 31 63 -def possible_keys 253 4096 0 Y 0 31 63 -def key 253 64 0 Y 0 31 63 +def select_type 253 19 18 N 1 31 8 +def table 253 64 16 N 1 31 8 +def type 253 10 3 N 1 31 8 +def possible_keys 253 4096 0 Y 0 31 8 +def key 253 64 0 Y 0 31 8 def key_len 8 3 0 Y 32800 0 8 -def ref 253 1024 0 Y 0 31 63 +def ref 253 1024 0 Y 0 31 8 def rows 8 10 1 N 32801 0 8 -def Extra 253 255 44 N 1 31 63 +def Extra 253 255 44 N 1 31 8 id select_type table type possible_keys key key_len ref rows Extra 1 PRIMARY t_many_col_types ALL NULL NULL NULL NULL 2 1 PRIMARY ALL NULL NULL NULL NULL 2 Using where @@ -645,15 +645,15 @@ execute stmt1 using @arg00, @arg01, @arg02, @arg03, @arg04, @arg05, @arg06, @arg07, @arg08, @arg09 ; Catalog Database Table Table_alias Column Column_alias Name Type Length Max length Is_null Flags Decimals Charsetnr def id 8 3 1 N 32801 0 8 -def select_type 253 19 18 N 1 31 63 -def table 253 64 16 N 1 31 63 -def type 253 10 3 N 1 31 63 -def possible_keys 253 4096 0 Y 0 31 63 -def key 253 64 0 Y 0 31 63 +def select_type 253 19 18 N 1 31 8 +def table 253 64 16 N 1 31 8 +def type 253 10 3 N 1 31 8 +def possible_keys 253 4096 0 Y 0 31 8 +def key 253 64 0 Y 0 31 8 def key_len 8 3 0 Y 32800 0 8 -def ref 253 1024 0 Y 0 31 63 +def ref 253 1024 0 Y 0 31 8 def rows 8 10 1 N 32801 0 8 -def Extra 253 255 44 N 1 31 63 +def Extra 253 255 44 N 1 31 8 id select_type table type possible_keys key key_len ref rows Extra 1 PRIMARY t_many_col_types ALL NULL NULL NULL NULL 2 1 PRIMARY ALL NULL NULL NULL NULL 2 Using where diff --git a/sql/item.h b/sql/item.h index 23c5c844f21..7a1e7c5d0d2 100644 --- a/sql/item.h +++ b/sql/item.h @@ -706,8 +706,8 @@ public: class Item_empty_string :public Item_string { public: - Item_empty_string(const char *header,uint length) :Item_string("",0, - &my_charset_bin) + Item_empty_string(const char *header,uint length, CHARSET_INFO *cs= NULL) : + Item_string("",0, cs ? cs : &my_charset_bin) { name=(char*) header; max_length=length;} void make_field(Send_field *field); }; diff --git a/sql/sql_class.cc b/sql/sql_class.cc index 349fc792a2a..16c0c206df3 100644 --- a/sql/sql_class.cc +++ b/sql/sql_class.cc @@ -654,27 +654,29 @@ CHANGED_TABLE_LIST* THD::changed_table_dup(const char *key, long key_length) return new_table; } + int THD::send_explain_fields(select_result *result) { List field_list; Item *item; + CHARSET_INFO *cs= system_charset_info; field_list.push_back(new Item_return_int("id",3, MYSQL_TYPE_LONGLONG)); - field_list.push_back(new Item_empty_string("select_type",19)); - field_list.push_back(new Item_empty_string("table",NAME_LEN)); - field_list.push_back(new Item_empty_string("type",10)); + field_list.push_back(new Item_empty_string("select_type", 19, cs)); + field_list.push_back(new Item_empty_string("table", NAME_LEN, cs)); + field_list.push_back(new Item_empty_string("type", 10, cs)); field_list.push_back(item=new Item_empty_string("possible_keys", - NAME_LEN*MAX_KEY)); + NAME_LEN*MAX_KEY, cs)); item->maybe_null=1; - field_list.push_back(item=new Item_empty_string("key",NAME_LEN)); + field_list.push_back(item=new Item_empty_string("key", NAME_LEN, cs)); item->maybe_null=1; field_list.push_back(item=new Item_return_int("key_len",3, MYSQL_TYPE_LONGLONG)); item->maybe_null=1; field_list.push_back(item=new Item_empty_string("ref", - NAME_LEN*MAX_REF_PARTS)); + NAME_LEN*MAX_REF_PARTS, cs)); item->maybe_null=1; - field_list.push_back(new Item_return_int("rows",10, MYSQL_TYPE_LONGLONG)); - field_list.push_back(new Item_empty_string("Extra",255)); + field_list.push_back(new Item_return_int("rows", 10, MYSQL_TYPE_LONGLONG)); + field_list.push_back(new Item_empty_string("Extra", 255, cs)); return (result->send_fields(field_list,1)); }