Re: plpgsql - or operator?

Поиск
Список
Период
Сортировка
От Richard Huxton
Тема Re: plpgsql - or operator?
Дата
Msg-id 48747508.2040601@archonet.com
обсуждение исходный текст
Ответ на plpgsql - or operator?  ("MadHatter" <madhtr@schif.org>)
Список pgsql-general
MadHatter wrote:
> If I have an expression (a or b)a where a=TRUE and b=FALSE, why is b
> evaluated?  Any true operand before an or operator means the entire
> expression is true .

There is no "before" - PG makes no guarantee about evaluation order.
Don't forget a,b might well be subqueries and you don't want to prevent
PG from applying optimisations.

> ---------------------------- EXAMPLE
>
> create or replace function pinsusers() returns trigger as
>
> $$
>
> declare msg varchar;
>
> begin
>
>             --THROWS EXCEPTION when ((TG_OP = 'INSERT') is TRUE "record old
> is not assigned yet"
>
>             msg = ((TG_OP = 'INSERT') or (new.password<>old.password));

You're looking at nested IF .. THEN's I'm afraid. Or using pl/perl or
similar.

--
   Richard Huxton
   Archonet Ltd

В списке pgsql-general по дате отправления:

Предыдущее
От: Csaba Nagy
Дата:
Сообщение: Re: Feature: FOR UPDATE SKIP LOCKED
Следующее
От: Craig Ringer
Дата:
Сообщение: Re: Feature: FOR UPDATE SKIP LOCKED