PostgreSQL 8.4
Here is a PL/pgSQL procedure:
CREATE OR REPLACE FUNCTION select_test()
RETURNS void AS
$BODY$
DECLARE
id integer =3D -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.