From 3eda53fb343fe3b2ac2b3868a779f17f22343a6f Mon Sep 17 00:00:00 2001 From: "monty@hundin.mysql.fi" <> Date: Sat, 22 Dec 2001 15:44:44 +0200 Subject: [PATCH] Fix for error message when using HANDLER OPEN on InnoDB tables. --- mysql-test/r/innodb.result | 9 +++++++-- mysql-test/t/innodb.test | 9 +++++++-- sql/mysql_priv.h | 2 +- sql/sql_handler.cc | 7 ++++--- 4 files changed, 19 insertions(+), 8 deletions(-) diff --git a/mysql-test/r/innodb.result b/mysql-test/r/innodb.result index ff3254c03b2..71b9a6d27a0 100644 --- a/mysql-test/r/innodb.result +++ b/mysql-test/r/innodb.result @@ -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; diff --git a/mysql-test/t/innodb.test b/mysql-test/t/innodb.test index 68617e99b31..0b738809e9c 100644 --- a/mysql-test/t/innodb.test +++ b/mysql-test/t/innodb.test @@ -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; diff --git a/sql/mysql_priv.h b/sql/mysql_priv.h index 629f29a343e..739991f55b1 100644 --- a/sql/mysql_priv.h +++ b/sql/mysql_priv.h @@ -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 *,enum ha_rkey_function,Item *,ha_rows,ha_rows); diff --git a/sql/sql_handler.cc b/sql/sql_handler.cc index 5d913d2b828..24108330dc9 100644 --- a/sql/sql_handler.cc +++ b/sql/sql_handler.cc @@ -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; }