List:Commits« Previous MessageNext Message »
From:Georgi Kodinov Date:July 15 2008 2:50pm
Subject:bzr commit into mysql-5.0 branch (kgeorge:2648) Bug#37943
View as plain text  
#At file:///home/kgeorge/mysql/bzr/B37943-5.0-bugteam/

 2648 Georgi Kodinov	2008-07-15
      Bug#37943 : Reproducible mysqld crash/sigsegv in sel_trees_can_be_ored
      
      A tree can mention a key and have no key test (e.g. it's an OR tree).
      So we need to check if there's a key test before using it in 
      sel_tree_can_be_ored.
modified:
  mysql-test/r/index_merge.result
  mysql-test/t/index_merge.test
  sql/opt_range.cc

per-file messages:
  mysql-test/r/index_merge.result
    Bug#37943 : test case
  mysql-test/t/index_merge.test
    Bug#37943 : test case
  sql/opt_range.cc
    Bug#37943 : check for a key test before using it
=== modified file 'mysql-test/r/index_merge.result'
--- a/mysql-test/r/index_merge.result	2007-11-30 05:32:04 +0000
+++ b/mysql-test/r/index_merge.result	2008-07-15 12:50:10 +0000
@@ -518,3 +518,13 @@ a	filler	b
 4	zz	4
 5	qq	4
 drop table t1, t2;
+CREATE TABLE t1 (a varchar(8), b set('a','b','c','d','e','f','g','h'),
+KEY b(b), KEY a(a));
+INSERT INTO t1 VALUES ('y',''), ('z','');
+SELECT b,a from t1 WHERE (b!='c' AND b!='f' && b!='h') OR 
+(a='pure-S') OR (a='DE80337a') OR (a='DE80799');
+b	a
+	y
+	z
+DROP TABLE t1;
+End of 5.0 tests

=== modified file 'mysql-test/t/index_merge.test'
--- a/mysql-test/t/index_merge.test	2007-07-14 18:02:10 +0000
+++ b/mysql-test/t/index_merge.test	2008-07-15 12:50:10 +0000
@@ -463,3 +463,18 @@ select * from t2 where a=4 or b=4;
 
 drop table t1, t2;
 
+#
+# Bug #37943: Reproducible mysqld crash/sigsegv in sel_trees_can_be_ored
+#
+
+CREATE TABLE t1 (a varchar(8), b set('a','b','c','d','e','f','g','h'),
+                 KEY b(b), KEY a(a));
+INSERT INTO t1 VALUES ('y',''), ('z','');
+
+#should not crash
+SELECT b,a from t1 WHERE (b!='c' AND b!='f' && b!='h') OR 
+  (a='pure-S') OR (a='DE80337a') OR (a='DE80799');
+
+DROP TABLE t1;
+
+--echo End of 5.0 tests

=== modified file 'sql/opt_range.cc'
--- a/sql/opt_range.cc	2008-03-28 18:02:27 +0000
+++ b/sql/opt_range.cc	2008-07-15 12:50:10 +0000
@@ -4724,7 +4724,7 @@ bool sel_trees_can_be_ored(SEL_TREE *tre
     {
       key1= tree1->keys + key_no;
       key2= tree2->keys + key_no;
-      if ((*key1)->part == (*key2)->part)
+      if (*key1 && *key2 && (*key1)->part == (*key2)->part)
       {
         DBUG_RETURN(TRUE);
       }

Thread
bzr commit into mysql-5.0 branch (kgeorge:2648) Bug#37943Georgi Kodinov15 Jul