• Tom Lane's avatar
    Teach eval_const_expressions() to handle some more cases. · 3decd150
    Tom Lane authored
    Add some infrastructure (mostly macros) to make it easier to write
    typical cases for constant-expression simplification.  Add simplification
    processing for ArrayRef, RowExpr, and ScalarArrayOpExpr node types,
    which formerly went unsimplified even if all their inputs were constants.
    Also teach it to simplify FieldSelect from a composite constant.
    Make use of the new infrastructure to reduce the amount of code needed
    for the existing ArrayExpr and ArrayCoerceExpr cases.
    
    One existing test case changes output as a result of the fact that
    RowExpr can now be folded to a constant.  All the new code is exercised
    by existing test cases according to gcov, so I feel no need to add
    additional tests.
    
    Tom Lane, reviewed by Dmitry Dolgov
    
    Discussion: https://postgr.es/m/3be3b82c-e29c-b674-2163-bf47d98817b1@iki.fi
    3decd150
clauses.c 159 KB