• Tom Lane's avatar
    Fix EXPLAIN of SEARCH BREADTH FIRST queries some more. · 2c25db32
    Tom Lane authored
    Commit 3f50b8263 had an oversight: formerly, to deparse expressions
    attached to a plan node, it was only necessary to update the
    deparse_namespace ancestors list alongside calling set_deparse_plan.
    Now it's necessary to update the ancestors list *first*, because
    set_deparse_plan consults it, and one call site got that wrong.
    
    This error was masked in most cases because explain.c uses just one
    List object for the ancestors list, updating it in-place as the plan
    is scanned, so that we accidentally had the right List assigned to
    dpns->ancestors before it was needed.  It would fail only if a
    WorkTableScan node were the first one that we tried to deparse a
    subexpression of.
    
    Per report from Markus Winand.  Like the previous patch,
    back-patch to v14.
    
    Discussion: https://postgr.es/m/648B0505-AA57-42C2-A2DA-E551DE46FA15@winand.at
    2c25db32
ruleutils.c 333 KB