> No, it isn't fun any more and I'm getting angry now >:-(
>
> I've checked it and it turns out, that due to the changes
> that came in with INTERSECT/EXPECT many expressions aren't
> any longer copied when they are added from one parsetree to
> another. Thus, multiple parsetrees reference the same Var
> nodes and if multiple rules get applied during the rule
> system recursion (rewritten trees get rewritten again), later
> rules mangle up the ones referenced in trees the rule system
> is already done with.
>
> I've spent night's to fix this all for v6.4. Added many
> copyObject()'s around things that MUST be copied. Now I find
> them commented out, because it was easier to apply v6.3 based
> development onto the v6.5 sources.
>
> I'll now revert things to do the copyObject() again where it
> has to be done and will add the examples from the programmers
> manual to the regression tests.
>
> Surely this will break the INTERSECT/EXPECT code, because it
> depends on nodes beeing at specific memory locations for
> comparisions. But this is impossible due to the requirements
> of the rule system.
That is bad. He wants the Var nodes to have the same address. Why
can't he use equal() like everyone else? Do you want to review his
patch, and reverse anything that looks wrong in it. This may be the
only way to make sure things are OK. The patch isn't that long.
I had the same frustrations with HAVING six months ago.
-- 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,
Pennsylvania19026