[Bizgres-general] Re: Latest bitmap patch results. (tuple offset out of range)

Mark Kirkwood markir at paradise.net.nz
Mon Jan 30 08:35:47 GMT 2006


Mark Kirkwood wrote:
> Ayush Parashar wrote:
> 
>> The previous email did not go through, probably because the size of 
>> patch + attachment was larger.
>> Resending the patch and sending the results with this patch seperately.
>>
>> Ayush
> 
> 
> I am seeing some offsets being calculated bigger than tidscan.c likes - 
> e.g:
>
Actually is tidbitmap.c I meant....

> 
> bitmap=# SELECT count(*) FROM bitmaptest WHERE val2 = 70;
> ERROR:  tuple offset out of range: 257
> 

Further on this, for the val2 index (100 distinct values) on a 100000 
row version of this table, I get tuple offset errors for 13 of them. 
Additionally here are a couple of errors like:

bitmap=# SELECT count(*) FROM bitmaptest WHERE val2=38;
ERROR:  could not access status of transaction 2021160960
DETAIL:  could not open file "/data0/bizdata/0.9/pg_clog/0787": No such 
file or directory

This looks like block header corruption, but neither of the heap 
relations seem effected:

bitmap=# SELECT count(*) FROM bitmaptest;
  count
--------
  100000
(1 row)

bitmap=# SELECT count(*) FROM bm_internal_t2200bitmaptest_val2_0;
  count
-------
    100
(1 row)



To rule the 'I did something silly' type of error, I changed bitmap.h to 
use 32-bit words, and after a rebuild and re-initialize, these errors do 
*not* appear. After a change back to 8-bit words, the errors come back :-(


I did wonder about alignment of uint8 (which is really unsigned char) on 
this platform (FreeBSD/x86), however it is 1 byte... any ideas?

(for anyone who wishes to reproduce, the 100000 row test case at: 
http://homepages.paradise.net.nz/markir/download/bitmaptest.tar.gz )


regards

Mark


More information about the Bizgres-general mailing list