Re: How to I select value of GUC that has - in its name?

From: Adrian Klaver <adrian(dot)klaver(at)aklaver(dot)com>
To: depesz(at)depesz(dot)com, pgsql-general mailing list <pgsql-general(at)postgresql(dot)org>
Subject: Re: How to I select value of GUC that has - in its name?
Date: 2021-02-09 15:41:02
Message-ID: d4868bd3-5e42-8dcc-4e40-938140f76009@aklaver.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

On 2/9/21 6:40 AM, hubert depesz lubaczewski wrote:
> Hi,
> question from IRC, but I couldn't find an answer.
>
> I can set custom guc with - in name, but I can't figure out how to
> select it.
>
> Without minus, it works great:
>
> =$ psql -X -c 'show custom.guc'
> ERROR: unrecognized configuration parameter "custom.guc"
>
> =$ psql -X -c "alter user depesz set custom.guc = '123'"
> ALTER ROLE
>
> =$ psql -X -c 'show custom.guc'
> custom.guc
> ------------
> 123
> (1 row)
>
> If I'd try to set variable with - in name:
>
> $ alter user depesz set custom.bad-guc = '1a';
> ERROR: syntax error at or near "-"
> LINE 1: alter user depesz set custom.bad-guc = '1a';
> ^
> $ alter user depesz set custom."bad-guc" = '1a';
> ALTER ROLE
>
> $ select * from pg_db_role_setting where setrole = 'depesz'::regrole;
> setdatabase │ setrole │ setconfig
> ─────────────┼─────────┼─────────────────────────────────────────────────────────
> 0 │ 16384 │ {application_name=xxx,custom.guc=123,custom.bad-guc=1a}
> (1 row)
>
> OK. Looks like it's set. But I can't show it (this is after reconnect):
>
> $ show custom."bad-guc";
> ERROR: unrecognized configuration parameter "custom.bad-guc"
>
> $ show "custom"."bad-guc";
> ERROR: unrecognized configuration parameter "custom.bad-guc"
>
> $ show "custom.bad-guc";
> ERROR: unrecognized configuration parameter "custom.bad-guc"
>
> I know I can simply not use dashes in names, but if I can *set* it, how
> can I get the value back?

The only way I found so far is:

select setconfig[array_position(setconfig, 'custom.bad-guc=1a')] from
pg_db_role_setting where setrole = 'aklaver'::regrole;

setconfig
-------------------
custom.bad-guc=1a

>
> depesz
>
>

--
Adrian Klaver
adrian(dot)klaver(at)aklaver(dot)com

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message hubert depesz lubaczewski 2021-02-09 15:45:03 Re: How to I select value of GUC that has - in its name?
Previous Message Thorsten Schöning 2021-02-09 15:26:16 Re: Increased size of database dump even though LESS consumed storage