List:Maria Storage Engine« Previous MessageNext Message »
From:Guilhem Bichot Date:July 10 2008 2:52pm
Subject:bzr commit into MySQL/Maria:mysql-maria branch (guilhem:2662) Bug#37276
View as plain text  
#At bzr+ssh://bk-internal.mysql.com/bzrroot/server/mysql-maria/

 2662 Guilhem Bichot	2008-07-10
      Porting bugfix made by Serg (for bug37276_reduced_corruption.sql of BUG#37276 "Maria: various index corruption,
      block format assertion failure") from 6.0-maria to 5.1-maria.
modified:
  mysql-test/r/maria.result
  mysql-test/t/maria.test
  storage/maria/ma_check.c

=== modified file 'mysql-test/r/maria.result'
--- a/mysql-test/r/maria.result	2008-07-01 20:47:09 +0000
+++ b/mysql-test/r/maria.result	2008-07-10 14:51:59 +0000
@@ -1865,3 +1865,38 @@ t1	CREATE TABLE `t1` (
   KEY `b` (`b`) KEY_BLOCK_SIZE=8192
 ) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0 KEY_BLOCK_SIZE=16384
 drop table t1;
+create table t2(a varchar(255),key(a))engine=maria row_format=dynamic transactional=0;
+insert into t2 values (repeat('o',124)), (repeat('h',226)), (repeat('i',236)),
+(repeat('l',234)), (repeat('b',13)), (repeat('g',236)), (repeat('y',205)),
+(repeat('c',99)), (repeat('g',145)), (repeat('o',131)), (repeat('e',63)),
+(repeat('q',155)), (repeat('k',87)), (repeat('i',54)), (repeat('p',84)),
+(repeat('m',119)), (repeat('c',2)), (repeat('a',174)), (repeat('g',160)),
+(repeat('t',147)), (repeat('n',107));
+insert into t2 values ('nupdjlafwfvuuvruxkyjxpmupihzgspkaybijztkeukgzzkrxmd');
+insert into t2 values (repeat('g',40)), (repeat('i',173)), (repeat('q',126)),
+(repeat('i',217)), (repeat('f',161)), (repeat('i',28)), (repeat('a',35)),
+(repeat('y',27)), (repeat('o',100)), (repeat('o',175)), (repeat('f',69)),
+(repeat('k',156)), (repeat('n',220)), (repeat('q',247)), (repeat('y',180)),
+(repeat('v',209)), (repeat('m',169)), (repeat('y',170)), (repeat('r',151)),
+(repeat('d',38)), (repeat('g',64)), (repeat('k',77)), (repeat('l',150)),
+(repeat('s',150)), (repeat('u',127)), (repeat('l',15)), (repeat('m',33)),
+(repeat('r',177)), (repeat('v',197)), (repeat('k',62)), (repeat('h',219)),
+(repeat('u',161)), (repeat('y',118)), (repeat('i',184)), (repeat('z',202)),
+(repeat('j',113)), (repeat('q',95)), (repeat('q',164)), (repeat('e',54)),
+(repeat('e',60)), (repeat('l',203)), (repeat('g',77)), (repeat('y',44)),
+(repeat('j',196)), (repeat('t',45)), (repeat('l',190)), (repeat('l',89)),
+(repeat('q',45)), (repeat('e',191)), (repeat('t',38)), (repeat('f',148)),
+(repeat('c',25)), (repeat('v',97)), (repeat('i',83)), (repeat('s',166)),
+(repeat('d',96)), (repeat('v',82)), (repeat('n',127)), (repeat('i',201)),
+(repeat('x',184)), (repeat('d',76)), (repeat('u',17)), (repeat('a',178));
+insert into t2 values ('hwvfiavnmufgbulapzrolonwxufheqymvjncnczlzcjokzqlsvmomcjzgzwzquyxpunxdmotdczocwliaprpubwaeccsulvittgizcutxxb');
+insert into t2 values (repeat('x',28)), (repeat('p',21)), (repeat('k',241)),
+(repeat('i',243)), (repeat('b',172)), (repeat('z',94)), (repeat('i',218)),
+(repeat('a',177)), (repeat('g',251)), (repeat('q',161)), (repeat('x',231)),
+(repeat('p',51)), (repeat('f',141)), (repeat('m',28)), (repeat('r',77)),
+(repeat('h',56)), (repeat('k',23)), (repeat('f',198)), (repeat('o',243)),
+(repeat('d',160)), (repeat('h',82));
+check table t2 extended;
+Table	Op	Msg_type	Msg_text
+test.t2	check	status	OK
+drop table t2;

=== modified file 'mysql-test/t/maria.test'
--- a/mysql-test/t/maria.test	2008-07-01 20:47:09 +0000
+++ b/mysql-test/t/maria.test	2008-07-10 14:51:59 +0000
@@ -1148,8 +1148,47 @@ create table t1 (a int not null, b int, 
 show create table t1;
 drop table t1;
 
+#
+# from bug37276_reduced_corruption.sql
+#
+create table t2(a varchar(255),key(a))engine=maria row_format=dynamic transactional=0;
+insert into t2 values (repeat('o',124)), (repeat('h',226)), (repeat('i',236)),
+(repeat('l',234)), (repeat('b',13)), (repeat('g',236)), (repeat('y',205)),
+(repeat('c',99)), (repeat('g',145)), (repeat('o',131)), (repeat('e',63)),
+(repeat('q',155)), (repeat('k',87)), (repeat('i',54)), (repeat('p',84)),
+(repeat('m',119)), (repeat('c',2)), (repeat('a',174)), (repeat('g',160)),
+(repeat('t',147)), (repeat('n',107));
+insert into t2 values ('nupdjlafwfvuuvruxkyjxpmupihzgspkaybijztkeukgzzkrxmd');
+insert into t2 values (repeat('g',40)), (repeat('i',173)), (repeat('q',126)),
+(repeat('i',217)), (repeat('f',161)), (repeat('i',28)), (repeat('a',35)),
+(repeat('y',27)), (repeat('o',100)), (repeat('o',175)), (repeat('f',69)),
+(repeat('k',156)), (repeat('n',220)), (repeat('q',247)), (repeat('y',180)),
+(repeat('v',209)), (repeat('m',169)), (repeat('y',170)), (repeat('r',151)),
+(repeat('d',38)), (repeat('g',64)), (repeat('k',77)), (repeat('l',150)),
+(repeat('s',150)), (repeat('u',127)), (repeat('l',15)), (repeat('m',33)),
+(repeat('r',177)), (repeat('v',197)), (repeat('k',62)), (repeat('h',219)),
+(repeat('u',161)), (repeat('y',118)), (repeat('i',184)), (repeat('z',202)),
+(repeat('j',113)), (repeat('q',95)), (repeat('q',164)), (repeat('e',54)),
+(repeat('e',60)), (repeat('l',203)), (repeat('g',77)), (repeat('y',44)),
+(repeat('j',196)), (repeat('t',45)), (repeat('l',190)), (repeat('l',89)),
+(repeat('q',45)), (repeat('e',191)), (repeat('t',38)), (repeat('f',148)),
+(repeat('c',25)), (repeat('v',97)), (repeat('i',83)), (repeat('s',166)),
+(repeat('d',96)), (repeat('v',82)), (repeat('n',127)), (repeat('i',201)),
+(repeat('x',184)), (repeat('d',76)), (repeat('u',17)), (repeat('a',178));
+insert into t2 values ('hwvfiavnmufgbulapzrolonwxufheqymvjncnczlzcjokzqlsvmomcjzgzwzquyxpunxdmotdczocwliaprpubwaeccsulvittgizcutxxb');
+insert into t2 values (repeat('x',28)), (repeat('p',21)), (repeat('k',241)),
+(repeat('i',243)), (repeat('b',172)), (repeat('z',94)), (repeat('i',218)),
+(repeat('a',177)), (repeat('g',251)), (repeat('q',161)), (repeat('x',231)),
+(repeat('p',51)), (repeat('f',141)), (repeat('m',28)), (repeat('r',77)),
+(repeat('h',56)), (repeat('k',23)), (repeat('f',198)), (repeat('o',243)),
+(repeat('d',160)), (repeat('h',82));
+
+check table t2 extended;
+drop table t2;
+
 --disable_result_log
 --disable_query_log
 eval set global storage_engine=$default_engine, maria_page_checksum=$default_checksum;
 --enable_result_log
 --enable_query_log
+

=== modified file 'storage/maria/ma_check.c'
--- a/storage/maria/ma_check.c	2008-07-09 09:02:27 +0000
+++ b/storage/maria/ma_check.c	2008-07-10 14:51:59 +0000
@@ -814,6 +814,7 @@ static int chk_index(HA_CHECK *param, MA
   MARIA_SHARE *share= info->s;
   char llbuff[22];
   uint diff_pos[2];
+  uchar tmp_key_buff[MARIA_MAX_KEY_BUFF];
   MARIA_KEY tmp_key;
   DBUG_ENTER("chk_index");
   DBUG_DUMP("buff", buff, _ma_get_page_used(share, buff));
@@ -860,7 +861,7 @@ static int chk_index(HA_CHECK *param, MA
                           "Page at %s is marked with HAS_TRANSID even if "
                           "table is not transactional",
                           llstr(page, llbuff));
-  }    
+  }
 
   if (used_length > (uint) keyinfo->block_length - KEYPAGE_CHECKSUM_SIZE)
   {
@@ -870,7 +871,7 @@ static int chk_index(HA_CHECK *param, MA
   }
 
   info->last_key.keyinfo= tmp_key.keyinfo= keyinfo;
-  tmp_key.data=    info->lastkey_buff2;
+  tmp_key.data= tmp_key_buff;
   for ( ;; )
   {
     if (*_ma_killed_ptr(param))
@@ -908,7 +909,7 @@ static int chk_index(HA_CHECK *param, MA
                             llstr(page,llbuff));
       goto err;
     }
-        
+
     if ((*keys)++ &&
 	(flag=ha_key_cmp(keyinfo->seg, info->last_key.data, tmp_key.data,
                          tmp_key.data_length + tmp_key.ref_length,
@@ -933,7 +934,7 @@ static int chk_index(HA_CHECK *param, MA
       if (*keys != 1L)				/* not first_key */
       {
         if (param->stats_method == MI_STATS_METHOD_NULLS_NOT_EQUAL)
-          ha_key_cmp(keyinfo->seg, (uchar*) info->last_key.data, 
+          ha_key_cmp(keyinfo->seg, (uchar*) info->last_key.data,
                      tmp_key.data, tmp_key.data_length,
                      SEARCH_FIND | SEARCH_NULL_ARE_NOT_EQUAL,
                      diff_pos);
@@ -1107,7 +1108,7 @@ static int check_keys_in_record(HA_CHECK
     printf("%s\r", llstr(param->records, llbuff));
     VOID(fflush(stdout));
   }
-  
+
   /* Check if keys match the record */
   for (keynr=0, keyinfo= share->keyinfo; keynr < share->base.keys;
        keynr++, keyinfo++)

Thread
bzr commit into MySQL/Maria:mysql-maria branch (guilhem:2662) Bug#37276Guilhem Bichot10 Jul