172 похожих чатов

Коллеги, гарантируется ли, что при UPDATE следующего рода: UPDATE table SET a

= IMMUTABLE_FUNC(a, b, c).a,
b = IMMUTABLE_FUNC(a, b, c).b,
c = IMMUTABLE_FUNC(a, b, c).c;

IMMUTABLE функция IMMUTABLE_FUNC будет вычислена единожды в рамках обновления одной строки?

6 ответов

13 просмотров

Нет.

Скорее наоборот, CSE (common subexpression elimination) тут не в почёте в цэлом.

Petr- Автор вопроса
Ilya Anfimov
Скорее наоборот, CSE (common subexpression elimina...

Известны ли вам методы, как заставить PostgreSQL вычислять некую IMMUTABLE функцию единожды, при условии, что она зависит от нескольких аргументов (кои являются столбцами очередной строки, а также постоянными в рамках одной строки) и используется далее в нескольких местах запроса? На ум приходит только CURSOR FOR UPDATE, но что-то это мне не нравится.

Petr
Известны ли вам методы, как заставить PostgreSQL в...

Можэте попробовать сунуть это вычисление в cte. 100% гарантии нет, но есть большые шансы, что если будет только один вызов -- то его результат применят несколько раз.

Petr- Автор вопроса
Ilya Anfimov
Можэте попробовать сунуть это вычисление в cte. 1...

Если я верно помню, то в CTE при UPDATE я не смогу пропихнуть значения из "текущей обновляемой строки". Или же ошибаюсь?

Petr
Если я верно помню, то в CTE при UPDATE я не смогу...

Ну, так, относительно. Если есть primary key -- то можно это через него связать. Насчёт lateral: можэт сработать, да, но не пробовал (вдруг запрещено).

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта