Daniel CAUNE wrote:
Hi,

How does the IF statement evaluate conditions?  Does it evaluate conditions
following their declaration order from left to right?  In case of
or-conditions, does the IF statement stop evaluating conditions whenever a
first or-condition is true?

The following snippet seems to be invalid, which let me think that PL/PGSQL
evaluates all the conditions:

  IF (TG_OP = 'INSERT') OR
     (OLD.bar = ...) THEN
    statement
  END IF;

Should be rewritten as (for example):

  IF (TG_OP = 'INSERT') THEN
    statement
  ELSIF (OLD.bar = ...) THEN
    statement
  END IF;


Regards,

--
Daniel


---------------------------(end of broadcast)---------------------------
TIP 9: In versions below 8.0, the planner will ignore your desire to
       choose an index scan if your joining column's datatypes do not
       match
The following is working fine for me on 8.1.x on Windows. I am not sure what order it is evaluating the if statement in but it is working correctly.
Oisin


CREATE OR REPLACE FUNCTION zfunc_testor(bool, bool)
 RETURNS "varchar" AS
$BODY$DECLARE


v_1 boolean;
v_2 boolean;

BEGIN

v_1 :=$1;
v_2 := $2;

if (v_1 = TRUE) OR (v_2 = TRUE) then
  return 'At least 1 true';
else
   return 'neither true';
end if;

END;$BODY$
 LANGUAGE 'plpgsql' VOLATILE;
ALTER FUNCTION zfunc_testor(bool, bool) OWNER TO postgres;

---------------------------(end of broadcast)---------------------------
TIP 4: Have you searched our list archives?

              http://archives.postgresql.org

Reply via email to