From 4b50f4f252bf28b628475339e320d7a927c90459 Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 4 Jul 2003 12:55:25 +0200 Subject: [PATCH] handler should be used with constant expressions only (or rand) --- mysql-test/r/handler.result | 2 ++ mysql-test/t/handler.test | 2 ++ sql/sql_handler.cc | 7 ++++++- 3 files changed, 10 insertions(+), 1 deletion(-) 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; }