Commit b24d5e4e authored by unknown's avatar unknown

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


mysql-test/r/innodb.result:
  Test that handler doesn't work with InnoDB
mysql-test/t/innodb.test:
  Test that handler doesn't work with InnoDB
parent 6844ecca
......@@ -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;
......@@ -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;
......@@ -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);
......
......@@ -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,8 +76,8 @@ int mysql_ha_close(THD *thd, TABLE_LIST *tables)
close_thread_table(thd, ptr);
VOID(pthread_mutex_unlock(&LOCK_open));
}
send_ok(&thd->net);
if (!dont_send_ok)
send_ok(&thd->net);
return 0;
}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment