BUG #5950: backend terminating after altering table

Started by Alexander Perepelicaabout 15 years ago5 messagesbugs
Jump to latest
#1Alexander Perepelica
perepelica.alex@gmail.com

The following bug has been logged online:

Bug reference: 5950
Logged by: alex
Email address: perepelica.alex@gmail.com
PostgreSQL version: 9.0.3
Operating system: archlinux x86_64
Description: backend terminating after altering table
Details:

Such steps:
1. create table t (
);
2. alter table t add childs t;
3. alter table t add id serial not null primary key;
This messages from psql:

NOTICE: ALTER TABLE will create implicit sequence "t_id_seq" for serial
column "t.id"
NOTICE: ALTER TABLE / ADD PRIMARY KEY will create implicit index "t_pkey"
for table "t"
server closed the connection unexpectedly
This probably means the server terminated abnormally
before or while processing the request.
The connection to the server was lost. Attempting reset: Failed.

backend - terminated

#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: Alexander Perepelica (#1)
Re: BUG #5950: backend terminating after altering table

"alex" <perepelica.alex@gmail.com> writes:

1. create table t (
);
2. alter table t add childs t;
3. alter table t add id serial not null primary key;
server closed the connection unexpectedly

Hmm. This seems to be fixed in HEAD:

regression=# create table t (
regression(# );
CREATE TABLE
regression=# alter table t add childs t;
ALTER TABLE
regression=# alter table t add id serial not null primary key;
NOTICE: ALTER TABLE will create implicit sequence "t_id_seq" for serial column "t.id"
NOTICE: ALTER TABLE / ADD PRIMARY KEY will create implicit index "t_pkey" for table "t"
ERROR: cannot alter table "t" because column "t"."childs" uses its rowtype

Interestingly, 8.2 also says the same --- but 8.3, 8.4, and 9.0 crash.
Looks like we broke the error check somewhere along the way, and whoever
fixed it neglected to back-patch.

regards, tom lane

#3Sergey Burladyan
eshkinkot@gmail.com
In reply to: Tom Lane (#2)
Re: BUG #5950: backend terminating after altering table

Tom Lane <tgl@sss.pgh.pa.us> writes:

"alex" <perepelica.alex@gmail.com> writes:

1. create table t (
);
2. alter table t add childs t;
3. alter table t add id serial not null primary key;
server closed the connection unexpectedly

Hmm. This seems to be fixed in HEAD:

Not fully. There are also two cases with Segmentation fault
(from sql.ru forum):
1.
create table t ();
alter table t add childs t;
create table selfchield_new (like t);

2.
create table t ();
alter table t add childs t;
create table selfchield_new as select * from t;

I have segmentation fault with current master 7c7fd882.

--
Sergey Burladyan

#4Tom Lane
tgl@sss.pgh.pa.us
In reply to: Sergey Burladyan (#3)
Re: BUG #5950: backend terminating after altering table

Sergey Burladyan <eshkinkot@gmail.com> writes:

Tom Lane <tgl@sss.pgh.pa.us> writes:

"alex" <perepelica.alex@gmail.com> writes:

1. create table t (
);
2. alter table t add childs t;
3. alter table t add id serial not null primary key;
server closed the connection unexpectedly

Hmm. This seems to be fixed in HEAD:

Not fully. There are also two cases with Segmentation fault
(from sql.ru forum):

Yeah, I had already come to the conclusion that it was just luck that
HEAD avoids the specific problem. See
http://archives.postgresql.org/pgsql-hackers/2011-03/msg01673.php

regards, tom lane

#5Tom Lane
tgl@sss.pgh.pa.us
In reply to: Alexander Perepelica (#1)
Re: BUG #5950: backend terminating after altering table

"alex" <perepelica.alex@gmail.com> writes:

Such steps:
1. create table t (
);
2. alter table t add childs t;
3. alter table t add id serial not null primary key;
server closed the connection unexpectedly

Thanks for the report. Fixed as per today's discussion (ie, disallow
creating a self-referencing rowtype).

regards, tom lane