Fixed portability issue with comparing thread id

Fixed bug where return value 'error' was not set in case of error in pagecache
Documented the open LOAD INDEX bug


KNOWN_BUGS.txt:
  Added the problem with LOAD INDEX as a known bugs. Will fix this bug later this week
storage/maria/ma_pagecache.c:
  Fixed portability issue with comparing thread id
  Fixed bug where return value 'error' was not set in case of error
This commit is contained in:
unknown 2008-01-31 08:48:49 +02:00
parent 0857a6930d
commit 4d1cb99149
2 changed files with 12 additions and 13 deletions

View file

@ -31,7 +31,9 @@ Known bugs that are planned to be fixed before next minor release
Temporary fix is to remove or maria_log.???????? files from the data
directory, restart mysqld and run CHECK TABLE / REPAIR TABLE or
mysqlcheck on your Maria tables
- LOAD INDEX commands are for the moment ignored for Maria tables
(The code needs to be rewritten to do all reads through page cache to
avoid half-block reads)
Known bugs that are planned to be fixed before Beta
===================================================

View file

@ -2224,7 +2224,7 @@ static my_bool get_wrlock(PAGECACHE *pagecache,
file.file, block->hash_link->file.file,
(ulong) pageno, (ulong) block->hash_link->pageno));
PCBLOCK_INFO(block);
while (block->wlocks && block->write_locker != locker)
while (block->wlocks && !pthread_equal(block->write_locker, locker))
{
/* Lock failed we will wait */
#ifdef THREAD
@ -3658,19 +3658,16 @@ no_key_cache:
if (offset != 0 || size != pagecache->block_size)
{
char *page_buffer= alloca(pagecache->block_size);
int error= pagecache_fread(pagecache, file,
page_buffer,
pageno,
pagecache->readwrite_flags);
if (error)
if ((error= pagecache_fread(pagecache, file,
page_buffer,
pageno,
pagecache->readwrite_flags)))
goto end;
else
if ((file->read_callback)(page_buffer, pageno, file->callback_data))
{
if ((file->read_callback)(page_buffer, pageno, file->callback_data))
{
DBUG_PRINT("error", ("read callback problem"));
goto end;
}
DBUG_PRINT("error", ("read callback problem"));
error= 1;
goto end;
}
memcpy(page_buffer + offset, buff, size);
buff= page_buffer;