Обсуждение: ALTER ROLE ... SET in current database only

Поиск
Список
Период
Сортировка

ALTER ROLE ... SET in current database only

От
Wolfgang Walther
Дата:
Hi,

I'm trying to set a GUC for a role in the current database only - but 
don't know the name of the database at the time of writing code. Could 
be development, staging, ...

I would basically like to do something like this:

ALTER ROLE a IN CURRENT DATABASE SET b TO c;

Although that syntax doesn't exist (yet).

I think I could wrap it in a DO block and create the statement 
dynamically. Alternatively, I could probably INSERT INTO / UPDATE 
pg_db_role_setting manually?

Any other ideas how to achieve this easily? Does the proposed "IN 
CURRENT DATABASE" syntax sound useful to anyone else?

Best,

Wolfgang



Re: ALTER ROLE ... SET in current database only

От
Abdul Qoyyuum
Дата:
Wouldnt you need to connect to the database first before you can ALTER ROLE anything?

On Tue, Feb 16, 2021 at 1:25 AM Wolfgang Walther <walther@technowledgy.de> wrote:
Hi,

I'm trying to set a GUC for a role in the current database only - but
don't know the name of the database at the time of writing code. Could
be development, staging, ...

I would basically like to do something like this:

ALTER ROLE a IN CURRENT DATABASE SET b TO c;

Although that syntax doesn't exist (yet).

I think I could wrap it in a DO block and create the statement
dynamically. Alternatively, I could probably INSERT INTO / UPDATE
pg_db_role_setting manually?

Any other ideas how to achieve this easily? Does the proposed "IN
CURRENT DATABASE" syntax sound useful to anyone else?

Best,

Wolfgang




--
Abdul Qoyyuum Bin Haji Abdul Kadir
HP No: +673 720 8043

Re: ALTER ROLE ... SET in current database only

От
Wolfgang Walther
Дата:
Abdul Qoyyuum:
> Wouldnt you need to connect to the database first before you can ALTER 
> ROLE anything?

Of course, otherwise the notion of "current database" wouldn't make 
sense at all. But that's only before executing the code. I am not 
writing and executing this code at the same time.

In my case I'm seeding a postgres docker container with settings and 
data on first launch. The database name is passed to the container via 
environment variable. But, I'm sure there are other use-cases where code 
should be written once, but be executed in different databases.

Best,

Wolfgang