Re: [PORTS] RedHat6.0 & Alpha
От | Bruce Momjian |
---|---|
Тема | Re: [PORTS] RedHat6.0 & Alpha |
Дата | |
Msg-id | 199909232201.SAA26551@candle.pha.pa.us обсуждение исходный текст |
Ответ на | RedHat6.0 & Alpha (Uncle George <gatgul@voicenet.com>) |
Ответы |
Re: [HACKERS] Re: [PORTS] RedHat6.0 & Alpha
|
Список | pgsql-hackers |
Can anyone address the status of this bug? > In the regression test rules.sql there is this SQL command > > update rtest_v1 set a = rtest_t3.a + 20 where b = rtest_t3.b; > > Which causes my alpha port to go core. The above line can be reduced to: > > update rtest_v1 set a = rtest_t3.a + 20 ; > > which also causes the same problem. It seems that the 64 bit address > ((Expr*)nodeptr)->oper gets truncated ( high 32 bits ) somewhere along the way. > > I was able to locate the errant code in rewriteManip.c:712. but There seems to be a > bigger problem other than eraseing the upper 32bit address. It seems that > FindMatchingNew() returns a node of type T_Expr, rather than the expected type of > T_Var. Once u realize this then u can see why the now MISCAST "(Var *) > *nodePtr)->varlevelsup = this_varlevelsup" will cause a problem. On my alpha this erases > a portion in the address in the T_Expr. On the redhat 5.2/i386 this code seems to be > benign, BUT YOU ARE ERASEING SOMETHING that doesn't belong to to T_Expr ! > > So what gives? > gat > Maybe an assert() will help in finding some of the miscast returned types? Wuddya think? > sure would catch some of the boo-boo's hanging around > > rewriteManip.c: > if (this_varno == info->new_varno && > this_varlevelsup == sublevels_up) > { > n = FindMatchingNew(targetlist, > ((Var *) node)->varattno); > if (n == NULL) > { > if (info->event == CMD_UPDATE) > { > *nodePtr = n = copyObject(node); > ((Var *) n)->varno = info->current_varno; > ((Var *) n)->varnoold = info->current_varno; > } > else > *nodePtr = make_null(((Var *) node)->vartype); > } > else > { > *nodePtr = copyObject(n); > ((Var *) *nodePtr)->varlevelsup = this_varlevelsup; /* This > line zaps the address */ > } > } > > > > > > > -- Bruce Momjian | http://www.op.net/~candle maillist@candle.pha.pa.us | (610) 853-3000 + If your life is a hard drive, | 830 Blythe Avenue + Christ can be your backup. | Drexel Hill, Pennsylvania 19026
В списке pgsql-hackers по дате отправления: