Thread: initdb: Refactor PG_CMD_PUTS loops
Keeping the SQL commands that initdb runs in string arrays before feeding them to PG_CMD_PUTS() seems unnecessarily verbose and inflexible. In some cases, the array only has one member. In other cases, one might want to use PG_CMD_PRINTF() instead, to parametrize a command, but that would require breaking up the loop or using workarounds like replace_token(). This patch unwinds all that; it's much simpler that way.
Attachment
On Thu, Dec 1, 2022 at 5:02 PM Peter Eisentraut <peter.eisentraut@enterprisedb.com> wrote:
>
> Keeping the SQL commands that initdb runs in string arrays before
> feeding them to PG_CMD_PUTS() seems unnecessarily verbose and
> inflexible. In some cases, the array only has one member. In other
> cases, one might want to use PG_CMD_PRINTF() instead, to parametrize a
> command, but that would require breaking up the loop or using
> workarounds like replace_token(). This patch unwinds all that; it's
> much simpler that way.
+1, I can't think of a reason to keep the current coding
--
John Naylor
EDB: http://www.enterprisedb.com
On 2022-12-01 Th 05:02, Peter Eisentraut wrote: > Keeping the SQL commands that initdb runs in string arrays before > feeding them to PG_CMD_PUTS() seems unnecessarily verbose and > inflexible. In some cases, the array only has one member. In other > cases, one might want to use PG_CMD_PRINTF() instead, to parametrize a > command, but that would require breaking up the loop or using > workarounds like replace_token(). This patch unwinds all that; it's > much simpler that way. Looks reasonable. (Most of this dates back to 2003/2004, the very early days of initdb.c.) cheers andrew -- Andrew Dunstan EDB: https://www.enterprisedb.com
On 02.12.22 15:07, Andrew Dunstan wrote: > On 2022-12-01 Th 05:02, Peter Eisentraut wrote: >> Keeping the SQL commands that initdb runs in string arrays before >> feeding them to PG_CMD_PUTS() seems unnecessarily verbose and >> inflexible. In some cases, the array only has one member. In other >> cases, one might want to use PG_CMD_PRINTF() instead, to parametrize a >> command, but that would require breaking up the loop or using >> workarounds like replace_token(). This patch unwinds all that; it's >> much simpler that way. > > Looks reasonable. (Most of this dates back to 2003/2004, the very early > days of initdb.c.) committed