Maria: it is allowed to change unknown type to any legal type of page

in the pagecache: fixing wrong assertion and a test case.
maria.test and ps_maria.test still fail.


mysql-test/r/maria.result:
  result update
mysql-test/t/maria.test:
  added test for incorrect assert on page's type
storage/maria/ma_pagecache.c:
  It is allowed to change unknown type to any legal type of page in the
  pagecache.
This commit is contained in:
unknown 2007-07-30 12:01:52 +02:00
parent 9b1e83dba7
commit 9554b40df2
3 changed files with 11 additions and 1 deletions

View file

@ -33,6 +33,10 @@ test.t1 repair status OK
check table t1;
Table Op Msg_type Msg_text
test.t1 check status OK
flush table t1;
repair table t1;
Table Op Msg_type Msg_text
test.t1 repair status OK
drop table t1;
create table t1 (a int not null auto_increment, b int not null, primary key (a), index(b));
insert into t1 (b) values (1),(2),(2),(2),(2);

View file

@ -57,6 +57,10 @@ delete from t1 where (a & 1);
check table t1;
repair table t1;
check table t1;
# FLUSH + REPAIR used to cause assertion failure in page cache
flush table t1;
repair table t1;
drop table t1;
#

View file

@ -2865,7 +2865,9 @@ restart:
(pin == PAGECACHE_PIN)),
&page_st);
DBUG_ASSERT(block->type == PAGECACHE_EMPTY_PAGE ||
block->type == type || type == PAGECACHE_READ_UNKNOWN_PAGE);
block->type == type ||
type == PAGECACHE_READ_UNKNOWN_PAGE ||
block->type == PAGECACHE_READ_UNKNOWN_PAGE);
if (type != PAGECACHE_READ_UNKNOWN_PAGE ||
block->type == PAGECACHE_EMPTY_PAGE)
block->type= type;