The following bug has been logged online:
Bug reference: 1808
Logged by: Michael Afanasiev
Email address: wbear@wbear.ru
PostgreSQL version: 8.0.0 & 7.4.6
Operating system: 8.0.0 - WIN XP 7.4.6 FreeBSD
Description: bug: plan bugs on alert /drop table
Details:
/*
Postgres must recreate all plans when table recreated or alerted
*/
show server_version; --8.0.0 & 7.4.6
CREATE TABLE public.a ( a int4);
CREATE FUNCTION public.aa_func() RETURNS int4 AS
'BEGIN
insert into a (a) values (1);
RETURN 1;
END;'
LANGUAGE 'plpgsql' VOLATILE;
SELECT * FROM aa_func(); -- OK 1 row inserted
DROP TABLE a;
CREATE TABLE public.a ( a int4);
SELECT * FROM a;
SELECT * FROM aa_func();-- !!! ERROR: relation with OID XXXX does not
exist
DROP FUNCTION public.aa_func();
CREATE FUNCTION public.aa_func() RETURNS int4 AS
'BEGIN
insert into a (a) values (1);
RETURN 1;
END;'
LANGUAGE 'plpgsql' VOLATILE;
-- DROP function ,CREATE function or reconnect
SELECT * FROM aa_func(); -- OK 1 row inserted
SELECT * FROM a;
DELETE FROM a;
ALTER TABLE public.a ADD COLUMN b int4;
ALTER TABLE public.a ALTER COLUMN b SET NOT NULL;
ALTER TABLE public.a ALTER COLUMN b SET DEFAULT 0;
SELECT * FROM aa_func(); -- !!! ERROR: .. null value in column "b" violates
not-null constraint
--DROP function ,CREATE function or reconnect
SELECT * FROM aa_func(); --- OK 1 row inserted