Size: a a a

pgsql – PostgreSQL

2020 June 30

m

maxp.dev in pgsql – PostgreSQL
или exclude ...
источник

N

Nikolay in pgsql – PostgreSQL
#RuPostgres:
Сегодня, как обычно, в 18:30мск. В гостях будет Алексей Лесовский. Поговорим про: observability, диагностика, pgCenter.

YouTube-трансляция будет тут: https://youtu.be/yD3Ej4GVo-U

Zoom для активного участия: https://us02web.zoom.us/j/83259552989?pwd=bWQyZS9zcmZBWXkzakF4eCtvNzZpZz09 Meeting ID: 832 5955 2989 Password: 392784

Кидайте вопросы в комментах к youtube или в гуглодок: http://bit.ly/RuPostgresTuesday

до связи!
источник

AN

Alexander Nikitin in pgsql – PostgreSQL
О, клёво!
источник

s

sexst in pgsql – PostgreSQL
maxp.dev
или exclude ...
EXCLUDE USING gist( ids WITH && ) из расширения intarray наверное вспоминается?
Оно только для интов и не в пределах массива работает, а между строками. То есть массив {200, 200} вставить даст. А вот потом в другую строку {100, 200} уже нет.
Можно функциональную проверку написать. Можно сделать триггер, который будет дублирующие значения убирать тихо при insert или update.
Но правильно будет - развернуть массив в таблицу
источник

m

maxp.dev in pgsql – PostgreSQL
sexst
EXCLUDE USING gist( ids WITH && ) из расширения intarray наверное вспоминается?
Оно только для интов и не в пределах массива работает, а между строками. То есть массив {200, 200} вставить даст. А вот потом в другую строку {100, 200} уже нет.
Можно функциональную проверку написать. Можно сделать триггер, который будет дублирующие значения убирать тихо при insert или update.
Но правильно будет - развернуть массив в таблицу
я там не уточнил, у меня на самом деле там varchar[]
источник

s

sexst in pgsql – PostgreSQL
maxp.dev
я там не уточнил, у меня на самом деле там varchar[]
Вообще там написано, я поэтому и подчеркнул "только int"
источник

m

maxp.dev in pgsql – PostgreSQL
в общем, понятно - простым способом не получается...
источник

m

maxp.dev in pgsql – PostgreSQL
и может еще такой вопрос пояснишь, насчет уровня изоляуции?
то есть вот у нас же READ COMMITED по умолчанию, и как там будет отпабатывать триггер на проверку уникальности?
источник

s

sexst in pgsql – PostgreSQL
maxp.dev
и может еще такой вопрос пояснишь, насчет уровня изоляуции?
то есть вот у нас же READ COMMITED по умолчанию, и как там будет отпабатывать триггер на проверку уникальности?
Физически как это происходит?
источник

DS

Danil Semenov in pgsql – PostgreSQL
Всем привет. Такая проблема - идем копирование в таблицу из csv (~2Gb) строк и в какой-то момент постгрес перестает различать строки и начинает все воспринимать как одну строку (как я полагаю) и падает с ошибкой переполнения буфера для копирования. Есть идеи какой символ это? эскейпятся переносы строки \n \r
источник

s

sexst in pgsql – PostgreSQL
Транзакция при записи уникального индекса видит в самом этом индексе не только значения из строк, которые были закоммичены на момент начала транзакции, но и все последующие, ещё не закоммиченные версии.

>Если мы натыкаемся на конфликт в закомиченной и актуальной на момент старта транзакции строке, то сразу ловим violation.
>Если мы натыкаемся на конфликт с уже записанной другой транзакцией, но ещё не закомиченной строкой, то останавливаемся и ждём завершения той транзакции.
--> Если её закоммитили, то наша транзакция падает с violation.
--> Если откатили, то наша транзакция нормально продолжает работу.

Грубо говоря, оно работает так.
Ну и можно deadlock ещё поймать умеючи в теории.
источник

s

sexst in pgsql – PostgreSQL
А если триггер на проверку уникальности значений внутри array из одной  отдельной строки таблицы - всё вообще просто. У нас же есть и единственная верная текущая версия строки для транзакции и значения из query. Ну мы просто берём и прогоняем проверку по этим вот  уже имеющимся конкретным значениям.
источник

DK

Den KP in pgsql – PostgreSQL
Люди добрые, тупой вопрос. Поднял контейнер с БД пустой, сделал дамп и теперь не могу заресторится. пишет что -f -d нельзя вместе использовать
источник

DK

Den KP in pgsql – PostgreSQL
pg_restore -U dba -d cert_db -f cert_db.bak
источник

DK

Den KP in pgsql – PostgreSQL
что не так?
источник

АФ

Артур Федоров... in pgsql – PostgreSQL
pg_restore -U dba -d cert_db < cert_db.bak
а если так попробовать
источник

AN

Alexander Nikitin in pgsql – PostgreSQL
а дамп как делали?
источник

AN

Alexander Nikitin in pgsql – PostgreSQL
там же при помощи pg_restore только архивные форматы восстанавливаются (Fd, Fc, Ft) а текстовый  при помощи psql
источник

m

maxp.dev in pgsql – PostgreSQL
sexst
Транзакция при записи уникального индекса видит в самом этом индексе не только значения из строк, которые были закоммичены на момент начала транзакции, но и все последующие, ещё не закоммиченные версии.

>Если мы натыкаемся на конфликт в закомиченной и актуальной на момент старта транзакции строке, то сразу ловим violation.
>Если мы натыкаемся на конфликт с уже записанной другой транзакцией, но ещё не закомиченной строкой, то останавливаемся и ждём завершения той транзакции.
--> Если её закоммитили, то наша транзакция падает с violation.
--> Если откатили, то наша транзакция нормально продолжает работу.

Грубо говоря, оно работает так.
Ну и можно deadlock ещё поймать умеючи в теории.
вот допустим у меня те же массивы варчаров, которые должны быть уникальны, на них есть гин индекс (без уникальности),
потом есть он-инсерт триггер, который ходит в этот индекс на предмет поиска дублей,
есть у него шансы не увидеть вставляемый дубль, если его в то же время закоммитила другая транзакция?
источник

DK

Den KP in pgsql – PostgreSQL
Артур Федоров
pg_restore -U dba -d cert_db < cert_db.bak
а если так попробовать
pg_restore: error: input file appears to be a text format dump. Please use psql.
источник