Re: Fix detection of truncated zstd-compressed backups - Mailing list pgsql-hackers

From Chao Li
Subject Re: Fix detection of truncated zstd-compressed backups
Date
Msg-id 3664E105-4512-4BD2-99A7-0F5C25EBB173@gmail.com
Whole thread
In response to Re: Fix detection of truncated zstd-compressed backups  (Chao Li <li.evan.chao@gmail.com>)
Responses Re: Fix detection of truncated zstd-compressed backups
List pgsql-hackers

> On Aug 13, 2026, at 05:56, Zsolt Parragi <zsolt.parragi@percona.com> wrote:
>
> I have two minor comment for v5, otherwise it looks good to me:

Hi Zsolt,

Thanks a lot for reviewing.

>
> +typedef enum
> +{
> + STREAM_NEW,
> + STREAM_HAS_DATA,
> + STREAM_FINISHED,
> +} pg_stream_state;
> +
>
> This is duplicated in two files, wouldn't be astreamer.h a better place for it?

I think this makes sense. Plus your second comment, this enum can be shared by all 3 astreamers. I moved it to
astreamer.hand renamed it to astreamer_decompression_state. 

>
> + if (!mystreamer->stream_finished)
> + pg_fatal("could not decompress data: compressed stream is incomplete");
> +
>
> The other two checks distinguish empty from incomplete, is this
> difference intended?

I do not think that is intentional. My initial implementation did not check for an empty stream, and gzip uses a
differentpattern from zstd and LZ4, which is probably why Daniel initially added the empty-stream check only to zstd
andlz4. 

I have now added the same check to gzip so that all three astreamers are consistent.

PFA v6: addressed Zsolt’s comments.

Best regards,
--
Chao Li (Evan)
HighGo Software Co., Ltd.
https://www.highgo.com/





Attachment

pgsql-hackers by date:

Previous
From: Bharath Rupireddy
Date:
Subject: Re: [PATCH] Release replication slot on error in SQL-callable slot functions
Next
From: Japin Li
Date:
Subject: Re: Fix detection of truncated zstd-compressed backups