• Tom Lane's avatar
    Make decompilation of optimized CASE constructs more robust. · 3987e9e6
    Tom Lane authored
    We had some hacks in ruleutils.c to cope with various odd transformations
    that the optimizer could do on a CASE foo WHEN "CaseTestExpr = RHS" clause.
    However, the fundamental impossibility of covering all cases was exposed
    by Heikki, who pointed out that the "=" operator could get replaced by an
    inlined SQL function, which could contain nearly anything at all.  So give
    up on the hacks and just print the expression as-is if we fail to recognize
    it as "CaseTestExpr = RHS".  (We must cover that case so that decompiled
    rules print correctly; but we are not under any obligation to make EXPLAIN
    output be 100% valid SQL in all cases, and already could not do so in some
    other cases.)  This approach requires that we have some printable
    representation of the CaseTestExpr node type; I used "CASE_TEST_EXPR".
    
    Back-patch to all supported branches, since the problem case fails in all.
    3987e9e6
ruleutils.c 191 KB