
Amir
08.10.2018
11:36:45
причуды заказчика я не погружался, просто спрашивают можно ли или нет

Yaroslav
08.10.2018
11:42:58
причуды заказчика я не погружался, просто спрашивают можно ли или нет
А заказчики в курсе, что всё, что гарантирует sequence — это неповторяющиеся значения, и не более того?
Т.е. после параллельной работы разных клиентов получившаяся в таблице последовательность значений (в порядке "реального" времени), вполне может быть: 1, 4, 2, 35, 28, 29, 30, ... и это нормально.

Вася
08.10.2018
11:47:48
Всем привет, подскажите, делал кто полный бэкап через wal-g? Вопрос в чем, как лучше реализовать чтобы wal-g отрабатывал только на одной ноде, а не на всех

Azat
08.10.2018
11:53:49
Ребят кто работал с ssl_mode=on. Если сертификат продлить - замена файла на сервере достаточно или надо будет сделать sign-up ? Спасибо

Google

Azat
08.10.2018
11:59:00
Походу нет, у меня такое ощущение что postmaster эти сертификаты загружает в себя

Bogdan
08.10.2018
12:02:34

Azat
08.10.2018
12:03:08
Почитал сейчас пишут что рестарт нужен
Релоад не помогает

Bogdan
08.10.2018
12:43:03

F
08.10.2018
12:48:16

Bogdan
08.10.2018
12:48:38

F
08.10.2018
12:49:24

Bogdan
08.10.2018
12:50:13

vlade11115
08.10.2018
13:02:15
Есть два поля с типом timestamp with time zone. start_time и end_time соответственно.
Как можно выбрать только те записи, у которых нет пересечения по датам?
Например запись start_time = 2018-10-09 07:45, end_time = 2018-10-09 20:00 и вторая запись start_time = 2018-10-09 08:00 и end_time = 2018-10-09 20:00
Полную запись опустил для краткости.
Нужно выбрать только одну из них. Можно любую.
Нагуглил OVERLAPS но не понимаю как его в запрос вписать.
PG 10 если это существенно.

Bogdan
08.10.2018
13:06:19

vlade11115
08.10.2018
13:06:39
Потому что это не диапазон а конкретная дата.

Bogdan
08.10.2018
13:07:02
как-же не диапазон, есть начало и конец

Google


Mike Chuguniy
08.10.2018
13:07:52
Говорят, не помогло https://t.me/pgsql/102410
user=# select name,setting,context from pg_settings where name like '%ssl%';
name | setting | context
---------------------------+----------------------------------------+---------
ssl | on | sighup
ssl_ca_file | | sighup
ssl_cert_file | /etc/ssl/certs/ssl-cert-snakeoil.pem | sighup
ssl_ciphers | HIGH:MEDIUM:+3DES:!aNULL | sighup
ssl_crl_file | | sighup
ssl_dh_params_file | | sighup
ssl_ecdh_curve | prime256v1 | sighup
ssl_key_file | /etc/ssl/private/ssl-cert-snakeoil.key | sighup
ssl_prefer_server_ciphers | on | sighup
(9 строк)
user=#
Открываем доку: https://postgrespro.ru/docs/postgresql/10/view-pg-settings
, читаем:
sighup
Внесённые в postgresql.conf изменения этих параметров можно применить, не перезапуская сервер. Если передать управляющему процессу сигнал SIGHUP, он перечитает postgresql.conf и применит изменения. Управляющий процесс также перешлёт сигнал SIGHUP всем своим дочерним процессам, чтобы они тоже приняли новое значение.
Странный релоад, смотреть, как он реализован.


vlade11115
08.10.2018
13:08:51

Bogdan
08.10.2018
13:10:32
&& overlap (have points in common) int8range(3,7) && int8range(4,12) t

vlade11115
08.10.2018
13:13:15
У меня две записи зависят друг от друга как я вижу. Если пересекаются то выбирать только одну.

Yaroslav
08.10.2018
13:17:25


vlade11115
08.10.2018
13:21:03
Хмм...
> Как можно выбрать только те записи, у которых нет пересечения по датам?
и:
> Например запись start_time = 2018-10-09 07:45, end_time = 2018-10-09 20:00
> и вторая запись start_time = 2018-10-09 08:00 и end_time = 2018-10-09 20:00
> Нужно выбрать только одну из них. Можно любую.
Так пересекающиеся или не пересекающиеся?
И еще: по всей таблице, без всяких других детализаций?
> Как можно выбрать только те записи, у которых нет пересечения по датам?
Не знаю, если нельзя то пусть так.
Так пересекающиеся или не пересекающиеся?
Записи пересекаются, нужно одну любую.
И еще: по всей таблице, без всяких других детализаций?
Там ещё и другие условия, по типу "выбрать за неделю" и "выбрать записи у которых start_time больше равно текущей дате", но это существенно? Могу показаь запрос что сейчас есть, но там нет части с пересечениями.


Yaroslav
08.10.2018
13:24:47
> Как можно выбрать только те записи, у которых нет пересечения по датам?
Не знаю, если нельзя то пусть так.
Так пересекающиеся или не пересекающиеся?
Записи пересекаются, нужно одну любую.
И еще: по всей таблице, без всяких других детализаций?
Там ещё и другие условия, по типу "выбрать за неделю" и "выбрать записи у которых start_time больше равно текущей дате", но это существенно? Могу показаь запрос что сейчас есть, но там нет части с пересечениями.
> Не знаю, если нельзя то пусть так.
Это Вы написали, а не я. ;)
> Записи пересекаются, нужно одну любую.
Вообще это можно интерпретировать разными способами... что именно Вам нужно?
К примеру: [1, 3], [2, 6], [5, 9] — сколько записей (и какие) должны быть выбраны?

vlade11115
08.10.2018
13:25:24
[1, 3] и [5, 9]
Или [2, 6], [5, 9], разницы нет.

Bogdan
08.10.2018
13:27:08
странно как-то
[2,6] пресекается и с первой и с последней

vlade11115
08.10.2018
13:27:39
Точно, ой.

Bogdan
08.10.2018
13:29:06
а обьем базы, временыне рамки на запрос?
Можно просто на ренджи сделать gin индекс и потом в лоб првоерять для каждой записи, енет ли пересечений через &&

Yaroslav
08.10.2018
13:30:47
Вот так.
А почему именно так? В чём принцип?

vlade11115
08.10.2018
13:36:08

Alexey
08.10.2018
13:39:13

vlade11115
08.10.2018
13:41:38

Google

Alexey
08.10.2018
13:43:28
Напришивается простое решение с with-ом рекурсивное. В качестве первого взять любой

Yaroslav
08.10.2018
13:49:16

vlade11115
08.10.2018
13:50:40
Спасибо за ответы, решил обходным манёвром не через выборку.

Oleg
08.10.2018
14:37:33
Привет. https://dpaste.de/hEnj
в мониторинге был триггер, на процессы которые в резалтсете
select * from pg_stat_activity where wait_event IS NOT NULL ;
вот такие процессы там - это нормальные процессы для 10 версии?

Игорь
08.10.2018
14:51:56

Oleg
08.10.2018
14:52:41
да, я это читал и я так понял что у меня всё хорошо, это норма.jpg. или эти ожидания не должны быть долгими?

Fike
08.10.2018
14:54:24

Bogdan
08.10.2018
14:55:51

Fike
08.10.2018
14:56:46
Для меня это не выглядит большой проблемой, учитывя вообще что происходят внутрях любой большой компании вы, возможно, захотите держать свой CA.

Bogdan
08.10.2018
14:57:21
я был очень приятно удивлен что в Azure постгре диет с ВАЛИДНЫМ сертификатом, и клиенты сразху подключаются, без вопросов, в GCE у сервера вобще нет DNS имени, только айпи, и самоподписный серт скачать можно с сервера
а AWS не помню, как дела с этим, но сертификат точно не "натсоящий"
за-то в ажуре все тормозит изза медленного диска
но вообще я сейчас на сатратпах работаю, так-что о корпоративной инфраструктуре только мечатать :_)


Fike
08.10.2018
15:03:18
Нет, ты установишь себе сертификат CA и больше не будешь иметь таких проблем. Я бы не назвал это экономией.

Bogdan
08.10.2018
15:06:56
с базой это действительно не так критично, так как к ней конектится только прочка пликейшенов, и девелоперы/адины, можно и прописать стертификат один раз)


Anton
08.10.2018
15:58:48
Есть ли возможность при связывании двух таблиц с отношением 1 ко М поставить ограничение на 1 запись, типо limit в JOIN?
Чтобы не M строк получилось, а 1

Google

Сергей
08.10.2018
16:00:44
Group by id

Anton
08.10.2018
16:01:24
А можно полный пример запроса?

Yaroslav
08.10.2018
16:02:32

Anton
08.10.2018
16:03:10
По id норм будет. Id - счетчик

elfiki
08.10.2018
16:03:38
можно через distinct

Anton
08.10.2018
16:04:09
Я какие то четырех этажные сочиняю конструкции. Хотелось бы умных людей послушать и изящный запрос
:)

elfiki
08.10.2018
16:04:46
можно вторую таблицу не целиком джойнить, а предварительно дистинкт по ней, а можно и результат всего джойна, но вообще подробности нужны

Anton
08.10.2018
16:05:10
Ну самое простое
Есть персона и может иметь много адресов
Надо взять последний адрес

Yaroslav
08.10.2018
16:05:53

Anton
08.10.2018
16:06:07
Max(id)
Пока с пост обработкой результата join сочиняется
Может я просто не знаю чего-то особенного и можно проще

Yaroslav
08.10.2018
16:09:00
Max(id)
FROM person
LEFT JOIN LATERAL (SELECT ... FROM person_addresses AS pa WHERE pa.person_id = person.id ORDER BY pa.id DESC LIMIT 1) AS only_one_m
ON true

Anton
08.10.2018
16:31:25
А если упустить lateral, что произойдет?

Alexey
08.10.2018
16:34:20
По всей видимости ошибка, так как запрос, который join-ится, ничего о person таблице не знает.

Anton
08.10.2018
17:36:22

elfiki
08.10.2018
17:37:26
а там нужен иннер или лефт?

Google

Yaroslav
08.10.2018
17:39:31

Terminator
08.10.2018
17:59:28
Alina Glumenko будет жить. Поприветствуем!

Anton
08.10.2018
18:04:27

Yaroslav
08.10.2018
18:04:54

Anton
08.10.2018
18:07:02
https://pastebin.com/v4j2sC2c

Yaroslav
08.10.2018
18:08:37

Anton
08.10.2018
18:18:08
таблицы без индексов по полю person_id:
"potok_student_person_id_fkey" FOREIGN KEY (person_id) REFERENCES potok_persona(id) ON DELETE SET NULL
"kladr_adr_person_id_fkey" FOREIGN KEY (person_id) REFERENCES potok_persona(id) ON DELETE SET NULL

Yaroslav
08.10.2018
18:21:05

Anton
08.10.2018
18:24:47
а как будет выглядеть запрос с distinct on?
добавил индекс - теперь все хорошо с запросом
но быстрый вариант (из медленных запросов) без индекса тоже хотелось бы найти

Yaroslav
08.10.2018
18:33:48
а как будет выглядеть запрос с distinct on?
Что-то вроде (вообще не проверял):
SELECT st.id, only_one_m.id
FROM potok_student AS st
LEFT JOIN (
SELECT DISTINCT ON (person_id) person_id, id
FROM kladr_adr
ORDER BY person_id, id DESC;
) AS only_one_m
ON st.person_id = only_one_m.person_id;