Re: pg_dump --with-* options

Peter Eisentraut <peter@eisentraut.org>

From: Peter Eisentraut <peter@eisentraut.org>
To: Nathan Bossart <nathandbossart@gmail.com>
Cc: pgsql-hackers <pgsql-hackers@postgresql.org>, pgsql@j-davis.com
Date: 2025-06-12T13:47:54Z
Lists: pgsql-hackers
On 06.06.25 17:39, Nathan Bossart wrote:
> On Fri, Jun 06, 2025 at 09:14:32AM +0200, Peter Eisentraut wrote:
>> We have
>>
>>    -a, --data-only      dump only the data, not the schema or statistics
>>    --no-data            do not dump data
>>    --with-data          dump the data  # this one is new
>>
>> (and there is also --section=data), and then three analogous options for
>> "schema" and "statistics".
>>
>> What is the purpose of the --with-data option?  Dumping the data is the
>> default.  Is this to override an earlier --no-data option?
> 
> I believe the idea is that these will allow folks to be explicit about what
> they want instead of needing to understand the defaults for every
> component.

I get that idea, but we really need some more documentation for this, I 
think.  So far I could only guess how this is supposed to be used, and I 
also happened to guess wrong.

My initial guess was that --with-data can override --no-data.  That 
would have been pretty standard "last option wins" behavior.  But 
pg_dump rejects that.  Personally, I think that is kind of wrong.

But you can use --with-data to override, say, --schema-only.  That also 
seems kind of wrong to me, but anyway.  Then, it seems that 
--schema-only plus --with-data is kind of the same as everything plus 
--no-statistics?

I'm also wondering, if you consider the aforementioned "last option 
wins" behavior, should there be a difference between

--schema-only --with-data, and
--with-data --schema-only

or for that matter

--schema-only --data-only

But in any case, if you want that level of precision, wouldn't it make 
more sense to use the --section option?

This is all a nice logic puzzle, but some more documentation would be nice.




Commits

Same data as JSON: GET /api/v1/messages/:b64id/commits the thread's linked commits as JSON, with link sources. API reference →
  1. Simplify options in pg_dump and pg_restore.

  2. pg_dump: reject combination of "only" and "with"

  3. Change pg_dump default for statistics export.