diff --git a/mysql-test/r/select_found.result b/mysql-test/r/select_found.result
index 419ffb73d5965a5a26843e55959a9576ae4fae46..367bdd798b41e6addf848e49b9edab19b1e301fd 100644
--- a/mysql-test/r/select_found.result
+++ b/mysql-test/r/select_found.result
@@ -188,3 +188,21 @@ select FOUND_ROWS();
 FOUND_ROWS()
 0
 drop table t1;
+CREATE TABLE t1 ( a int not null, b int not null, KEY ab(a,b) );
+INSERT INTO t1 VALUES ( 47,    1  );
+INSERT INTO t1 VALUES ( 70,    1  );
+SELECT * FROM t1
+WHERE
+(
+( b =1 AND a BETWEEN 14 AND 21 ) OR
+( b =2 AND a BETWEEN 16 AND 18 ) OR
+( b =3 AND a BETWEEN 15 AND 19 )
+);
+a	b
+DROP TABLE t1;
+CREATE TABLE t1 ( a integer, u varchar(15), r integer, key uao_idx( r, a, u));
+DELETE  FROM t1
+WHERE (  r = 1 AND a IN ( 1, 2    ) AND ( u = 'w'   OR u LIKE 'w/%'   ) )
+OR (  r = 1 AND a IN (       3 ) AND ( u = 'w/U' OR u LIKE 'w/U/%' ) )
+OR (  r = 1 AND a IN ( 1, 2, 3 ) AND ( u = 'w'                     ) );
+drop table t1;
diff --git a/mysql-test/t/select_found.test b/mysql-test/t/select_found.test
index f5ee4d5c0103c4f6742a273e3866fa7b01a319bf..e584fca206f22f16e01fae85840d6d027453196c 100644
--- a/mysql-test/t/select_found.test
+++ b/mysql-test/t/select_found.test
@@ -99,3 +99,31 @@ select FOUND_ROWS();
 select SQL_CALC_FOUND_ROWS * from t1 where id > 6 limit 0, 1;
 select FOUND_ROWS();
 drop table t1;
+
+#
+# Other bugs with range optimization
+#
+
+# bug #2448
+
+CREATE TABLE t1 ( a int not null, b int not null, KEY ab(a,b) );
+INSERT INTO t1 VALUES ( 47,    1  );
+INSERT INTO t1 VALUES ( 70,    1  );
+SELECT * FROM t1
+WHERE
+(
+ ( b =1 AND a BETWEEN 14 AND 21 ) OR
+ ( b =2 AND a BETWEEN 16 AND 18 ) OR
+ ( b =3 AND a BETWEEN 15 AND 19 )
+);
+DROP TABLE t1;
+
+# bug #2698
+
+CREATE TABLE t1 ( a integer, u varchar(15), r integer, key uao_idx( r, a, u));
+DELETE  FROM t1
+WHERE (  r = 1 AND a IN ( 1, 2    ) AND ( u = 'w'   OR u LIKE 'w/%'   ) )
+   OR (  r = 1 AND a IN (       3 ) AND ( u = 'w/U' OR u LIKE 'w/U/%' ) )
+   OR (  r = 1 AND a IN ( 1, 2, 3 ) AND ( u = 'w'                     ) );
+drop table t1;
+
diff --git a/sql/opt_range.cc b/sql/opt_range.cc
index 188d503b767b568332a3ceb00f713528965aacb1..0ed5c447486ff986f0f094f7ec3d57ebfb53c97b 100644
--- a/sql/opt_range.cc
+++ b/sql/opt_range.cc
@@ -488,6 +488,7 @@ SEL_ARG *SEL_ARG::clone(SEL_ARG *new_parent,SEL_ARG **next_arg)
 	return 0;				// OOM
   }
   increment_use_count(1);
+  tmp->color= color;
   return tmp;
 }