Size: a a a

pgsql – PostgreSQL

2021 March 29

АО

Александр Орешкин... in pgsql – PostgreSQL
json_build_object('property', json_agg(property), 'value', json_agg(value)) AS app_config
возвращает мне

"app_config":{
     "key":[
        "a",
        "c"
     ],
     "value":[
        "b",
        "d"
     ]
  }
источник

АО

Александр Орешкин... in pgsql – PostgreSQL
Вот сама функция
CREATE OR REPLACE FUNCTION get_user_ext ()
   RETURNS json
   AS $$
   SELECT
       row_to_json(t) AS rowToJsont
   FROM (
       SELECT
           users.id,
           users.useraddress,
           users.accounttype,
           users.smartcard,
           json_build_object('property', json_agg(property), 'value', json_agg(value)) AS app_config
       FROM
           users,
           app_config
       GROUP BY
           users.id) t;

$$
LANGUAGE SQL;
источник

И

Илья | 😶 ☮️... in pgsql – PostgreSQL
Александр Орешкин
Вот сама функция
CREATE OR REPLACE FUNCTION get_user_ext ()
   RETURNS json
   AS $$
   SELECT
       row_to_json(t) AS rowToJsont
   FROM (
       SELECT
           users.id,
           users.useraddress,
           users.accounttype,
           users.smartcard,
           json_build_object('property', json_agg(property), 'value', json_agg(value)) AS app_config
       FROM
           users,
           app_config
       GROUP BY
           users.id) t;

$$
LANGUAGE SQL;
Думаю нужно в цикле проходится по колонкам и добавлять их в json массив
источник

s

shoxrux in pgsql – PostgreSQL
Михаил Шурутов
А это тут зачем? Вопрос ну совсем не про like.
Именно в этой статье, хорошо описан оператор %!
источник

МШ

Михаил Шурутов... in pgsql – PostgreSQL
shoxrux
Именно в этой статье, хорошо описан оператор %!
Смотрите внимательно на вопрос. Причём там указанный вами оператор?
источник

ST

Sardorkhuja Tukhtakh... in pgsql – PostgreSQL
Всем привет! Подскажите, пожалуйста, что кроме запросов
CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
и
SELECT pg_reload_conf();

Нужно сделать, чтобы заработал uuid_generate_v4()?

Запросы выполнил, но все еще получаю ошибку:
ERROR: syntax error at or near "uuid_generate_v4"
источник

Ð

Ð in pgsql – PostgreSQL
Александр Орешкин
Всем привет. Подскажите пожалуйста. Есть 2 таблицы users и config. Как  в функции вернуть

{
"user_name":"name",
"user_address":"address",
"config": {
"key":"value",
"key":"value"
}
}
сделать два запроса и склеить на форнте
источник

ГА

Георгий Ава... in pgsql – PostgreSQL
Подскажите, как будет вести себя логическая репликация в следующих условиях
Есть кластер А (мастер\реплика) на нем публикация
есть кластер Б (мастер\реплика) на нем подписчик.
К чему приведет:
1. переключение ролей на кластере А
2. переключение ролей на кластере Б
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Sardorkhuja Tukhtakhodjaev
Всем привет! Подскажите, пожалуйста, что кроме запросов
CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
и
SELECT pg_reload_conf();

Нужно сделать, чтобы заработал uuid_generate_v4()?

Запросы выполнил, но все еще получаю ошибку:
ERROR: syntax error at or near "uuid_generate_v4"
Проверьте именно в этой базе "\dx+ uuid-ossp", что там куда поставилось.
источник

ST

Sardorkhuja Tukhtakh... in pgsql – PostgreSQL
Yaroslav Schekin
Проверьте именно в этой базе "\dx+ uuid-ossp", что там куда поставилось.
спасибо! забыл отписать, там была моя очень глупая ошибка
источник

Z

Zumrud in pgsql – PostgreSQL
Please, recommend monitoring tool (free) for monitoring postgresql dbs and steps for installing
источник

СК

Сергей Кравчук... in pgsql – PostgreSQL
Георгий Ава
Подскажите, как будет вести себя логическая репликация в следующих условиях
Есть кластер А (мастер\реплика) на нем публикация
есть кластер Б (мастер\реплика) на нем подписчик.
К чему приведет:
1. переключение ролей на кластере А
2. переключение ролей на кластере Б
насколько знаю, создание как публикаций так и подписок возможно только на мастер базе (вроде в 13-14 версии в этом плане что-то поменяли, но точно не помню)
а значит скорее всего все развалится

поэтому что-то этакое стоит проводить в моменты, когда на кластера нет записи
так же на последнем пг_конфе была представлена тулза, для создания логичесткого слота (считай что публикации) в прошлом, но не помню название, должно спасать в таких случаях
источник

СК

Сергей Кравчук... in pgsql – PostgreSQL
Zumrud
Please, recommend monitoring tool (free) for monitoring postgresql dbs and steps for installing
zabbix
google -> zabbix for postrgesql
источник

ГА

Георгий Ава... in pgsql – PostgreSQL
Сергей Кравчук
насколько знаю, создание как публикаций так и подписок возможно только на мастер базе (вроде в 13-14 версии в этом плане что-то поменяли, но точно не помню)
а значит скорее всего все развалится

поэтому что-то этакое стоит проводить в моменты, когда на кластера нет записи
так же на последнем пг_конфе была представлена тулза, для создания логичесткого слота (считай что публикации) в прошлом, но не помню название, должно спасать в таких случаях
Получается при каждом переключении нужно будет подписчиков переподключать с полным переливом данных.

Провел эксперимент, подключил подписчика к кластеру А ч\з HAProxy, т.е. IP+порт не поменялись после перемены ролей, подписчик отвалился, слот репликаци не пересоздался.
источник

СК

Сергей Кравчук... in pgsql – PostgreSQL
Георгий Ава
Получается при каждом переключении нужно будет подписчиков переподключать с полным переливом данных.

Провел эксперимент, подключил подписчика к кластеру А ч\з HAProxy, т.е. IP+порт не поменялись после перемены ролей, подписчик отвалился, слот репликаци не пересоздался.
попробуйте покопать в сторону кластерных решений на основе логической репликации,
возможно там есть +- автоматические решения для этого дела

но тут могу только предполагать
источник

ЕЮ

Егор Юдин in pgsql – PostgreSQL
Привет, Денис
источник

AL

Alexey Lesovsky in pgsql – PostgreSQL
Zumrud
Please, recommend monitoring tool (free) for monitoring postgresql dbs and steps for installing
PMM (by Percona), Pgwatch2
источник

MC

Max Chistyakov in pgsql – PostgreSQL
Всем привет! Вопрос по эксплэйн: подскажите, как сделать так, чтобы эксплэйн по фукнции выводил работу, которую делают вложенные в неё функции?  Вот набросал пример, как это должно работать:

create table test_plan_with_multifunction(id int );

create function f_test_plan_with_multifunction_1() returns int as $$
insert into mchist.test_plan_with_multifunction(id) values (1) returning id;
$$ language sql;

CREATE OR REPLACE FUNCTION f_test_plan_with_multifunction_2(integer)
RETURNS integer
LANGUAGE plpgsql
AS $function$
begin
if $1 < 10 then
insert into test_plan_with_multifunction(id) select mchist.f_test_plan_with_multifunction_2($1 + 1);
end if;
return $1 * f_test_plan_with_multifunction_1();
end $function$

Я делаю самый информативный эксплэйн:
explain (analyze, costs, buffers, verbose) select f_test_plan_with_multifunction_2(1)

Но он мне выдаёт только работу самой первой вызванной функции:
 Result  (cost=0.00..0.26 rows=1 width=4) (actual time=0.232..0.233 rows=1 loops=1)
  Output: f_test_plan_with_multifunction_2(1)
  Buffers: shared hit=9
Planning Time: 0.032 ms
Execution Time: 0.257 ms

Что хотелось бы на этом сферическом примере: увидеть вызов всех вложенных f_test_plan_with_multifunction_2, как добавляется запись в таблицу test_plan_with_multifunction_2 в результате их работы.
Также подлючил модуль auto_explain,  проверил что появились его настройки, и выставил их:
SET auto_explain.log_nested_statements = ON;
SET auto_explain.log_min_duration = 0;
SET auto_explain.log_analyze  = true;
источник

С

Сергей in pgsql – PostgreSQL
Доброго дня суток!
Дано - дамп снятый под пользователем Postgres, который надо загрузить так, чтобы владельцем базы и всего что есть внутри стал другой пользователь, назовём его test.
Подскажите как это сделать?
источник

ST

Sardorkhuja Tukhtakh... in pgsql – PostgreSQL
Подскажите, пожалуйста, возможно ли в постгресе написать итерирующий цикл по элементам списка?

Мне нужно создать таблицу со списком валют, вручную их добавлять довольно неудобно, и интересно, возможно ли сделать это силами пг.

Думал, выглядеть оно должно примерно так:
DO
$do$
BEGIN
   FOR value IN 'rub', 'usd' LOOP
   ....
end;
$do$


но ide подсказывает, что вот так не пишут: 'rub', 'usd'
источник