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:
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.