Обсуждение: BUG #5576: Boolean operation should not be Complete boolean evaluation

Поиск
Список
Период
Сортировка

BUG #5576: Boolean operation should not be Complete boolean evaluation

От
"y.y.chen"
Дата:
The following bug has been logged online:

Bug reference:      5576
Logged by:          y.y.chen
Email address:      segma.yychen@msa.hinet.net
PostgreSQL version: 8.4.x
Operating system:   WINDOWS-XP
Description:        Boolean operation should not  be Complete boolean
evaluation
Details:

When I run SQL -scripts in trigger/PlpgSQL:

IF (TG_OP = 'INSERT') OR (old.size<>new.size) THEN
.......
END IF;

 It raise a exception: RECORD old never be defined,
 while TG_OP is 'INSERT'.


--------------------------------
It is happen in 8.3.11,8.4.1~8.4.4-1
But 9.0.0.beta 3 is OK!

Re: BUG #5576: Boolean operation should not be Complete boolean evaluation

От
Tom Lane
Дата:
"y.y.chen" <segma.yychen@msa.hinet.net> writes:
> When I run SQL -scripts in trigger/PlpgSQL:

> IF (TG_OP = 'INSERT') OR (old.size<>new.size) THEN
> .......
> END IF;

>  It raise a exception: RECORD old never be defined,
>  while TG_OP is 'INSERT'.

Yup, that's how it works.  SQL OR is not guaranteed to be short-circuit
in the same way it is in some programming languages.  You need to use
nested IF statements to make this work safely.

            regards, tom lane