Thread: inheritance_planner() bug in 9.1

inheritance_planner() bug in 9.1

From
Jeff Davis
Date:
The attached SQL causes a crash in 9.1. It appears to be caused by:

    d1001a78ce612a16ea622b558f5fc2b68c45ab4c

The patch tries to copy all of the important data out of the child
context before it's reset; but it doesn't get everything. For instance,
grouping_planner() allocates subroot.glob->paramlist, and uses it in
subsequent iterations; but that isn't copied before the context is
reset. It looks like there are other things that need copying as well,
but it wasn't immediately clear to me what the best fix is.

Regards,
    Jeff Davis

Attachment

Re: inheritance_planner() bug in 9.1

From
Tom Lane
Date:
Jeff Davis <pgsql@j-davis.com> writes:
> The attached SQL causes a crash in 9.1. It appears to be caused by:
>     d1001a78ce612a16ea622b558f5fc2b68c45ab4c

> The patch tries to copy all of the important data out of the child
> context before it's reset; but it doesn't get everything. For instance,
> grouping_planner() allocates subroot.glob->paramlist, and uses it in
> subsequent iterations; but that isn't copied before the context is
> reset. It looks like there are other things that need copying as well,
> but it wasn't immediately clear to me what the best fix is.

Ugh.  Maybe the best fix is to back that out.  I too am now unsure which
substructures of PlannerGlobal are at risk, and I don't really think
that hack was worth taking any risk of destabilizing the system for.

            regards, tom lane