Re: Prepared statements fail after schema changes with surprising error

Поиск
Список
Период
Сортировка
От Tom Lane
Тема Re: Prepared statements fail after schema changes with surprising error
Дата
Msg-id 10838.1358839035@sss.pgh.pa.us
обсуждение исходный текст
Ответ на Re: Prepared statements fail after schema changes with surprising error  (Peter van Hardenberg <pvh@pvh.ca>)
Ответы Re: Prepared statements fail after schema changes with surprising error  (Robert Haas <robertmhaas@gmail.com>)
Re: Prepared statements fail after schema changes with surprising error  (Dimitri Fontaine <dimitri@2ndQuadrant.fr>)
Список pgsql-hackers
Peter van Hardenberg <pvh@pvh.ca> writes:
> Okay - I've narrowed it down to an interaction with schema recreation.
> Here's a minimal test-case I created by paring back the restore from the
> pg_restore output until I only had the essence remaining:

Hm ... I'm too tired to trace through the code to prove this theory, but
I think what's happening is that this bit:

> DROP SCHEMA public;
> CREATE SCHEMA public;

changes the OID of schema public, whereas the search_path that's cached
for the cached plan is cached in terms of OIDs.  So while there is a
table named public.z1 at the end of the sequence, it's not in any schema
found in the cached search path.

We could possibly fix that by making the path be cached as textual names
not OIDs, but then people would complain (rightly, I think) that
renaming a schema caused unexpected behavior.

There's also the other issues that have been discussed again recently
about whether we should be attempting to reinstall an old search path in
the first place.  We could easily dodge this issue if we redefined what
the desired behavior is ... but I'm not sure if we want to risk the
fallout of that.
        regards, tom lane



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

Предыдущее
От: Peter van Hardenberg
Дата:
Сообщение: Re: Prepared statements fail after schema changes with surprising error
Следующее
От: Magnus Hagander
Дата:
Сообщение: Re: CF3+4 (was Re: Parallel query execution)