PostgreSQL 8.4

Here is a PL/pgSQL procedure:

CREATE OR REPLACE FUNCTION select_test()
  RETURNS void AS
$BODY$
DECLARE
id integer = -1;
BEGIN
select max(id) into id from test_table;
END
$BODY$
  LANGUAGE 'plpgsql' VOLATILE
  COST 100;

test_table is some table with an integer column 'id'.

The above procedure has an obvious mistake: the variable 'id' has the same name 
as a column in test_table. The select statement should have generated an error, 
preferably at function creation time.

What actually happens is that no error is thrown, the select result is not 
assigned to the variable 'id', and the function always returns -1.

Reply via email to