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!
"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
Сайт использует файлы cookie для корректной работы и повышения удобства. Нажимая кнопку «Принять» или продолжая пользоваться сайтом, вы соглашаетесь на их использование в соответствии с Политикой в отношении обработки cookie ООО «ППГ», в том числе на передачу данных из файлов cookie сторонним статистическим и рекламным службам. Вы можете управлять настройками cookie через параметры вашего браузера