From: | Alvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org> |
---|---|
To: | Peter Eisentraut <peter(dot)eisentraut(at)enterprisedb(dot)com> |
Cc: | Justin Pryzby <pryzby(at)telsasoft(dot)com>, pgsql-hackers(at)postgresql(dot)org |
Subject: | Re: Common function for percent placeholder replacement |
Date: | 2022-12-19 09:51:14 |
Message-ID: | 20221219095114.m4nlp4fb3owmsu65@alvherre.pgsql |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | 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)
From | Date | Subject | |
---|---|---|---|
Next Message | li jie | 2022-12-19 10:02:17 | Re: Support logical replication of DDLs |
Previous Message | Mikhail Gribkov | 2022-12-19 09:40:39 | Re: On login trigger: take three |