Tom Lane wrote:
> Josh Berkus <josh@agliodbs.com> writes:
>
>>>True, but there were clear benefits from doing so. Disallowing "="
>>>assignment in plpgsql wouldn't buy anything, just break programs.
>
>
>>But it's already disallowed in most places.
>
>
> No it isn't. The plpgsql scanner treats := and = as *the same token*.
> They can be interchanged freely. This has nothing to do with the case
> of modifying a loop variable in particular.
I disagree. If the scanner treated them the same, then
if i := 1 then ...
would work, but it doesn't. The := is rejected in a conditional. Try the
following code if you don't believe me:
CREATE OR REPLACE FUNCTION foo () RETURNS INTEGER AS $$
DECLARE i integer;
BEGIN i := 1; if i := 1 then return 1; end if; return 0;
END;
$$ LANGUAGE plpgsql;