Commit b603e47d authored by unknown's avatar unknown
Browse files

Fix for BUG#8441: in index_merge code when creating index search tuples use

 KEY_PART_INFO::store_length, not KEY_PART_INFO::length (like range code does)


mysql-test/r/index_merge_innodb.result:
  Testcase for BUG8441
mysql-test/t/index_merge_innodb.test:
  Testcase for BUG8441
parent c7e49b6b
Loading
Loading
Loading
Loading
+11 −0
Original line number Diff line number Diff line
@@ -123,3 +123,14 @@ key1a = 2 and key1b is null and key3a = 2 and key3b is null;
count(*)
4
drop table t1,t2;
create table t1 (
id1 int,
id2 date ,
index idx2 (id1,id2),
index idx1 (id2)  
) engine = innodb;
insert into t1 values(1,'20040101'), (2,'20040102');
select * from t1  where id1 = 1  and id2= '20040101';
id1	id2
1	2004-01-01
drop table t1;
+11 −0
Original line number Diff line number Diff line
@@ -120,3 +120,14 @@ select count(*) from t1 where

drop table t1,t2;

# Test for BUG#8441
create table t1 (
  id1 int,
  id2 date ,
  index idx2 (id1,id2),
  index idx1 (id2)  
) engine = innodb;
insert into t1 values(1,'20040101'), (2,'20040102');
select * from t1  where id1 = 1  and id2= '20040101'; 
drop table t1;
+2 −2
Original line number Diff line number Diff line
@@ -2593,12 +2593,12 @@ static double ror_scan_selectivity(const ROR_INTERSECT_INFO *info,
      {
        tuple_arg= scan->sel_arg;
        /* Here we use the length of the first key part */
        tuple_arg->store_min(key_part->length, &key_ptr, 0);
        tuple_arg->store_min(key_part->store_length, &key_ptr, 0);
      }
      while (tuple_arg->next_key_part != sel_arg)
      {
        tuple_arg= tuple_arg->next_key_part;
        tuple_arg->store_min(key_part[tuple_arg->part].length, &key_ptr, 0);
        tuple_arg->store_min(key_part[tuple_arg->part].store_length, &key_ptr, 0);
      }
      min_range.length= max_range.length= ((char*) key_ptr - (char*) key_val);
      records= (info->param->table->file->