diff --git a/mysql-test/r/handler.result b/mysql-test/r/handler.result index 525fd1a4495..1973797ae79 100644 --- a/mysql-test/r/handler.result +++ b/mysql-test/r/handler.result @@ -151,4 +151,6 @@ insert into t1 values (1), (2), (3); handler t1 open; handler t1 read a=(W); Unknown column 'W' in 'field list' +handler t1 read a=(a); +Wrong arguments to HANDLER ... READ drop table t1; diff --git a/mysql-test/t/handler.test b/mysql-test/t/handler.test index b1902c213bf..39ceab7ab22 100644 --- a/mysql-test/t/handler.test +++ b/mysql-test/t/handler.test @@ -88,5 +88,7 @@ insert into t1 values (1), (2), (3); handler t1 open; --error 1054 handler t1 read a=(W); +--error 1210 +handler t1 read a=(a); drop table t1; diff --git a/sql/sql_handler.cc b/sql/sql_handler.cc index c80c0444cb5..42cfcb51377 100644 --- a/sql/sql_handler.cc +++ b/sql/sql_handler.cc @@ -194,7 +194,12 @@ int mysql_ha_read(THD *thd, TABLE_LIST *tables, for (key_len=0 ; (item=it_ke++) ; key_part++) { if (item->fix_fields(thd, tables)) - return -1; + goto err; + if (item->used_tables() & ~RAND_TABLE_BIT) + { + my_error(ER_WRONG_ARGUMENTS,MYF(0),"HANDLER ... READ"); + goto err; + } item->save_in_field(key_part->field, 1); key_len+=key_part->store_length; }