We
recently upgraded from postgres version 8.2.7 to 8.3.7. The below pl/pgsql test
function behaves differently in the 2 versions. The
code of the function is :- CREATE
OR REPLACE FUNCTION "public"."testloop" () RETURNS varchar
AS $body$ BEGIN
FOR idx IN 1..10 LOOP
raise notice 'idx=%', idx;
idx:=idx+1;
END LOOP;
return ''; END; $body$ LANGUAGE
'plpgsql' The
sql :- select
testloop(); in
8.2.7 returns:- NOTICE:
idx=1 NOTICE:
idx=3 NOTICE:
idx=5 NOTICE:
idx=7 NOTICE:
idx=9 But
in 8.3.7 returns:- NOTICE:
idx=1 NOTICE:
idx=2 NOTICE:
idx=3 NOTICE:
idx=4 NOTICE:
idx=5 NOTICE:
idx=6 NOTICE:
idx=7 NOTICE:
idx=8 NOTICE:
idx=9 NOTICE:
idx=10 So
in 8.3.7, the incrementing of the for-loop variable “idx” is being ignored;
that is not the case in 8.2.7. Is this a new feature of 8.3.7 or a bug? Since
a lot of our functions depend on manual altering of for-loop variables, any
prompt help/advise/suggestions would be greatly appreciated! |