• Tom Lane's avatar
    Fix some minor issues exposed by outfuncs/readfuncs testing. · db1071d4
    Tom Lane authored
    A test patch to pass parse and plan trees through outfuncs + readfuncs
    exposed several issues that need to be fixed to get clean matches:
    
    Query.withCheckOptions failed to get copied; it's intentionally ignored
    by outfuncs/readfuncs on the grounds that it'd always be NIL anyway in
    stored rules.  This seems less than future-proof, and it's not even
    saving very much, so just undo the decision and treat the field like
    all others.
    
    Several places that convert a view RTE into a subquery RTE, or similar
    manipulations, failed to clear out fields that were specific to the
    original RTE type and should be zero in a subquery RTE.  Since readfuncs.c
    will leave such fields as zero, equalfuncs.c thinks the nodes are different
    leading to a reported mismatch.  It seems like a good idea to clear out the
    no-longer-needed fields, even though in principle nothing should look at
    them; the node ought to be indistinguishable from how it would look if
    we'd built a new node instead of scribbling on the old one.
    
    BuildOnConflictExcludedTargetlist randomly set the resname of some
    TargetEntries to "" not NULL.  outfuncs/readfuncs don't distinguish those
    cases, and so the string will read back in as NULL ... but equalfuncs.c
    does distinguish.  Perhaps we ought to try to make things more consistent
    in this area --- but it's just useless extra code space for
    BuildOnConflictExcludedTargetlist to not use NULL here, so I fixed it for
    now by making it do that.
    
    catversion bumped because the change in handling of Query.withCheckOptions
    affects stored rules.
    
    Discussion: https://postgr.es/m/17114.1537138992@sss.pgh.pa.us
    db1071d4
catversion.h 2.53 KB