• Tom Lane's avatar
    Fix up ruleutils.c for CTE features. The main problem was that · 742fd06d
    Tom Lane authored
    get_name_for_var_field didn't have enough context to interpret a reference to
    a CTE query's output.  Fixing this requires separate hacks for the regular
    deparse case (pg_get_ruledef) and for the EXPLAIN case, since the available
    context information is quite different.  It's pretty nearly parallel to the
    existing code for SUBQUERY RTEs, though.  Also, add code to make sure we
    qualify a relation name that matches a CTE name; else the CTE will mistakenly
    capture the reference when reloading the rule.
    
    In passing, fix a pre-existing problem with get_name_for_var_field not working
    on variables in targetlists of SubqueryScan plan nodes.  Although latent all
    along, this wasn't a problem until we made EXPLAIN VERBOSE try to print
    targetlists.  To do this, refactor the deparse_context_for_plan API so that
    the special case for SubqueryScan is all on ruleutils.c's side.
    742fd06d
builtins.h 39.2 KB