Re: Proposal: Adding compression of temporary files

From: lakshmi <lakshmigcdac(at)gmail(dot)com>
To: pgsql-hackers <pgsql-hackers(at)postgresql(dot)org>
Cc: Filip Janus <fjanus(at)redhat(dot)com>, zsolt(dot)parragi(at)percona(dot)com
Subject: Re: Proposal: Adding compression of temporary files
Date: 2026-01-21 06:32:58
Message-ID: CAEvyyTj5G3BAFYt=VHJPLFF_meJGmSEk+J4BqM7gGUen8sXchw@mail.gmail.com
Views: Whole Thread | Raw Message | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

HI all,
While testing the temp file compression patch,noticed that the new
temp_file_compression GUC isn't documented yet.I put together a small docs
patch to add a short description and clarify that the effect of compression
depends on the workload(for example ,hash join spills may not show visible
size reduction due to fixed_size chunks).

patch is attached.Happy to adjust the wording if needed.
thanks,
lakshmi

On Tue, Jan 20, 2026 at 4:21 PM lakshmi <lakshmigcdac(at)gmail(dot)com> wrote:

> Hi Filip,
>
> I tested both patches on current master using git am -3 .They apply
> cleanly,build fine,and the temp_file _compression GUC works as expected.
> Query results are unchanged.
>
> For hash join spill test,temp files were created as expected,but the
> logged size were same for no,lz4,and pglz,which seems consistent with
> fixed-size fileset chunking.It might be helpful to briefly note this in the
> documentation to avoid confusion.
>
> Thanks for working on this .
> best regards,
> lakshmi
>
> On Tue, Jan 20, 2026 at 4:10 AM Zsolt Parragi <zsolt(dot)parragi(at)percona(dot)com>
> wrote:
>
>> Hello!
>>
>> I tried to review the code. It compiled, the test suite passed.
>>
>> I noticed two typos:
>>
>> buffile.c:77 - "Disaled"
>> buffile.c:133 - "mathods"
>>
>> And a few other small findings:
>>
>> buffile.h:35 and buffile.c:63 - same constants defined first as an
>> Enum and then as #defines - code builds properly without the defines.
>>
>> buffile.c:121 - compress_tempfile is defined, set to false at :167,
>> but never used otherwise
>>
>> guc_tables.c:470 - the comment says that pglz isn't supported yet, but
>> we have a value for it, and I see support for it in the code
>>
>> buffile.c:659: (and at other places) if USE_LZ4 is undefined, the
>> codepath doesn't do anything. I think these ifdefs should follow how
>> other compression code works, such as wal compression where there's an
>> #else path with elog(ERROR, ...)
>> Similarly, maybe there should be an explicit TEMP_NONE_COMPRESSION
>> branch that does nothing, and the default branch should be an error?
>>
>> buffile.c:265: If seek isn't supported/limited, shouldn't there be at
>> least an assertion about it in BufFileSeek? And tell isn't mentioned,
>> but it seems to me that tell also doesn't work properly.
>>
>

Attachment Content-Type Size
doc-temp-file-compression-doc.patch text/x-patch 1.2 KB

In response to

Browse pgsql-hackers by date

  From Date Subject
Next Message David Rowley 2026-01-21 06:36:03 Re: Optional skipping of unchanged relations during ANALYZE?
Previous Message shveta malik 2026-01-21 06:32:53 Re: Skipping schema changes in publication