diff options
author | lenz@mysql.com <> | 2004-01-15 17:47:42 +0100 |
---|---|---|
committer | lenz@mysql.com <> | 2004-01-15 17:47:42 +0100 |
commit | f950b5aed2b04e9ce9848326f06e0ab7073cf154 (patch) | |
tree | bccc436e1e51799fc5ca9c17e51e932d617ea538 | |
parent | 5693662fc0f12a7099b0714b837f01f2370eeb3b (diff) | |
parent | 52ad8214d1f8b05a899d5061548ed190699cd59c (diff) | |
download | mariadb-git-f950b5aed2b04e9ce9848326f06e0ab7073cf154.tar.gz |
Merge lgrimmer@build.mysql.com:/home/bk/mysql-4.0
into mysql.com:/space/my/mysql-4.0
-rw-r--r-- | myisam/mi_search.c | 10 | ||||
-rw-r--r-- | mysql-test/r/range.result | 8 | ||||
-rw-r--r-- | mysql-test/t/range.test | 12 |
3 files changed, 26 insertions, 4 deletions
diff --git a/myisam/mi_search.c b/myisam/mi_search.c index 5d0750f6a82..c6ee18a8477 100644 --- a/myisam/mi_search.c +++ b/myisam/mi_search.c @@ -840,9 +840,11 @@ int _mi_key_cmp(register MI_KEYSEG *keyseg, register uchar *a, break; case HA_KEYTYPE_VARTEXT: { - int a_length,b_length,pack_length; + int a_length,full_a_length,b_length,full_b_length,pack_length; get_key_length(a_length,a); get_key_pack_length(b_length,pack_length,b); + full_a_length=a_length; + full_b_length=b_length; next_key_length=key_length-b_length-pack_length; if (!(nextflag & (SEARCH_PREFIX | SEARCH_UPDATE))) @@ -857,8 +859,8 @@ int _mi_key_cmp(register MI_KEYSEG *keyseg, register uchar *a, (my_bool) ((nextflag & SEARCH_PREFIX) && next_key_length <= 0)))) return ((keyseg->flag & HA_REVERSE_SORT) ? -flag : flag); - a+=a_length; - b+=b_length; + a+=full_a_length; + b+=full_b_length; break; } break; @@ -963,7 +965,7 @@ int _mi_key_cmp(register MI_KEYSEG *keyseg, register uchar *a, if (keyseg->flag & HA_REVERSE_SORT) { - swap(uchar*,a,b); + swap(uchar*,a,b); swap_flag=1; /* Remember swap of a & b */ end= a+ (int) (end-b); } diff --git a/mysql-test/r/range.result b/mysql-test/r/range.result index e87df9a6c24..45d20a8fced 100644 --- a/mysql-test/r/range.result +++ b/mysql-test/r/range.result @@ -300,3 +300,11 @@ SELECT COUNT(*) FROM t1 WHERE (c=0 and b=1) or (c=0 and a=1); COUNT(*) 6 DROP TABLE t1; +create table t1(a text not null, b text not null, c text not null, index (a(10),b(10),c(10))); +insert into t1 values('807780', '477', '165'); +insert into t1 values('807780', '477', '162'); +insert into t1 values('807780', '472', '162'); +select * from t1 where a='807780' and b='477' and c='165'; +a b c +807780 477 165 +drop table t1; diff --git a/mysql-test/t/range.test b/mysql-test/t/range.test index 364ea2d4195..9d9feaa4edc 100644 --- a/mysql-test/t/range.test +++ b/mysql-test/t/range.test @@ -248,3 +248,15 @@ INSERT INTO t1 VALUES (0,1,0),(0,1,0),(0,1,0); SELECT COUNT(*) FROM t1 WHERE (c=0 and a=1) or (c=0 and b=1); SELECT COUNT(*) FROM t1 WHERE (c=0 and b=1) or (c=0 and a=1); DROP TABLE t1; + +# +# BUG#2295 - range on blob +# + +create table t1(a text not null, b text not null, c text not null, index (a(10),b(10),c(10))); +insert into t1 values('807780', '477', '165'); +insert into t1 values('807780', '477', '162'); +insert into t1 values('807780', '472', '162'); +select * from t1 where a='807780' and b='477' and c='165'; +drop table t1; + |