Loading mysql-test/r/handler.result +1 −0 Original line number Diff line number Diff line Loading @@ -129,6 +129,7 @@ a b handler t2 read next; a b 18 eee alter table t1 type=MyISAM; handler t2 read next; a b 19 fff Loading mysql-test/t/handler.test +2 −0 Original line number Diff line number Diff line Loading @@ -58,8 +58,10 @@ handler t2 read a=(19) where b="yyy"; handler t2 read first; handler t2 read next; alter table t1 type=MyISAM; handler t2 read next; !$1064 handler t2 read last; handler t2 close; drop table if exists t1; sql/sql_handler.cc +5 −0 Original line number Diff line number Diff line Loading @@ -130,7 +130,11 @@ int mysql_ha_read(THD *thd, TABLE_LIST *tables, select_limit+=offset_limit; send_fields(thd,list,1); HANDLER_TABLES_HACK(thd); MYSQL_LOCK *lock=mysql_lock_tables(thd,&tables->table,1); HANDLER_TABLES_HACK(thd); if (!lock) goto err0; // mysql_lock_tables() printed error message already for (uint num_rows=0; num_rows < select_limit; ) { Loading Loading @@ -238,6 +242,7 @@ int mysql_ha_read(THD *thd, TABLE_LIST *tables, return 0; err: mysql_unlock_tables(thd,lock); err0: return -1; } Loading Loading
mysql-test/r/handler.result +1 −0 Original line number Diff line number Diff line Loading @@ -129,6 +129,7 @@ a b handler t2 read next; a b 18 eee alter table t1 type=MyISAM; handler t2 read next; a b 19 fff Loading
mysql-test/t/handler.test +2 −0 Original line number Diff line number Diff line Loading @@ -58,8 +58,10 @@ handler t2 read a=(19) where b="yyy"; handler t2 read first; handler t2 read next; alter table t1 type=MyISAM; handler t2 read next; !$1064 handler t2 read last; handler t2 close; drop table if exists t1;
sql/sql_handler.cc +5 −0 Original line number Diff line number Diff line Loading @@ -130,7 +130,11 @@ int mysql_ha_read(THD *thd, TABLE_LIST *tables, select_limit+=offset_limit; send_fields(thd,list,1); HANDLER_TABLES_HACK(thd); MYSQL_LOCK *lock=mysql_lock_tables(thd,&tables->table,1); HANDLER_TABLES_HACK(thd); if (!lock) goto err0; // mysql_lock_tables() printed error message already for (uint num_rows=0; num_rows < select_limit; ) { Loading Loading @@ -238,6 +242,7 @@ int mysql_ha_read(THD *thd, TABLE_LIST *tables, return 0; err: mysql_unlock_tables(thd,lock); err0: return -1; } Loading