[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