From: | Bruce Momjian <maillist(at)candle(dot)pha(dot)pa(dot)us> |
---|---|
To: | Uncle George <gatgul(at)voicenet(dot)com> |
Cc: | pgsql-hackers(at)postgreSQL(dot)org, pgsql-ports(at)postgreSQL(dot)org |
Subject: | Re: [PORTS] RedHat6.0 & Alpha |
Date: | 1999-09-23 22:01:09 |
Message-ID: | 199909232201.SAA26551@candle.pha.pa.us |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers pgsql-ports |
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(at)candle(dot)pha(dot)pa(dot)us | (610) 853-3000
+ If your life is a hard drive, | 830 Blythe Avenue
+ Christ can be your backup. | Drexel Hill, Pennsylvania 19026
From | Date | Subject | |
---|---|---|---|
Next Message | Bruce Momjian | 1999-09-23 22:01:33 | Re: [PORTS] Re: [HACKERS] RedHat6.0 & Alpha |
Previous Message | Bruce Momjian | 1999-09-23 21:58:05 | Re: [SQL] Re: [HACKERS] SELECT DISTINCT question |
From | Date | Subject | |
---|---|---|---|
Next Message | Bruce Momjian | 1999-09-23 22:01:33 | Re: [PORTS] Re: [HACKERS] RedHat6.0 & Alpha |
Previous Message | Kurt Seel | 1999-09-23 21:11:11 | Re: postgresql back-end would not start on FreeBSD v 2.2.7 |