Обсуждение: Bug #734: Rename column make views go bad

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

Bug #734: Rename column make views go bad

От
pgsql-bugs@postgresql.org
Дата:
Dennis Björklund (db@zigo.dhs.org) reports a bug with a severity of 3
The lower the number the more severe it is.

Short Description
Rename column make views go bad

Long Description
When I rename a column postgres seems to update the views. Or at least the views works after the update. But if I dump
thedatabase (with pg_dump) then I can not restore it since the dumped views still refer to the old column name. 

I use postgresql 7.2.1.

If the view had not worked directly after the rename I would not have been surprised (there are other changes that have
thateffect). But that everything works until you try to restore was a bit surprising. 

Sample Code
CREATE TABLE foo (
  a   integer
);

INSERT INTO foo VALUES (1);
INSERT INTO foo VALUES (2);

CREATE VIEW bar AS
  SELECT a FROM foo;

-- See, it works
SELECT * FROM bar;

ALTER TABLE bar RENAME a TO b;

-- See, it still works
SELECT * FROM bar;

-- But the definition we see here is the old one
-- and this is the one that is going to be dumped.
-- Of course it can not be restored later when it
-- refers to the wrong column name
\d bar


No file was uploaded with this report

Re: Bug #734: Rename column make views go bad

От
Tom Lane
Дата:
pgsql-bugs@postgresql.org writes:
> When I rename a column postgres seems to update the views. Or at least
> the views works after the update. But if I dump the database (with
> pg_dump) then I can not restore it since the dumped views still refer
> to the old column name.

Although you only see the effects in pg_dump, this is actually a backend
problem (pg_dump depends on pg_get_viewdef(), which wasn't being careful
about this situation).

I've committed fixes into current CVS for this, but I don't think there
will be a back-patch for 7.2 ... the risk of breaking other cases is
too high to put it out without a normal beta-test cycle.

            regards, tom lane