Re: Reduce lock levels for ADD and DROP COLUMN

Поиск
Список
Период
Сортировка
От Tom Lane
Тема Re: Reduce lock levels for ADD and DROP COLUMN
Дата
Msg-id 18256.1293474782@sss.pgh.pa.us
обсуждение исходный текст
Ответ на Re: Reduce lock levels for ADD and DROP COLUMN  (Simon Riggs <simon@2ndQuadrant.com>)
Ответы Re: Reduce lock levels for ADD and DROP COLUMN  (Simon Riggs <simon@2ndQuadrant.com>)
Список pgsql-hackers
Simon Riggs <simon@2ndQuadrant.com> writes:
> Do you disagree with the ADD or the DROP, or both?

Both.

> What "stuff" will break, in your opinion? I'm not asking you to do the
> research, but a few curveballs would be enough to end this quickly, and
> leave a good record for the archives.

The most obvious point is that the parser, planner, and executor
all depend on the assumption that the lock originally taken in
parserOpenTable() is sufficient to ensure that the table definition
isn't moving underneath them.  It will not be good if the executor
sees a different table definition than the parser saw.

To give just one concrete example of what's likely to go wrong, when we
read pg_attribute to construct the table's tuple descriptor, we do so
with SnapshotNow.  If someone commits a change to one of those
pg_attribute rows while that scan is in progress, we may see both or
neither version of that pg_attribute row as valid.

I believe there are more subtle assumptions associated with the fact
that the relcache keeps a copy of the table's tupledesc; various places
assume that the cached tupdesc won't change or disappear underneath them
as long as they've got some lock on the table.
        regards, tom lane


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

Предыдущее
От: Joel Jacobson
Дата:
Сообщение: UPDATE pg_catalog.pg_proc.prosrc OK?
Следующее
От: Robert Haas
Дата:
Сообщение: Re: and it's not a bunny rabbit, either