Subject: plpgsql, declare blocks, and '=' versus ':='

From: James Robinson <[email-masked]>
Date: Fri, 11 Jul 2008 12:25:35 -0400

It seems that [ in 8.2.9 at least ], in a plpgsql declare block,  
assignment to declared variable can use either the proper ':='  
operator or the unexpected and undocumented '=' operator. See  
following script. The magic handling of '=' ought to get documented at  
least.

[ plpgsql-declarations.html makes no mention of '=' token handling in  
either 8.3 or 8.2. docs ]

---
create or replace function test_1() returns int as
$$
declare
	value int = 12; -- wow -- no colon!
begin
	return value;
end;
$$ language plpgsql;

create or replace function test_2() returns int as
$$
declare
	value int := 14; -- correct
begin
	return value;
end;
$$ language plpgsql;

select test_1();
-- returns 12

select test_2();
-- returns 14

-----

----
James Robinson
Socialserve.com

---

From: Alvaro Herrera <[email-masked]>
Date: Fri, 11 Jul 2008 13:08:03 -0400

James Robinson wrote:
> assignment to declared variable can use either the proper ':=' operator 
> or the unexpected and undocumented '=' operator. See following script. 
> The magic handling of '=' ought to get documented at least.
>

Yes.

-- 
Alvaro Herrera                                http://www.CommandPrompt.com/
The PostgreSQL Company - Command Prompt, Inc.