Обсуждение: BUG #1808: bug: plan bugs on alert /drop table

Поиск
Список
Период
Сортировка

BUG #1808: bug: plan bugs on alert /drop table

От
"Michael Afanasiev"
Дата:
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

Re: BUG #1808: bug: plan bugs on alert /drop table

От
Bruce Momjian
Дата:
Please see the FAQ.  This is a known problem.

---------------------------------------------------------------------------

Michael Afanasiev wrote:
>
> 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
>
> ---------------------------(end of broadcast)---------------------------
> TIP 3: Have you checked our extensive FAQ?
>
>                http://www.postgresql.org/docs/faq
>

--
  Bruce Momjian                        |  http://candle.pha.pa.us
  pgman@candle.pha.pa.us               |  (610) 359-1001
  +  If your life is a hard drive,     |  13 Roberts Road
  +  Christ can be your backup.        |  Newtown Square, Pennsylvania 19073