Re: ArchiveEntry optional arguments refactoring

Andres Freund <andres@anarazel.de>

From: Andres Freund <andres@anarazel.de>
To: Alvaro Herrera <alvherre@2ndquadrant.com>
Cc: Dmitry Dolgov <9erthalion6@gmail.com>, Tom Lane <tgl@sss.pgh.pa.us>, Amit Khandekar <amitdkhan.pg@gmail.com>, PostgreSQL-development <pgsql-hackers@postgresql.org>
Date: 2019-01-23T17:23:28Z
Lists: pgsql-hackers
On 2019-01-23 13:58:07 -0300, Alvaro Herrera wrote:
> Hello
> 
> On 2019-Jan-23, Andres Freund wrote:
> 
> > > All the arguments, except Archive, CatalogId and DumpId I've moved
> > > into the ArchiveOpts structure. Not all of them could be empty before, but
> > > anyway it seems better for consistency and readability. Some of the arguments
> > > had empty string as a default value, I haven't changed anything here yet
> > > (although this mixture of NULL and "" in ArchiveEntry looks a bit confusing).
> > 
> > Probably worth changing at the same time, if we decide to go for it.
> > 
> > To me this does look like it'd be more maintainable going forward.
> 
> It does.  How does pgindent behave with it?

It craps out:
Error@3649: Unbalanced parens
Warning@3657: Extra )

But that can be worked around with something like

        te = ArchiveEntry(fout, tdinfo->dobj.catId, tdinfo->dobj.dumpId,
                          ARCHIVE_ARGS(.tag = tbinfo->dobj.name,
                                       .namespace = tbinfo->dobj.namespace->dobj.name,
                                       .owner = tbinfo->rolname,
                                       .desc = "TABLE DATA",
                                       .section = SECTION_DATA,
                                       .copyStmt = copyStmt,
                                       .deps = &(tbinfo->dobj.dumpId),
                                       .nDeps = 1,
                                       .dumpFn = dumpFn,
                                       .dumpArg = tdinfo,
                                       ));
which looks mildly simpler too.

Greetings,

Andres Freund


Commits

  1. Add ArchiveOpts to pass options to ArchiveEntry

  2. Remove WITH OIDS support, change oid catalog column visibility.