#1069 db3 oddities
Closed: Fixed None Opened 15 years ago by mmcgrath.

I onticed this on db3:

I'm going to do some checks and probably a repair to see whats up.


koji=# select count(*) from rpmfiles;
ERROR: invalid page header in block 2914832 of relation "rpmfiles"

Notes from #postgres:

16:52 < RhodiumToad> what you can do is to do a binary chop on select * from table offset N until you find the position of the offending row
16:56 < RhodiumToad> anyway, by doing that you can find the ctid of the failing rows, and then do another query with WHERE NOT (ctid = '(n,m)')
16:57 < RhodiumToad> then copy the table content using COPY (select ...) TO 'file.dat';

kojibad=# select count(*) from rpmfiles;

WARNING: invalid page header in block 2914837 of relation "rpmfiles"; zeroing out page
WARNING: invalid page header in block 2914838 of relation "rpmfiles"; zeroing out page
WARNING: invalid page header in block 2914839 of relation "rpmfiles"; zeroing out page
WARNING: invalid page header in block 2914840 of relation "rpmfiles"; zeroing out page
WARNING: invalid page header in block 2914841 of relation "rpmfiles"; zeroing out page
WARNING: invalid page header in block 2914842 of relation "rpmfiles"; zeroing out page
WARNING: invalid page header in block 2914843 of relation "rpmfiles"; zeroing out page
WARNING: invalid page header in block 2914844 of relation "rpmfiles"; zeroing out page
WARNING: invalid page header in block 2914845 of relation "rpmfiles"; zeroing out page
WARNING: invalid page header in block 2914846 of relation "rpmfiles"; zeroing out page
WARNING: invalid page header in block 2914847 of relation "rpmfiles"; zeroing out page
WARNING: invalid page header in block 2914848 of relation "rpmfiles"; zeroing out page
WARNING: invalid page header in block 2914849 of relation "rpmfiles"; zeroing out page
WARNING: invalid page header in block 2914850 of relation "rpmfiles"; zeroing out page
WARNING: invalid page header in block 2914851 of relation "rpmfiles"; zeroing out page
WARNING: invalid page header in block 2914852 of relation "rpmfiles"; zeroing out page
WARNING: invalid page header in block 2914853 of relation "rpmfiles"; zeroing out page
WARNING: invalid page header in block 2914854 of relation "rpmfiles"; zeroing out page
WARNING: invalid page header in block 2914855 of relation "rpmfiles"; zeroing out page
count


251949613

Ok, so I think this will fix it.

Note: the 251959613 should be larger then the number of rows in the database

{{{
time for i in seq 1 1000000 251959613; do echo $i; echo "select * from rpmfiles offset $i limit 1000000;" | psql -A -F';' koji | grep -ve ";fileflags$" -ve " rows)" >> /mnt2/t/rpmfiles.new;done

echo "select * into test from rpmfiles;" | psql koji

time echo "copy test from '/mnt2/t/rpmfiles.new' DELIMITERS ';' CSV;" | psql koji
}}}

Then test. The old rpmfiles can be dropped and test can be added. I'm going to test again soon.

The:

echo "select * into test from rpmfiles;" | psql koji

above should be:

echo "select * into test from rpmfiles limit 1;" | psql koji

Then

echo "delete from test;" | psql koji

With the last koji upgrade, this is no longer an issue.

Login to comment on this ticket.

Metadata