Re: unable to dump database, toast errors

From: Lonni Friedman <lfriedman(at)vasoftware(dot)com>
To: Jan Wieck <JanWieck(at)Yahoo(dot)com>
Cc: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, pgsql-general(at)postgresql(dot)org
Subject: Re: unable to dump database, toast errors
Date: 2003-04-06 22:24:45
Message-ID: 3E90A92D.6030102@vasoftware.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

On 04/06/03 14:50, Jan Wieck wrote:
> Lonni Friedman wrote:
>> On 04/04/03 14:32, Tom Lane wrote:
>> >> i'm positive that there is a much more recent release. this server is
>> >> sadly, very poorly maintained by the customer. do you feel that the
>> >> segfaults generated in psql are blocking any possible solution to the
>> >> pg_dump failures, or can you/I work on a solution for that indpendently of
>> >> resolving the segfaults?
>> >
>> > Assuming that I've correctly diagnosed the segfault, it will only occur
>> > if you try to print an extremely wide value in psql. It's pretty easy
>> > to avoid doing so, though. For example, you could query for
>> > LENGTH(bin_data) or a SUBSTRING() of it, instead of printing the whole
>> > field value. AFAIR, 7.2 does not have any optimizations that would
>> > skip fetching the whole toasted value when it is the argument of one of
>> > these functions, so "select length(bin_data) ..." should be just as
>> > useful for checking for brokenness as "select bin_data ...".
>>
>> Hi Tom,
>> Following your suggestion, i pinned down the following:
>>
>> sfee=# select LENGTH(bin_data) from artifact_file LIMIT 1 OFFSET 693;
>> ERROR: missing chunk number 1 for toast value 7685119
>>
>> However, what is very odd, is that I can view the entire contents of
>> that row's particular bin_data column if i do a normal select:
>> select bin_data from artifact_file LIMIT 1 OFFSET 693;
>>
>> and it completes with no errors. After more testing, it appears that
>> the 'select LENGTH(bin_data) ...' for any offset greater than or equal
>> to 693 dies with the same 'missing chunk...' error.
>>
>> any suggestions on where to go from here?
>
>>From that I would assume that the row at offset 693 is totally intact
> but the one at 694 is the one damaged. LIMIT reads one more row
> internally than you asked for.
>
> Get the key of the row at 694 (and others you might find) and continue
> the work using those keys.

I'm not sure that I understand what it is that I need to do now:

sfee=# select bin_data from artifact_file LIMIT 1 OFFSET 694;
ERROR: missing chunk number 1 for toast value 7685119
sfee=# select LENGTH(bin_data) from artifact_file LIMIT 1 OFFSET 694;
ERROR: missing chunk number 1 for toast value 7685119

How would i get the key of row 694?

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Andrew Sullivan 2003-04-06 22:39:52 Re: Consecutive queries
Previous Message Jan Wieck 2003-04-06 21:50:21 Re: unable to dump database, toast errors