diff --git a/mysql-test/r/explain.result b/mysql-test/r/explain.result
index 876846a523618f8ed29391893fb3ed54deb4c447..fa15165722dd42c61e5a78f36a492a8f74aee9b4 100644
--- a/mysql-test/r/explain.result
+++ b/mysql-test/r/explain.result
@@ -1,5 +1,8 @@
 drop table if exists t1;
 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");
 select * from t1 where str is null;
 id	str
diff --git a/mysql-test/t/explain.test b/mysql-test/t/explain.test
index 31a01ae136061d938e9cb848c7c5e059870874e2..8a41ebe5b4f6affee60babc4658ea2cb421768e3 100644
--- a/mysql-test/t/explain.test
+++ b/mysql-test/t/explain.test
@@ -3,6 +3,7 @@
 
 drop table if exists t1;
 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");
 select * from t1 where str is null;
 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";
 
 #The following should give errors
-!$1072 explain select * from t1 use key (str,str,foo) where str="foo";
-!$1072 explain select * from t1 ignore key (str,str,foo) where str="foo";
+--error 1072
+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;
 
 explain select 1;
diff --git a/sql/sql_select.cc b/sql/sql_select.cc
index 4bae58d70cd7f40de36f31429e457a314a2b973e..e811c55ed1b58b73f6a8d335dd1e3c2cf5489dc4 100644
--- a/sql/sql_select.cc
+++ b/sql/sql_select.cc
@@ -7352,36 +7352,39 @@ static void select_describe(JOIN *join, bool need_tmp_table, bool need_order,
       
       if (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)",
-		  tab->keys);
-	  buff_ptr=strend(buff_ptr);
+	  if (tab->use_quick == 2)
+	  {
+	    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
-	  buff_ptr=strmov(buff_ptr,"; Using where");
-      }
-      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 (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));
       }
-      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
       used_tables|=table->map;
       if (result->send_data(item_list))