Plan invalidation

Поиск
Список
Период
Сортировка
От Pavan Deolasee
Тема Plan invalidation
Дата
Msg-id 46125E65.9030206@enterprisedb.com
обсуждение исходный текст
Ответы Re: Plan invalidation  (Tom Lane <tgl@sss.pgh.pa.us>)
Список pgsql-hackers
I noticed that the plan invalidation is not immediately effective.
Not sure whether it's worth fixing or has any other side-effects,
but thought would just post it.

I was testing the following scenario:

   session1                            session2
   CREATE TABLE test       (int a, int b);   INSERT INTO TABLE                                SET enable_seqscan = off
                             BEGIN                                PREPARE myplan AS SELECT * FROM TEST
                       WHERE a = 100;                                EXPLAIN EXECUTE myplan; (seq scan)   CREATE INDEX
                                            ----->   EXPLAIN EXECUTE myplan (seq scan)
EXPLAINEXECUTE myplan (index scan)
 

The second "EXPLAIN" in session 2 uses seq scan because the plan
is not invalidated and replanned properly. Ideally it should have
used the index scan.

I traced it a bit and it seems that the invalidation messages
are not accepted in session 2 because the locks are already held
on the relation. At the end of the command, session 2 calls
CommandCounterIncrement() and gets the invalidation messages.
Hence the next EXPLAIN revalidates the plan properly.

May be this is not such an important issue. But I was wondering
if there are other places in the code where we might miss
or receive invalidation messages with a delay, mostly because
of *lack* of lock conflict ?

Thanks,
Pavan

-- 


EnterpriseDB        http://www.enterprisedb.com



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

Предыдущее
От: Heikki Linnakangas
Дата:
Сообщение: Re: CheckpointStartLock starvation
Следующее
От: Tom Lane
Дата:
Сообщение: Re: Modifying TOAST thresholds