@pgsql

Страница 995 из 1062
Terminator
21.09.2018
07:36:15
Knight будет жить. Поприветствуем!

Dmitry
21.09.2018
07:37:08
Эта функция возвращает 2 курсора и 1 целое. Далее, после вызова функции, этими курсорами можно пользоваться в блоке транзакций, например, вот так: begin; select * from get_notifications(...); fetch all from p_cursor_all; fetch all from p_cursor; ... end;

Т.е. если возвращать сами курсоры - это одна сигнатура функции, если возвращать записи, полученные с помощью этих курсоров - другая сигнатура функции.

Вот тут подробно всё написано - https://www.postgresql.org/docs/10/static/plpgsql-cursors.html#PLPGSQL-CURSOR-USING

Google
elfiki
21.09.2018
07:54:55
а есть какой-то сопсоб оценить сколько всего будет удалено из разных мест по внешнему ключу, при удалении записи?

elfiki
21.09.2018
08:05:23
Yaroslav
21.09.2018
08:06:35
оценить сколько всего пропадет
Ну выполните — узнаете точно... (А потом сделайте ROLLBACK, естественно.) ;)

Mike Chuguniy
21.09.2018
08:07:37
а есть какой-то сопсоб оценить сколько всего будет удалено из разных мест по внешнему ключу, при удалении записи?
оценить - навряд ли. А писать корректный запрос. Если делать нечего, и надо поизучать систему, то вперёд и с песней.

elfiki
21.09.2018
08:08:53
да просто надо удалить запись из таблицы пользователей интересно сколько всего при этом пропадет. 52 таблицы ссылаются на пользователей

Vladimir
21.09.2018
08:14:11
Denis
21.09.2018
08:14:13
я проверил. :) вот ключевой момент: # update goods set discount = discount + 100 where discount = 15; UPDATE 0

Mikhail
21.09.2018
08:16:01
А где написано, что RULES — deprecated?
Ну это всё тянется уже почти 20 лет. Рулы не выпиливают из-за обратной совместимости при этом их уже частично и не поддерживают (кейз с with). Обратная совместимость в том числе на стандартный view ну и пр

Mikhail
21.09.2018
08:17:44
А где написано, что RULES — deprecated?
Вот например 2010 год: https://www.depesz.com/2010/06/15/to-rule-or-not-to-rule-that-is-the-question/ Там внутри ещё к более давним временам отсылка

Google
Yaroslav
21.09.2018
08:19:11
Вот например 2010 год: https://www.depesz.com/2010/06/15/to-rule-or-not-to-rule-that-is-the-question/ Там внутри ещё к более давним временам отсылка
Да это всё, как тут говорили, чьи-то там бложики. ;) В документации-то этого нет, к сожалению. :(

Mikhail
21.09.2018
08:24:37
В документации по совокупности все это есть фактически

Запретить нельзя использовать

Как говорится

Mike Chuguniy
21.09.2018
08:26:59
В документации по совокупности все это есть фактически
Для этого документацию надо не просто читать в поисках готовых рецептов по написанию кнопки "Сделать жизнь радостной и счастливой", но и осмысливать всячески. А это дано далеко не только лишь всем. :(

Yaroslav
21.09.2018
08:28:43
В документации по совокупности все это есть фактически
Да предупреждения-то там есть, но прямого совета "никогда не используйте нетривиальные RULES", там, к сожалению, нет. Более того, там есть пример (кривоватый), про который документация врёт, что он "абсолютно корректен". ;)

Как говорится
Кстати, пока Вы здесь... нечто совершенно другое. :) Вы, говорят, делали доклад про изоляцию транзакций vs replication... А Вы не в курсе, какие(-нибудь) из систем триггерной репликации (Slony, Londiste, ...) обеспечивают full-ACID?

Mikhail
21.09.2018
08:34:37
Мне такие не известны. То что я посмотрел — не нашёл

В том плане, что нет механизма сериализации там кроме как на очереди

Нет приедикатных локов

Yaroslav
21.09.2018
08:38:11
Мне такие не известны. То что я посмотрел — не нашёл
Хмм... а я вот смотрел slony, и всё, что пока попробовал — работает, как и должно... Но там какие-то "пляски" с xid/xip-ами (snapshot-ами), и сходу непонятно ничерта. ;) И в документации (кроме PDF-ов) как-то чётко ничего не сказано. :( > Нет приедикатных локов Они для этого совсем не нужны.

Mikhail
21.09.2018
08:49:39
Могут быть не нужны. Но явного указания других способов «синхронизации» я тоже не нашёл . И мне трудно представить такие практические применения без добавления существенных лагов в репликацию

Yaroslav
21.09.2018
09:11:31
Могут быть не нужны. Но явного указания других способов «синхронизации» я тоже не нашёл . И мне трудно представить такие практические применения без добавления существенных лагов в репликацию
Ну лаги там и получаются, а как же. Но существенность, по идее, зависит от длительности транзакций на master-е, и будет примерно такой, как у deferrable транзакций.

Ilia
21.09.2018
09:34:35
А написано же READ COMMITTED... Да и проверить легко.
Это ПИШУЩАЯ ТРАНЗАКЦИЯ, она НЕ ЧИТАЕТ НИЧЕГО, кроме того, что меняет.

Yaroslav
21.09.2018
09:36:48
Это ПИШУЩАЯ ТРАНЗАКЦИЯ, она НЕ ЧИТАЕТ НИЧЕГО, кроме того, что меняет.
Эээ... ну и что? Написано же — READ COMMITTED (и результат не такой, как Вы написали).

Ilia
21.09.2018
09:37:14
Если не такой, то это очень печально.

Yaroslav
21.09.2018
09:38:01
Ilia
21.09.2018
09:38:30
Почему? Это нормально.
Да нет, это wormwhole

Да нет, это wormwhole
Транзакции несериализуемые.

Google
Ilia
21.09.2018
09:39:19
Хотя ... надо ещё раз перепроверить, я забыл уже немного.

Yaroslav
21.09.2018
09:39:28
Транзакции несериализуемые.
Ну естественно, это же всего лишь RC.

Ilia
21.09.2018
09:39:47
Ну естественно, это же всего лишь RC.
Голые UPDATE ОБЯЗАНЫ быть сериализуемыми.

Это же не SELECT .... UPDATE...

Yaroslav
21.09.2018
09:40:33
Голые UPDATE ОБЯЗАНЫ быть сериализуемыми.
Ничего подобного! Откуда Вы это взяли?

Ilia
21.09.2018
09:40:55
Не ну ваще прикольно, если так... Классная СУБД PG, и тут -- такой ляп...

Ничего подобного! Откуда Вы это взяли?
Так это как... Откуда ты знаешь, что солнце на востоке встаёт? Вот оттуда же...

Yaroslav
21.09.2018
09:41:44
Ilia
21.09.2018
09:42:20
Это не ляп! Это нормальное поведение.
Ну, ок, ок. Лишь бы не попадать в реальной жизни никогда на такое...

Это не ляп! Это нормальное поведение.
Ну и, надеюсь, хотя бы SERIALIZABLE это лечит...

Yaroslav
21.09.2018
09:42:57
Так это как... Откуда ты знаешь, что солнце на востоке встаёт? Вот оттуда же...
Если Вы имеете в виду, что это очевидно... ACID-гарантии на самом деле имеют мало общего с интуитивным пониманием.

Terminator
21.09.2018
09:44:20
@leshik13 будет жить. Поприветствуем!

Alexey
21.09.2018
09:44:55
привет, ребят

случилось вот такое

ERROR: could not receive data from WAL stream: ERROR: could not map filenode "base/16384/77077" to relation OID

как это лечить или траблшутить?

настроена логическая репликация, постгрес 10.3 - 10.5

ошибка на пяти репликах сразу

Yaroslav
21.09.2018
09:47:38
ошибка на пяти репликах сразу
А Вы release notes не смотрели (после 10.3)? Мне казалось, что там что-то исправляли похожее (могу врать, конечно).

Google
Alexey
21.09.2018
09:48:28
смотрел, но трудно понять - там много всего что может этого касаться

Ilia
21.09.2018
09:53:11
Это не ляп! Это нормальное поведение.
Нет, я неправ, транзакции там в примере сериализуются. Так что всё ок

Yaroslav
21.09.2018
09:53:36
смотрел, но трудно понять - там много всего что может этого касаться
Так если что-то похожее есть, может, пора сделать upgrade (но решить существующую проблему это Вам вряд ли поможет — WAL-то уже сгенерирован)?

Alexey
21.09.2018
09:54:09
ну вот и хотелось бы сначала решить, а потом уже апгрейдить

Yaroslav
21.09.2018
09:54:10
ERROR: could not receive data from WAL stream: ERROR: could not map filenode "base/16384/77077" to relation OID
А Вы пробовали искать, что это ("base/16384/77077" ) такое?

Alexey
21.09.2018
09:54:23
это таблица которая реплицируется

я пробовал снять с неё ключи, транкейтнуть и заново зареплицировать, но не помогает

Yaroslav
21.09.2018
09:54:56
ну вот и хотелось бы сначала решить, а потом уже апгрейдить
Почему не наоборот? Кстати, что там в release notes подходит под Вашу ситуацию?

Alexey
21.09.2018
09:55:29
ну как-то продакшн вот так с наскока апгрейдить не очень хочется :)

Alexey
21.09.2018
09:55:41
нет, на получателе

WAL-ы-то там

Yaroslav
21.09.2018
09:56:24
ну как-то продакшн вот так с наскока апгрейдить не очень хочется :)
Вы и так уже опаздываете с upgrade-ами (в т.ч. уже были security fixes, как мне помнится). ;)

WAL-ы-то там
Так, похоже, в самих WAL-ах что-то не так (т.е. проблема в источнике).

Alexey
21.09.2018
09:57:08
да понятно, immediate проблему как снять можно?

одну таблицу допустим я могу восстановить везде

но всё остальное что изза этого застряло?

Yaroslav
21.09.2018
09:59:06
но всё остальное что изза этого застряло?
А кто его знает... скорее всего, репликацию придётся сносить и пересоздавать. И я не зря спрашивал: "Кстати, что там в release notes подходит под Вашу ситуацию?" Потому что от этого Вы могли бы оттолкнуться (от описания проблем).

но всё остальное что изза этого застряло?
Можете ещё полистать: https://www.postgresql.org/message-id/CAMa1XUjkTsrtmJxdwJBw9UBdxqYYz2pTxbwyaK0HwjQ9iLjefA@mail.gmail.com и: https://www.postgresql.org/message-id/20180914021046.oi7dm4ra3ot2g2kt%40alap3.anarazel.de На первый взгляд, похоже...

Alexey
21.09.2018
10:05:20
да похоже, решения только нет..

Google
Dmitry
21.09.2018
11:04:09
всем добра! ребята, может у кого есть под рукой компактная книжка для новичков (не инженеров) по SQL с примерами на PostgreSQL. Я дал ссылку на демку Авиаперевозок, но не знаю зайдет такое или будет слишком сложно

Mike Chuguniy
21.09.2018
11:22:14
SQL же изучать стоит начинать с Грубера "Понимание SQL" а уже потом лезть в диалекты конкретной БД.

alex
21.09.2018
12:28:15
народ, вопрос по патрни.

как увеличить max_connections

в файле base-conf поменял, значение , сделал форсе релаод, но так и осталось 100 коннектов

Ilia
21.09.2018
13:02:25
Кондр
21.09.2018
13:16:58
alex
21.09.2018
13:20:25
Здесь нужен рестарт
я поменял в посгр кофн и сделал рестарт.

а пчему релоад не помогает ?

Sergey
21.09.2018
13:21:51
а пчему релоад не помогает ?
Этот параметр затрагивает размеры структур памяти которые аллоцируются при старте. И дальше на живой базе их раздвинуть не получается.

Ilia
21.09.2018
13:26:01
а чем он плох?
А чем он хорошь? Поищи, я писал, чем он плох...

Страница 995 из 1062