> Hi,
>
> who's the parser guru? I need help!
>
> I have a table t1(a int4, b int4)
>
> When I
>
> update t1 set b = 2 where a = 1;
>
> I get a targetlist with 1 entry and resno=2.
>
> But when I
>
> update t1 set b = t2.b where a = t2.a;
>
> I get the same 1 entry targetlist with resno=1 for attribute
> "b". That causes deep deep trouble in the rewrite system,
> when fixing the expressions for *new* variable references.
> *new*.attr defaults to *old*.attr except given in the query
> to be updated. When fixing *new* references, the rewrite
> system looks up the original parsetree to find a TLE with the
> same resno as the attribute number in the *new*.attr. So it
> depends on having the resno same to the attno of the result
> relation.
>
> I'm absolutely unfamiliar with the parser in this area and I
> don't want to hack around and break things so close before
> 6.4. Who knows how to fix this?
>
> BTW: up to now the rewrite system looks much better. It works
> for insert, update and delete when using constant values.
> insert ... select ... works too.
Let me take a look at this. I am in the middle of a major patch, so it
may take a day or two.
--
Bruce Momjian | 830 Blythe Avenue
maillist@candle.pha.pa.us | Drexel Hill, Pennsylvania 19026
+ If your life is a hard drive, | (610) 353-9879(w)
+ Christ can be your backup. | (610) 853-3000(h)