Re: [HACKERS] Ye olde "relation doesn't quite exist" problem
От | Vadim Mikheev |
---|---|
Тема | Re: [HACKERS] Ye olde "relation doesn't quite exist" problem |
Дата | |
Msg-id | 375743BF.CBF7BB84@krs.ru обсуждение исходный текст |
Ответ на | Re: [HACKERS] Ye olde "relation doesn't quite exist" problem (Tom Lane <tgl@sss.pgh.pa.us>) |
Ответы |
Re: [HACKERS] Ye olde "relation doesn't quite exist" problem
|
Список | pgsql-hackers |
Tom Lane wrote: > > I think the correct place to handle the problem is in > SystemCacheRelationFlushed() in catcache.c. That routine is called by > RelationFlushRelation() (which does the same task for the relcache). > Unfortunately, it was only handling one aspect of the cache-update > problem: it was cleaning out the cache associated with a system table > when the *system table's* relcache entry was flushed. It didn't scan > the cache contents to see if any of the records are associated with a > non-system table that's being flushed. > > For the moment, I have made it call ResetSystemCache() --- that is, just > flush *all* the cache entries. Scanning the individual entries to find ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Isn't is tooooo bad for performance ?! > the ones referencing the given relID would require knowing exactly which > column to look in for each kind of system cache, which is more knowledge > than catcache.c actually has. Eventually we could improve it. > > This means it is no longer necessary for heap.c or index.c to call > ResetSystemCache() when handling a temp table --- their calls to > RelationForgetRelation are sufficient. I have applied those changes > as well. Vadim
В списке pgsql-hackers по дате отправления: