
Yaroslav
22.10.2018
21:27:41

Oleg ?
22.10.2018
21:28:29
ну вот ордер бай деск по айди
из тех анкет, что принадлежат юзеру
вполне устраивает

Google

Yaroslav
22.10.2018
21:30:43
вполне устраивает
Если устраивает, почему Вы его не пишите, а пишете сортировку по user_id анкеты?!

Oleg ?
22.10.2018
21:31:16
в рамках таблицы user_forms одному пользователю привязано несколько записей, мне нужна только последняя из них

Yaroslav
22.10.2018
21:31:20
Может быть, Вам было нужно что-то вроде:
SELECT da.user_id, da."text", da.id, da.created_at, last_form.name
FROM discussions_answers AS da
LEFT JOIN LATERAL (
SELECT uf.name
FROM user_forms AS uf
WHERE uf.user_id = da.user_id
ORDER BY uf.id DESC
LIMIT 1
) AS last_form
ON true
WHERE da.status = 1
ORDER BY da.id;

Oleg ?
22.10.2018
21:32:08
сейчас прогоню, секунду

Yaroslav
22.10.2018
21:32:28

Oleg ?
22.10.2018
21:34:09
работает, спасибо
я не могу понять, где у меня ошибка?
в алиасе?
он не должен совпадать с тем, что as внутри ?

Yaroslav
22.10.2018
21:39:20
я не могу понять, где у меня ошибка?
У Вас их вообще-то, как минимум, две (или три). ;)
> он не должен совпадать с тем, что as внутри ?
Может и совпадать. Очень помогает запутаться, если Вам это нужно. :(
В приниципе, "снаружи" подзапроса не видно то, что внутри него.
И, обычно, внутри не видно то, что снаружи, но LATERAL меняет это поведение на обратное (т.е. все alias-ы до этого FROM item (подзапроса) становятся видны в нём).

Oleg ?
22.10.2018
21:41:46
Но это нужно, чтобы отдать туда WHERE да?
Я так понял

Yaroslav
22.10.2018
21:43:27

Google

Oleg ?
22.10.2018
21:44:15
Простите, я не специально, я по глупости ) Латерал нужен, чтобы прокидывать внутрь алиасы, чтобы указывать при дополнительном запросе связь*
SELECT da.user_id, da."text", da.id, da.created_at, last_form.name
FROM discussions_answers AS da
LEFT JOIN LATERAL (
SELECT uf.name
FROM user_forms AS uf
WHERE uf.user_id = da.user_id
ORDER BY uf.id DESC
LIMIT 1
) AS last_form
ON true
WHERE da.status = 1 AND
da.discussions_id = 38
ORDER BY da.id;
я добавил ещё одно условие
этот код работает
но он правильный? так и надо указывать?
WHERE da.status = 1 AND
da.discussions_id = 38

Yaroslav
22.10.2018
21:47:06
но он правильный? так и надо указывать?
Вообще, Вам виднее... но что Вас смущает?
(Так Вы для всех записей discussions_answers, для которых da.status = 1 AND da.discussions_id = 38, выбираете последнюю (по user_forms.id) запись user_forms.)

Oleg ?
22.10.2018
21:49:16
Ну вот да, пишет, что он не понимает "da" и Латерал нужен для того, чтобы видел
discussions_answers AS da и тем самым читаемость кода была
спасибо

Yaroslav
22.10.2018
21:50:40

Oleg ?
22.10.2018
21:51:00

Yaroslav
22.10.2018
21:53:42
а, хорошо, понял, спасибо
И по поводу alias-а: технически, подзапрос можно было назвать user_forms, без проблем.
Но вот Вы так и поступили... и тут же запутались. ;)
Так что это плохой стиль, я считаю.

Oleg ?
22.10.2018
21:54:27
Да, я теперь понимаю.
Сейчас вывод рубрик буду делать, надеюсь не придётся возвращаться.

Dmitry
22.10.2018
23:26:26
А какие best practices есть для написания pg расширения над сишной функцией принимающей int с битовыми флажками?
Констант в sql вроде нет, писать функцию парсящую строку с названием флага в int?

Alex
23.10.2018
08:41:20
добрый день, у меня вопрос про логическую репликацию
я что-то в доках найти не могу, как можно мастером переехать на один из слейвов? возможно ли это вообще?

Onegai
23.10.2018
08:52:29
подскажите, а постгре поддерживает многопоточность?

Google

Onegai
23.10.2018
08:52:39
Если неправильно выразился, сильно не пинайте ?
версия 10.3

Andrey
23.10.2018
08:54:37

Yaroslav
23.10.2018
08:58:42

Onegai
23.10.2018
08:59:05

Mike Chuguniy
23.10.2018
08:59:43

Yaroslav
23.10.2018
08:59:47
Печаль ? Спасибо!
А Вам зачем / почему это вообще может быть важно?
Это сугубо внутреннее дело сервера, нет?

Onegai
23.10.2018
09:00:25

Mike Chuguniy
23.10.2018
09:00:51

Yaroslav
23.10.2018
09:00:51

Onegai
23.10.2018
09:01:58

Mike Chuguniy
23.10.2018
09:02:38

Yaroslav
23.10.2018
09:03:03

Onegai
23.10.2018
09:03:36

Andrey
23.10.2018
09:04:22

Yaroslav
23.10.2018
09:05:28

Onegai
23.10.2018
09:10:53

Yaroslav
23.10.2018
09:12:36

Onegai
23.10.2018
09:13:15

Sergey
23.10.2018
09:38:09

Google

Alex
23.10.2018
09:39:04
Там нет переезда мастера на слейв и обратно
Там просто про обновление без даунтайма

Yaroslav
23.10.2018
09:50:29

Alex
23.10.2018
09:51:40
А есть какие-либо рабочие кейсы у кого-нибудь с переездом логической репликации?

Terminator
23.10.2018
09:52:33
@teriyakigod2 будет жить. Поприветствуем!

Dzmitry
23.10.2018
09:54:11
Господа, прошу источников, где была бы скомпилирована инфа по постгресу, со всеми quirks, так сказать
+ возможно какая то информация по особенностям внутренней реализации (отличие от mysql, MSSql Oracle и т.п.)
Спасибо

Dmitry
23.10.2018
10:07:24

Alex
23.10.2018
10:07:33

Yaroslav
23.10.2018
10:08:11

Andrey
23.10.2018
10:08:36

Yaroslav
23.10.2018
10:10:07

Alex
23.10.2018
10:11:59

Dzmitry
23.10.2018
10:12:38

Yaroslav
23.10.2018
10:14:18

Dmitry
23.10.2018
10:15:07

Alex
23.10.2018
10:16:11
Я не понял, зачем Вам что-то ломать и выделять...
Чем Вам не подходит обычная physical streaming replication?
ну настолько я вычитал из доки, стриминг захватывает вообще весь инстанс постгреса, а в этом инстансе есть таблички, банально с сессиями хотя бы, их реплицировать не надо, так как по требованием есть ситуация, когда мы можем подключиться к реплике и сказать ей, что отныне ты становишься мастером, и это из приложения происходит, физического доступа к консоли нет

Andrey
23.10.2018
10:16:35

Dmitry
23.10.2018
10:17:20
О, вот это похоже то что надо, спасибо


Yaroslav
23.10.2018
10:21:50
ну настолько я вычитал из доки, стриминг захватывает вообще весь инстанс постгреса, а в этом инстансе есть таблички, банально с сессиями хотя бы, их реплицировать не надо, так как по требованием есть ситуация, когда мы можем подключиться к реплике и сказать ей, что отныне ты становишься мастером, и это из приложения происходит, физического доступа к консоли нет
> ну настолько я вычитал из доки, стриминг захватывает вообще весь инстанс постгреса
Да, без вариантов (не считая unlogged tables).
> , а в этом инстансе есть таблички, банально с сессиями хотя бы, их реплицировать не надо,
Почему не надо? Это очень странно, я бы уже задумался, что здесь что-то не так.
Причина задуматься следующая: переключение на реплику почти ничем не отличается от ситуации, когда у Вас master внезапно упал и тут же поднялся (recovery). Если Ваше приложение этого не переносит... это что-то нехорошее, нет?
> так как по требованием есть ситуация, когда мы можем подключиться к реплике и сказать ей, что отныне ты становишься мастером, и это из приложения происходит, физического доступа к консоли нет
По каким требованиям? Почему бы не обеспечить переключение одним из обычных способов?


Alex
23.10.2018
10:26:36
> ну настолько я вычитал из доки, стриминг захватывает вообще весь инстанс постгреса
Да, без вариантов (не считая unlogged tables).
> , а в этом инстансе есть таблички, банально с сессиями хотя бы, их реплицировать не надо,
Почему не надо? Это очень странно, я бы уже задумался, что здесь что-то не так.
Причина задуматься следующая: переключение на реплику почти ничем не отличается от ситуации, когда у Вас master внезапно упал и тут же поднялся (recovery). Если Ваше приложение этого не переносит... это что-то нехорошее, нет?
> так как по требованием есть ситуация, когда мы можем подключиться к реплике и сказать ей, что отныне ты становишься мастером, и это из приложения происходит, физического доступа к консоли нет
По каким требованиям? Почему бы не обеспечить переключение одним из обычных способов?
дело в том, что это инстанс конфигурации ядра системы, конфигурация меняется довольно нечасто, ну может раз в неделю кто-то что-то делает, система в принципе может жить и без этого центра конфигурации самостоятельно
просто этот центр конфигурации потом накатывает конфигурацию на систему и система в зависимости от применненных настроек живет, 100% аптайм центра конфигурации необязателен
я поэтому сразу и сказал, что это просто горячий бекап, допустим центр конфигурации был вне самой системы несколько дней и сдох, тогда система просто пойдет на следующий резервный центр и так по кругу, соответственно все реплики просто должны автоматом переключаться на новый мастер
так же есть кейс, когда админ сам подключается к какому-нибудь резервному и говорит от его имени всей системе, что я теперь мастер, все подключайтесь ко мне (ну допустим текущий мастер идет на обслуживание)
как это организовать на потоковой репликации кроме как выноса конкретных таблиц с конфигурацией в отдельный инстанс я не знаю, но это не хотелось бы делать, ибо еще один инстанс, еще одно звено в цепочке

Google

Aleksander
23.10.2018
10:30:37
Как можно на postgreS 10 установить дополнительные библиотеки shared_preload_libraries на CentOs7 ???

Yuri
23.10.2018
10:31:18

Andrey
23.10.2018
10:33:53


Yaroslav
23.10.2018
10:34:11
> допустим центр конфигурации был вне самой системы несколько дней и сдох, тогда система просто пойдет на следующий резервный центр и так по кругу, соответственно все реплики просто должны автоматом переключаться на новый мастер
А у Вас это всё уже работает? Особенно, automatic failover?
С логической репликацией Вам это тоже всё придётся сделать, причём, скорее всего, самим.
И с другими её проблемами как-то справиться (DDL и т.п.), если они вас касаются.
> но это не хотелось бы делать, ибо еще один инстанс, еще одно звено в цепочке
Но, тем не менее, с streaming replication другого способа в самом деле нет...

Alex
23.10.2018
10:35:35
> А у Вас это всё уже работает? Особенно, automatic failover?
уху, система в принципе готова к внезапному переезду ЦУ, вопрос только как отреплицировать данные корректно
и еще бОльший вопрос, как переключать мастер

Yaroslav
23.10.2018
10:36:09

Yuri
23.10.2018
10:36:46
Ща гляну, спасибо

Yaroslav
23.10.2018
10:37:23

Alex
23.10.2018
10:37:58

Yaroslav
23.10.2018
10:38:53

Alex
23.10.2018
10:39:54

Yaroslav
23.10.2018
10:41:31

Alex
23.10.2018
10:42:05

Yaroslav
23.10.2018
10:44:18

Alex
23.10.2018
10:45:35

Yaroslav
23.10.2018
10:49:03
> архитектура становится сложная, в этом инстансе куча БД
Которые все "умрут" одновременно, если что, разве нет?
Что-то Вы там переусложнённое делаете, судя по описанию. ;)

Alex
23.10.2018
10:49:31
> архитектура становится сложная, в этом инстансе куча БД
Которые все "умрут" одновременно, если что, разве нет?
Что-то Вы там переусложнённое делаете, судя по описанию. ;)
да нет, все просто, есть БД, ее надо отреплицировать в кучу слевов, причем один из слейвов может стать (и станет когда-нибудь) новым мастером, при этом на аптайм пофигу, и реплицировать надо не все таблицы =)

Sergey
23.10.2018
11:04:49