diff options
author | unknown <serg@serg.mysql.com> | 2001-04-08 12:56:12 +0200 |
---|---|---|
committer | unknown <serg@serg.mysql.com> | 2001-04-08 12:56:12 +0200 |
commit | cb2fe473f274c87f9adb39438d76edd598ad7771 (patch) | |
tree | 278222bc5cbb1cc3a7f37817ef1bd3ddb752b58c | |
parent | 7006b51823cc6c1f69f42f3c1599385414e6c5b4 (diff) | |
download | mariadb-git-cb2fe473f274c87f9adb39438d76edd598ad7771.tar.gz |
This wouldn't ever be pushed
mysql-test/t/handler.test:
new tests
sql/sql_handler.cc:
bugfix
-rw-r--r-- | mysql-test/t/handler.test | 65 | ||||
-rw-r--r-- | sql/sql_handler.cc | 6 |
2 files changed, 47 insertions, 24 deletions
diff --git a/mysql-test/t/handler.test b/mysql-test/t/handler.test index 18f1d37fee4..a84a574aa29 100644 --- a/mysql-test/t/handler.test +++ b/mysql-test/t/handler.test @@ -3,30 +3,47 @@ # drop table if exists t1; -create table t1 (a int, b char(10), key a(a)); +create table t1 (a int, b char(10), key a(a), key b(a,b)); insert into t1 values -(14,"aaa"),(15,"bbb"),(16,"ccc"), -(17,"ddd"),(18,"eee"),(19,"fff"), +(14,"aaa"),(15,"bbb"),(16,"ccc"),(16,"xxx"), +(17,"ddd"),(18,"eee"),(19,"fff"),(19,"yyy"), (20,"ggg"),(21,"hhh"),(22,"iii"); -handler t1 open; -handler t1 read a first; -handler t1 read a next; -handler t1 read a next; -handler t1 read a prev; -handler t1 read a last; -handler t1 read a prev; -handler t1 read a prev; - -handler t1 read a first; -handler t1 read a prev; - -handler t1 read a last; -handler t1 read a prev; -handler t1 read a next; -handler t1 read a next; - -handler t1 read a=(15); - -handler t1 close; -drop table if exists t1; +handler t1 open as t2; +handler t2 read a first; +handler t2 read a next; +handler t2 read a next; +handler t2 read a prev; +handler t2 read a last; +handler t2 read a prev; +handler t2 read a prev; + +handler t2 read a first; +handler t2 read a prev; + +handler t2 read a last; +handler t2 read a prev; +handler t2 read a next; +handler t2 read a next; + +handler t2 read a=(15); +handler t2 read a=(16); + +!$1070 handler t2 read a=(19,"fff"); +handler t2 read b=(19,"fff"); +handler t2 read b=(19,"yyy"); +handler t2 read b=(19); + +!$1109 handler t1 read a last; + +handler t2 read a=(11); +handler t2 read a>=(11); + +handler t2 read a=(18); +handler t2 read a>=(18); +handler t2 read a>(18); +handler t2 read a<=(18); +handler t2 read a<(18); + +handler t2 close; +drop table if exists t1; diff --git a/sql/sql_handler.cc b/sql/sql_handler.cc index df6734c5fd3..17d5ea02e82 100644 --- a/sql/sql_handler.cc +++ b/sql/sql_handler.cc @@ -90,6 +90,12 @@ int mysql_ha_read(THD *thd, TABLE_LIST *tables, KEY *keyinfo=table->key_info+keyno; uint key_len=0, i; byte *key, *buf; + if (key_expr->elements > keyinfo->key_parts) + { + my_printf_error(ER_TOO_MANY_KEY_PARTS,ER(ER_TOO_MANY_KEY_PARTS), + MYF(0),keyinfo->key_parts); + return -1; + } for (i=0; i < key_expr->elements; i++) key_len+=keyinfo->key_part[i].store_length; if (!(key=sql_calloc(ALIGN_SIZE(key_len)))) |