Re: Common function for percent placeholder replacement - Mailing list pgsql-hackers

From Alvaro Herrera
Subject Re: Common function for percent placeholder replacement
Date
Msg-id 20221219095114.m4nlp4fb3owmsu65@alvherre.pgsql
Whole thread Raw
In response to Re: Common function for percent placeholder replacement  (Peter Eisentraut <peter.eisentraut@enterprisedb.com>)
Responses Re: Common function for percent placeholder replacement
List pgsql-hackers
On 2022-Dec-19, Peter Eisentraut wrote:

> On 14.12.22 18:05, Justin Pryzby wrote:
> > On Wed, Dec 14, 2022 at 08:31:02AM +0100, Peter Eisentraut wrote:
> > > +    return replace_percent_placeholders(base_command, "df", (const char *[]){target_detail, filename});
> > 
> > This is a "compound literal", which I gather is required by C99.
> > 
> > But I don't think that's currently being exercised, so I wonder if it's
> > going to break some BF members.
> 
> We already use this, for example in pg_dump.

Yeah, we have this

#define ARCHIVE_OPTS(...) &(ArchiveOpts){__VA_ARGS__}

which we then use like this

    ArchiveEntry(fout,
                 dbCatId,       /* catalog ID */
                 dbDumpId,      /* dump ID */
                 ARCHIVE_OPTS(.tag = datname,
                              .owner = dba,
                              .description = "DATABASE",
                              .section = SECTION_PRE_DATA,
                              .createStmt = creaQry->data,
                              .dropStmt = delQry->data));

I think the new one is not great.  I wish we could do something more
straightforward, maybe like

  replace_percent_placeholders(base_command,
                               PERCENT_OPT("f", filename),
                               PERCENT_OPT("d", target_detail));

Is there a performance disadvantage to a variadic implementation?
Alternatively, have all these macro calls form an array.

-- 
Álvaro Herrera         PostgreSQL Developer  —  https://www.EnterpriseDB.com/
Subversion to GIT: the shortest path to happiness I've ever heard of
                                                (Alexey Klyukin)



pgsql-hackers by date:

Previous
From: Mikhail Gribkov
Date:
Subject: Re: On login trigger: take three
Next
From: li jie
Date:
Subject: Re: Support logical replication of DDLs