Re: Invalidating dependent views and functions

Поиск
Список
Период
Сортировка
От Robert Haas
Тема Re: Invalidating dependent views and functions
Дата
Msg-id AANLkTikHafZwfT3sordT9el6cXWiUw6x5-hPyvm1xiWq@mail.gmail.com
обсуждение исходный текст
Ответ на Invalidating dependent views and functions  (Scott Bailey <artacus@comcast.net>)
Ответы Re: Invalidating dependent views and functions
Re: Invalidating dependent views and functions
Список pgsql-hackers
On Fri, Apr 30, 2010 at 3:33 AM, Scott Bailey <artacus@comcast.net> wrote:
> Proposal: Add an invalid flag to pg_class. Invalid objects would be ignored
> when doing dependency checks for DDL statements. And an exception would be
> thrown when an invalid object is called.
>
> This is similar to what Oracle does. And most Oracle tools have find and
> compile invalid objects with a statement like:
> ALTER VIEW foo RECOMPILE;
> ALTER PACKAGE bar RECOMPILE BODY;

Keep in mind that our implementation is apparently quite different
from Oracle's.  Of course I have no idea what they do under the hood,
but we don't even store the original text of the view.  Instead, we
store a parsed version of the view text that refers to the target
objects logically rather than by name.  That has some advantages; for
example, you can rename a column in some other table that the view
uses, and nothing breaks.  You can rename a whole table that is used
by the view, and nothing breaks.  Even if we added storage for the
text of the view, recompiling it might result in some fairly
astonishing behavior - you might suddenly be referring to tables or
columns that were quite different from the ones you originally
targeted, if the old ones were renamed out of the way and new,
eponymous ones were added.

I'm familiar with the view-dependency-hell problem you mention, having
fought with it (succesfully, I'm pleased to say, using a big Perl
script to manage things - and also - obligatory dig here - to work
around our lack of support for CREATE IF NOT EXISTS) on many
occasions, but I don't have any brilliant ideas about how to solve it.I would like to eventually support ALTER VIEW ...
DROPCOLUMN; note
 
that we do now support ADDING columns to a view using CREATE OR
REPLACE as long as all the new ones are at the end.  But neither of
those things is going to help with a case like yours, when you want to
change the type of the column.  I'm not really sure what to do about
that case.

...Robert


В списке pgsql-hackers по дате отправления:

Предыдущее
От: Heikki Linnakangas
Дата:
Сообщение: Re: missing file in git repo
Следующее
От: Bruce Momjian
Дата:
Сообщение: Re: Add column if not exists (CINE)