Re: directory archive format for pg_dump
Heikki Linnakangas <heikki.linnakangas@enterprisedb.com>
From: Heikki Linnakangas <heikki.linnakangas@enterprisedb.com>
To: Joachim Wieland <joe@mcknight.de>
Cc: Tom Lane <tgl@sss.pgh.pa.us>, José Arthur Benetasso Villanova <jose.arthur@gmail.com>, pgsql-hackers@postgresql.org
Date: 2010-11-29T20:21:51Z
Lists: pgsql-hackers
Attachments
- pg_dump-compression-refactor-2.diff (text/x-diff) patch
On 29.11.2010 07:11, Joachim Wieland wrote: > On Mon, Nov 22, 2010 at 3:44 PM, Heikki Linnakangas > <heikki.linnakangas@enterprisedb.com> wrote: >> * wrap long lines >> * use extern in function prototypes in header files >> * "inline" some functions like _StartDataCompressor, _EndDataCompressor, >> _DoInflate/_DoDeflate that aren't doing anything but call some other >> function. > > So here is a new round of patches. It turned out that the feature to > allow to also restore files from a different dump and with a different > compression required some changes in the compressor API. And in the > end I didn't like all the #ifdefs either and made a less #ifdef-rich > version using function pointers. Ok. The separate InitCompressorState() and AllocateCompressorState() functions seem unnecessary. As the code stands, there's little performance gain from re-using the same CompressorState, just re-initializing it, and I can't see any other justification for them either. I combined those, and the Free/Flush steps, and did a bunch of other editorializations and cleanups. Here's an updated patch, also available in my git repository at git://git.postgresql.org/git/users/heikki/postgres.git, branch "pg_dump-dir". I'm going to continue reviewing this later, tomorrow hopefully. > The downside now is that I have > created quite a few one-line functions that Heikki doesn't like all > that much, but I assume that they are okay in this case on the grounds > that the public compressor interface is calling the private > implementation of a certain compressor. You could avoid the wrapper functions by calling the function pointers directly, but I agree it seems neater the way you did it. -- Heikki Linnakangas EnterpriseDB http://www.enterprisedb.com