Fixed bug with EXPLAIN on empty table
This commit is contained in:
parent
a5e30be0d0
commit
fab7f39e42
@ -1,5 +1,8 @@
|
|||||||
drop table if exists t1;
|
drop table if exists t1;
|
||||||
create table t1 (id int not null, str char(10), unique(str));
|
create table t1 (id int not null, str char(10), unique(str));
|
||||||
|
explain select * from t1;
|
||||||
|
table type possible_keys key key_len ref rows Extra
|
||||||
|
t1 system NULL NULL NULL NULL 0 const row not found
|
||||||
insert into t1 values (1, null),(2, null),(3, "foo"),(4, "bar");
|
insert into t1 values (1, null),(2, null),(3, "foo"),(4, "bar");
|
||||||
select * from t1 where str is null;
|
select * from t1 where str is null;
|
||||||
id str
|
id str
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
|
|
||||||
drop table if exists t1;
|
drop table if exists t1;
|
||||||
create table t1 (id int not null, str char(10), unique(str));
|
create table t1 (id int not null, str char(10), unique(str));
|
||||||
|
explain select * from t1;
|
||||||
insert into t1 values (1, null),(2, null),(3, "foo"),(4, "bar");
|
insert into t1 values (1, null),(2, null),(3, "foo"),(4, "bar");
|
||||||
select * from t1 where str is null;
|
select * from t1 where str is null;
|
||||||
select * from t1 where str="foo";
|
select * from t1 where str="foo";
|
||||||
@ -12,8 +13,10 @@ explain select * from t1 ignore key (str) where str="foo";
|
|||||||
explain select * from t1 use key (str,str) where str="foo";
|
explain select * from t1 use key (str,str) where str="foo";
|
||||||
|
|
||||||
#The following should give errors
|
#The following should give errors
|
||||||
!$1072 explain select * from t1 use key (str,str,foo) where str="foo";
|
--error 1072
|
||||||
!$1072 explain select * from t1 ignore key (str,str,foo) where str="foo";
|
explain select * from t1 use key (str,str,foo) where str="foo";
|
||||||
|
--error 1072
|
||||||
|
explain select * from t1 ignore key (str,str,foo) where str="foo";
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
|
||||||
explain select 1;
|
explain select 1;
|
||||||
|
@ -7352,36 +7352,39 @@ static void select_describe(JOIN *join, bool need_tmp_table, bool need_order,
|
|||||||
|
|
||||||
if (tab->info)
|
if (tab->info)
|
||||||
item_list.push_back(new Item_string(tab->info,strlen(tab->info)));
|
item_list.push_back(new Item_string(tab->info,strlen(tab->info)));
|
||||||
else if (tab->select)
|
else
|
||||||
{
|
{
|
||||||
if (tab->use_quick == 2)
|
if (tab->select)
|
||||||
{
|
{
|
||||||
sprintf(buff_ptr,"; Range checked for each record (index map: %u)",
|
if (tab->use_quick == 2)
|
||||||
tab->keys);
|
{
|
||||||
buff_ptr=strend(buff_ptr);
|
sprintf(buff_ptr,"; Range checked for each record (index map: %u)",
|
||||||
|
tab->keys);
|
||||||
|
buff_ptr=strend(buff_ptr);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
buff_ptr=strmov(buff_ptr,"; Using where");
|
||||||
}
|
}
|
||||||
else
|
if (key_read)
|
||||||
buff_ptr=strmov(buff_ptr,"; Using where");
|
buff_ptr= strmov(buff_ptr,"; Using index");
|
||||||
|
if (table->reginfo.not_exists_optimize)
|
||||||
|
buff_ptr= strmov(buff_ptr,"; Not exists");
|
||||||
|
if (need_tmp_table)
|
||||||
|
{
|
||||||
|
need_tmp_table=0;
|
||||||
|
buff_ptr= strmov(buff_ptr,"; Using temporary");
|
||||||
|
}
|
||||||
|
if (need_order)
|
||||||
|
{
|
||||||
|
need_order=0;
|
||||||
|
buff_ptr= strmov(buff_ptr,"; Using filesort");
|
||||||
|
}
|
||||||
|
if (distinct && test_all_bits(used_tables,thd->used_tables))
|
||||||
|
buff_ptr= strmov(buff_ptr,"; Distinct");
|
||||||
|
if (buff_ptr == buff)
|
||||||
|
buff_ptr+= 2;
|
||||||
|
item_list.push_back(new Item_string(buff+2,(uint) (buff_ptr - buff)-2));
|
||||||
}
|
}
|
||||||
if (key_read)
|
|
||||||
buff_ptr= strmov(buff_ptr,"; Using index");
|
|
||||||
if (table->reginfo.not_exists_optimize)
|
|
||||||
buff_ptr= strmov(buff_ptr,"; Not exists");
|
|
||||||
if (need_tmp_table)
|
|
||||||
{
|
|
||||||
need_tmp_table=0;
|
|
||||||
buff_ptr= strmov(buff_ptr,"; Using temporary");
|
|
||||||
}
|
|
||||||
if (need_order)
|
|
||||||
{
|
|
||||||
need_order=0;
|
|
||||||
buff_ptr= strmov(buff_ptr,"; Using filesort");
|
|
||||||
}
|
|
||||||
if (distinct && test_all_bits(used_tables,thd->used_tables))
|
|
||||||
buff_ptr= strmov(buff_ptr,"; Distinct");
|
|
||||||
if (buff_ptr == buff)
|
|
||||||
buff_ptr+= 2;
|
|
||||||
item_list.push_back(new Item_string(buff+2,(uint) (buff_ptr - buff)-2));
|
|
||||||
// For next iteration
|
// For next iteration
|
||||||
used_tables|=table->map;
|
used_tables|=table->map;
|
||||||
if (result->send_data(item_list))
|
if (result->send_data(item_list))
|
||||||
|
Loading…
x
Reference in New Issue
Block a user