Skip to content

Commit 8f2e196

Browse files
committed
Значение ENV_DB_VALUE устанавливается для параметра "adm.environment" только если в этой БД ещё нет такого параметра
1 parent f038690 commit 8f2e196

4 files changed

Lines changed: 68 additions & 8 deletions

File tree

12/docker-postgres/sql/db_notpostgres.sql

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -270,5 +270,20 @@ GRANT USAGE ON SCHEMA pg_catalog TO mamonsu;
270270
GRANT SELECT ON TABLE pg_proc TO mamonsu;
271271
--
272272

273-
-- устанавливаем переменную окружения для БД
274-
ALTER DATABASE :"dbconnect" SET adm.environment = :'environment_db_value';
273+
-- проверка существования переменной окружения в базе данных
274+
with _configs as (
275+
select r.rolname, unnest(s.setconfig) as config
276+
from pg_db_role_setting s
277+
left join pg_roles r on r.oid=s.setrole
278+
where s.setdatabase = (select oid from pg_database where datname=current_database())
279+
),
280+
_get as (
281+
select rolname, split_part(config, '=', 1) as variable, replace(config, split_part(config, '=', 1) || '=', '') as value
282+
from _configs
283+
)
284+
SELECT NOT EXISTS(select 1 from _get where variable = 'adm.environment') as is_environment_db
285+
\gset
286+
\if :is_environment_db
287+
-- устанавливаем переменную окружения для БД только если в БД нет ещё такой настройки
288+
ALTER DATABASE :"dbconnect" SET adm.environment = :'environment_db_value';
289+
\endif

13/docker-postgres/sql/db_notpostgres.sql

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -270,5 +270,20 @@ GRANT USAGE ON SCHEMA pg_catalog TO mamonsu;
270270
GRANT SELECT ON TABLE pg_proc TO mamonsu;
271271
--
272272

273-
-- устанавливаем переменную окружения для БД
274-
ALTER DATABASE :"dbconnect" SET adm.environment = :'environment_db_value';
273+
-- проверка существования переменной окружения в базе данных
274+
with _configs as (
275+
select r.rolname, unnest(s.setconfig) as config
276+
from pg_db_role_setting s
277+
left join pg_roles r on r.oid=s.setrole
278+
where s.setdatabase = (select oid from pg_database where datname=current_database())
279+
),
280+
_get as (
281+
select rolname, split_part(config, '=', 1) as variable, replace(config, split_part(config, '=', 1) || '=', '') as value
282+
from _configs
283+
)
284+
SELECT NOT EXISTS(select 1 from _get where variable = 'adm.environment') as is_environment_db
285+
\gset
286+
\if :is_environment_db
287+
-- устанавливаем переменную окружения для БД только если в БД нет ещё такой настройки
288+
ALTER DATABASE :"dbconnect" SET adm.environment = :'environment_db_value';
289+
\endif

14/docker-postgres/sql/db_notpostgres.sql

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -270,5 +270,20 @@ GRANT USAGE ON SCHEMA pg_catalog TO mamonsu;
270270
GRANT SELECT ON TABLE pg_proc TO mamonsu;
271271
--
272272

273-
-- устанавливаем переменную окружения для БД
274-
ALTER DATABASE :"dbconnect" SET adm.environment = :'environment_db_value';
273+
-- проверка существования переменной окружения в базе данных
274+
with _configs as (
275+
select r.rolname, unnest(s.setconfig) as config
276+
from pg_db_role_setting s
277+
left join pg_roles r on r.oid=s.setrole
278+
where s.setdatabase = (select oid from pg_database where datname=current_database())
279+
),
280+
_get as (
281+
select rolname, split_part(config, '=', 1) as variable, replace(config, split_part(config, '=', 1) || '=', '') as value
282+
from _configs
283+
)
284+
SELECT NOT EXISTS(select 1 from _get where variable = 'adm.environment') as is_environment_db
285+
\gset
286+
\if :is_environment_db
287+
-- устанавливаем переменную окружения для БД только если в БД нет ещё такой настройки
288+
ALTER DATABASE :"dbconnect" SET adm.environment = :'environment_db_value';
289+
\endif

15/docker-postgres/sql/db_notpostgres.sql

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -270,5 +270,20 @@ GRANT USAGE ON SCHEMA pg_catalog TO mamonsu;
270270
GRANT SELECT ON TABLE pg_proc TO mamonsu;
271271
--
272272

273-
-- устанавливаем переменную окружения для БД
274-
ALTER DATABASE :"dbconnect" SET adm.environment = :'environment_db_value';
273+
-- проверка существования переменной окружения в базе данных
274+
with _configs as (
275+
select r.rolname, unnest(s.setconfig) as config
276+
from pg_db_role_setting s
277+
left join pg_roles r on r.oid=s.setrole
278+
where s.setdatabase = (select oid from pg_database where datname=current_database())
279+
),
280+
_get as (
281+
select rolname, split_part(config, '=', 1) as variable, replace(config, split_part(config, '=', 1) || '=', '') as value
282+
from _configs
283+
)
284+
SELECT NOT EXISTS(select 1 from _get where variable = 'adm.environment') as is_environment_db
285+
\gset
286+
\if :is_environment_db
287+
-- устанавливаем переменную окружения для БД только если в БД нет ещё такой настройки
288+
ALTER DATABASE :"dbconnect" SET adm.environment = :'environment_db_value';
289+
\endif

0 commit comments

Comments
 (0)