Re: More CppAsString2() in psql's describe.c

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: Peter Eisentraut <peter(at)eisentraut(dot)org>
Cc: Michael Paquier <michael(at)paquier(dot)xyz>, Postgres hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org>
Subject: Re: More CppAsString2() in psql's describe.c
Date: 2024-12-02 07:52:50
Message-ID: 1564775.1733125970@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Peter Eisentraut <peter(at)eisentraut(dot)org> writes:
> On 28.11.24 07:34, Michael Paquier wrote:
>> - "WHERE p.prokind = 'a'\n",
>> + "WHERE p.prokind = " CppAsString2(PROKIND_AGGREGATE) "\n",

> I noticed something here. If the symbol that is the argument of
> CppAsString2() is not defined, maybe because there is a typo or because
> the required header file is not included, then there is no compiler
> diagnostic. Instead, the symbol is just used as is, which might then
> result in an SQL error or go unnoticed if there is no test coverage.

Yeah, if memory serves we've actually been bit by that at least once.
But isn't there a way to improve the macro so this'd lead to an error?

> I think this would be more robust if it were written something like
> "WHERE p.prokind = '%c'\n", PROKIND_AGGREGATE

The problem is that you frequently have several of these in a
statement, which'd lead to a lot of %c items that readers have
to mentally match up with not-very-close-by printf arguments.
We already have that with translatable column headers, for instance,
and it's a pain in the rear for readability and maintainability.
I do not buy that this is a preferable answer.

> (Moreover, the current structure assumes that the C character literal
> syntax used by the PROKIND_* and other symbols happens to be the same as
> the SQL string literal syntax required in those queries, which is just
> an accident.)

So? There isn't much about C syntax that isn't an accident.
Neither literal syntax is going to change, so I don't see why
it's problematic to rely on them being the same.

regards, tom lane

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Kirill Reshke 2024-12-02 07:57:42 Re: Amcheck verification of GiST and GIN
Previous Message Daniel Gustafsson 2024-12-02 07:45:11 Re: More CppAsString2() in psql's describe.c