Обсуждение: BUG #6533: postgre server crashes by create function (create table as)

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

BUG #6533: postgre server crashes by create function (create table as)

От
vozhdb@gmail.com
Дата:
The following bug has been logged on the website:

Bug reference:      6533
Logged by:          Alex Sanin
Email address:      vozhdb@gmail.com
PostgreSQL version: 9.0.4
Operating system:   Windows XP sp3
Description:=20=20=20=20=20=20=20=20

Here is the script:

drop table if exists test;
CREATE TABLE test
(
  id serial NOT NULL,
  lastname character varying(255) NOT NULL,
  firstname character varying(255),
  middlename character varying(255),
  birthdate date,
  listid integer,
  CONSTRAINT test_pkey PRIMARY KEY (id)
)
WITH (
  OIDS=3DFALSE
);

insert into test select a, a::character varying, a::character varying,
a::character varying, now()::date + a, a from generate_series(1,10000)
t(a);

CREATE OR REPLACE FUNCTION create_test_child() RETURNS void AS $$
  DROP TABLE IF EXISTS test_child;
  CREATE TABLE test_child AS SELECT test.* FROM test as test;
$$ LANGUAGE sql VOLATILE;

select create_test_child();

-------------------------------------
---------same without aliases--------

drop table if exists test;
CREATE TABLE test
(
  id serial NOT NULL,
  lastname character varying(255) NOT NULL,
  firstname character varying(255),
  middlename character varying(255),
  birthdate date,
  listid integer,
  CONSTRAINT test_pkey PRIMARY KEY (id)
)
WITH (
  OIDS=3DFALSE
);

insert into test select a, a::character varying, a::character varying,
a::character varying, now()::date + a, a from generate_series(1,10000)
t(a);

CREATE OR REPLACE FUNCTION create_test_child() RETURNS void AS $$
  DROP TABLE IF EXISTS test_child;
  CREATE TABLE test_child AS SELECT * FROM test;
$$ LANGUAGE sql VOLATILE;

select create_test_child();

Re: BUG #6533: postgre server crashes by create function (create table as)

От
Tom Lane
Дата:
vozhdb@gmail.com writes:
> The following bug has been logged on the website:
> Bug reference:      6533
> Logged by:          Alex Sanin
> Email address:      vozhdb@gmail.com
> PostgreSQL version: 9.0.4
> Operating system:   Windows XP sp3
> Description:

> Here is the script:

This script doesn't crash for me, in HEAD or 9.0 branch tip.  Given the
use of CREATE TABLE AS in a SQL function, I suspect that this is the
same issue fixed in 9.0.7:

    Fix dangling pointer after CREATE TABLE AS/SELECT INTO in a SQL-language function (Tom Lane)

    In most cases this only led to an assertion failure in assert-enabled builds, but worse consequences seem possible.

            regards, tom lane