Size: a a a

2020 November 24

o

om in sql_ninja
Артем
Тут есть postgresql разработчики? Как работают IMMUTABLE функции? В доке написано "она не обращается к базе данных и не использует информацию, не переданную ей явно в списке аргументов". Но я спокойно засунул ее в уникальный индекс, делая в функции select из другой таблицы и чекая уникальность с ее полем
Это говорит не о том, что ты не можешь обращаться к таблицам. Это говорит о том, что ты не сможешь использовать такие функции, как clock_timestamp.
Грубо говоря, после вызова функции с этими аргументами, повторный вызов будет взят из кеша, если внутри иммутабл функции нет вызова "недетерминированных" функций. Типа рандом, или вот клок_таймстамп.
И в рамках одной транзакции вызов твоей функции с теми же аргументами будет заменён на значение из кеша.
Тут нет противоречия.
Как написано в доке - в постоянной функции можно использовать селекты. Но, видимо, с осторожностью, так как будет использован свой снапшот, и при изменении данных - значения будут неактуальными.
источник

o

om in sql_ninja
Ну, я так понимаю.
источник

А

Артем in sql_ninja
Надо проверить
источник

А

Артем in sql_ninja
Потому что уник по сумме столбцов 2 разных табличек -  это звучит модно.
источник

o

om in sql_ninja
Дивно
источник

2_

2flower _ in sql_ninja
Артем
Тут есть postgresql разработчики? Как работают IMMUTABLE функции? В доке написано "она не обращается к базе данных и не использует информацию, не переданную ей явно в списке аргументов". Но я спокойно засунул ее в уникальный индекс, делая в функции select из другой таблицы и чекая уникальность с ее полем
все просто она не IMMUTABLE, и фишек ее вы не получите, что легко увидеть на плане запроса.
Функция по параметрам подходит под STABLE, но вы опять же теряете всю прелесть sql, когда пишете на plpgsql,
она не будет инлайниться, а значит время выполнения гораздо дольше и планы не оптимальные.
источник

2_

2flower _ in sql_ninja
есть еще вот интересный кусок из доки:
Если функция помечена как IMMUTABLE, тогда как на самом деле она не является постоянной, она может быть сведена к константе во время планирования, так что при последующих выполнениях плана вместо неё будет использоваться неактуальное значение. Это опасно при использовании подготовленных операторов или языков функций, кеширующих планы (например, PL/pgSQL).
источник

NP

Nick Proskuryakov in sql_ninja
Переслано от Nick Proskuryakov
#вакансия #ozon #спб
https://spb.hh.ru/vacancy/40096264

вилка: 120-180 net
офис: пл. Ал. Невского

резюме и вопросы:
телеграм: @WizarD51
почта: niproskuryakov@ozon.ru
источник

F

Frankie4Fingers in sql_ninja
нинзи, фулл бекап на базе симпл не отдаст freeSpace из файлов логов и данных строк? или отдаст?
источник

IS

Igor Sergeichik in sql_ninja
о_О чего?
источник

F

Frankie4Fingers in sql_ninja
Igor Sergeichik
о_О чего?
источник

TS

Tim Safari in sql_ninja
Frankie4Fingers
нинзи, фулл бекап на базе симпл не отдаст freeSpace из файлов логов и данных строк? или отдаст?
не отдаст
источник

F

Frankie4Fingers in sql_ninja
после фулл бекапа sql не отдаст пространство?
источник

TS

Tim Safari in sql_ninja
нет
источник

F

Frankie4Fingers in sql_ninja
и чо тепереча шринковать штоле?
источник

TS

Tim Safari in sql_ninja
а оно и на полной модели восстановления отдает только место, занятое логами
источник

TS

Tim Safari in sql_ninja
после чекпоинта
источник

TS

Tim Safari in sql_ninja
а на симпле логов практически нет, там вроде как чекпоинт каждые пять минут, емнип
источник

IS

Igor Sergeichik in sql_ninja
если ты бекап со шринком путаешь, то нет - это разные операции
если ты имеешь ввиду освобождение места в файле логов, то в симпле в файле логов так то ничего не и хранится - до конца транзакции только

ну грубо говоря
источник

IS

Igor Sergeichik in sql_ninja
Frankie4Fingers
и чо тепереча шринковать штоле?
ты чего сделать хочешь? что получить?
источник