Commit 3eda53fb authored by monty@hundin.mysql.fi's avatar monty@hundin.mysql.fi
Browse files

Fix for error message when using HANDLER OPEN on InnoDB tables.

parent 9e9e765f
Loading
Loading
Loading
Loading
+7 −2
Original line number Diff line number Diff line
@@ -900,8 +900,13 @@ explain select a,b,c from t1;
table	type	possible_keys	key	key_len	ref	rows	Extra
t1	ALL	NULL	NULL	NULL	NULL	4	
drop table t1;
create table t1 (testint int not null default 1) type=innodb;
create table t1 (t int not null default 1, key (t)) type=innodb;
desc t1;
Field	Type	Null	Key	Default	Extra
testint	int(11)			1	
t	int(11)		MUL	1	
handler t1 open t1;
Table handler for 't1' doesn't have this option
handler t1 read t first;
Unknown table 't1' in HANDLER
handler t1 close;
drop table t1;
+7 −2
Original line number Diff line number Diff line
@@ -565,9 +565,14 @@ explain select a,b,c from t1;
drop table t1;

#
# Check describe
# Check describe & handler
#

create table t1 (testint int not null default 1) type=innodb;
create table t1 (t int not null default 1, key (t)) type=innodb;
desc t1;
--error 1031
handler t1 open t1;
--error 1109
handler t1 read t first;
handler t1 close;
drop table t1;
+1 −1
Original line number Diff line number Diff line
@@ -436,7 +436,7 @@ int mysqld_show(THD *thd, const char *wild, show_var_st *variables);

/* sql_handler.cc */
int mysql_ha_open(THD *thd, TABLE_LIST *tables);
int mysql_ha_close(THD *thd, TABLE_LIST *tables);
int mysql_ha_close(THD *thd, TABLE_LIST *tables, bool dont_send_ok=0);
int mysql_ha_read(THD *, TABLE_LIST *,enum enum_ha_read_modes,char *,
               List<Item> *,enum ha_rkey_function,Item *,ha_rows,ha_rows);

+4 −3
Original line number Diff line number Diff line
@@ -58,6 +58,7 @@ int mysql_ha_open(THD *thd, TABLE_LIST *tables)
  if (!(tables->table->file->option_flag() & HA_CAN_SQL_HANDLER))
  {
    my_printf_error(ER_ILLEGAL_HA,ER(ER_ILLEGAL_HA),MYF(0), tables->name);
    mysql_ha_close(thd, tables,1);
    return -1;
  }

@@ -65,7 +66,7 @@ int mysql_ha_open(THD *thd, TABLE_LIST *tables)
  return 0;
}

int mysql_ha_close(THD *thd, TABLE_LIST *tables)
int mysql_ha_close(THD *thd, TABLE_LIST *tables, bool dont_send_ok)
{
  TABLE **ptr=find_table_ptr_by_name(thd, tables->db, tables->name);

@@ -75,7 +76,7 @@ int mysql_ha_close(THD *thd, TABLE_LIST *tables)
    close_thread_table(thd, ptr);
    VOID(pthread_mutex_unlock(&LOCK_open));
  }

  if (!dont_send_ok)
    send_ok(&thd->net);
  return 0;
}