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.
