Re: failed runcheck
От | Bruce Momjian |
---|---|
Тема | Re: failed runcheck |
Дата | |
Msg-id | 200010220516.BAA25770@candle.pha.pa.us обсуждение исходный текст |
Ответ на | Re: failed runcheck (Tom Lane <tgl@sss.pgh.pa.us>) |
Ответы |
Re: failed runcheck
(Tom Lane <tgl@sss.pgh.pa.us>)
|
Список | pgsql-hackers |
> Patrick Welche <prlw1@newn.cam.ac.uk> writes: > > [ core dump due to ] > > #0 IsSystemRelationName (relname=0x0) at catalog.c:176 > > #1 0x807ed9a in IsSharedSystemRelationName (relname=0x0) at catalog.c:197 > > #2 0x80e9272 in RelationInitLockInfo (relation=0x82af018) at lmgr.c:119 > > #3 0x81202ef in formrdesc (relationName=0x816ad7e "pg_class", natts=22, > > att=0x8173600) at relcache.c:1193 > > #4 0x8120c12 in RelationCacheInitialize () at relcache.c:1953 > > and proposes to fix this by having IsSystemRelationName make an > arbitrary decision about whether a NULL input pointer should be > considered to represent a system relation name or not. I do not > like that, because AFAICS the decision is completely arbitrary. > IsSystemRelationName shouldn't be called with a NULL pointer > in the first place, and it has every right to cause a coredump > if that happens. I have removed the change. It will dump core again. > > It looks to me like the immediate bug here is that > RelationGetPhysicalRelationName is returning a NULL pointer. Probably > there are some missing or out-of-order steps in relcache initialization? > > I've been offline for a couple days due to DSL line failure :-( so That is bad. Mine has been great, but I had my first DSL burp for 3 hours on Friday after 4 months of continuous uptime. > I haven't seen Vadim's latest checkins. But I'm betting this is a bug > in the changes to use OIDs as physical relnames. Do we even need > RelationGetPhysicalRelationName anymore, and if so, what does it mean? Good bet. > > Next question: why is RelationInitLockInfo using > RelationGetPhysicalRelationName to get the input data for > IsSharedSystemRelationName --- shouldn't that be a test on logical > relation name? Or maybe the entire premise of > IsSharedSystemRelationName is bogus now, and we ought to use some other > way to decide if a relation is cross-database or not? No, because if they create a temp table that masks a system table in the current session, you want the physical name so it can know if it is a real system table, or a temp/fake one. You can ask why would someone try this, but it will work, or do something while trying. -- Bruce Momjian | http://candle.pha.pa.us pgman@candle.pha.pa.us | (610) 853-3000+ If your life is a hard drive, | 830 Blythe Avenue + Christ can be your backup. | Drexel Hill, Pennsylvania19026
В списке pgsql-hackers по дате отправления: