When I first said "dump file without TOC" I actually meant "without offsets in the TOC".
The fact that you get a TOC printed does not prove that the dump file includes a TOC with offsets.
All pg_dump -Fc commands that write to stdout, produce a file without offsets in the TOC. It has nothing to do with
borg.ToC offsets must be filled in right before streaming each table, but this is impossible when the whole TOC has
alreadybeen written to stdout in the beginning.
Dimitris
On 31 August 2025 17:41:34 CEST, Adrian Klaver <adrian.klaver@aklaver.com> wrote:
>On 8/30/25 18:21, Dimitrios Apostolou wrote:
>> Sorry I was not remembering the details. Probably there is a TOC in your dump file, but it does not contain any
positionsfor the data. The pg_restore command has to scan the whole file in advance, and fill in the TOC offsets in
memory.
>>
>> This scanning happens in a very inefficient way, with many seek calls and small block reads. Try strace to see them.
Thisinitial phase can take hours in a huge dump file, before even starting any actual restoration.
>
>It may be that my coffee is not strong enough, but I don't understand what you are trying to say.
>
>Are you using, from previous post, the following?:
>
>"Two patches for speeding up scanning an archive without TOC, like the one I'm having (because it is piped into borg,
insteadof written to file). These were activated, but shouldn't matter. They only build the TOC in pg_restore's memory.
"
>
>The part I don't see is how you get a dump file without a TOC?
>
>When I do the pg_dump and pipe it to Borg the resulting file has a TOC.
>
>Can you show the rest of the | borg create ... command?
>
>>
>> Thank you for testing.
>> Dimitris
>>
>> On 30 August 2025 20:19:13 CEST, Adrian Klaver <adrian.klaver@aklaver.com> wrote:
>
>
>