Thread

  1. Some optimizations for COALESCE expressions during constant folding

    Richard Guo <guofenglinux@gmail.com> — 2025-11-25T10:50:51Z

    Currently, we perform some simplification for Const arguments of a
    COALESCE expression.  For instance, if the first argument is a
    non-null constant, we use that constant as the result for the entire
    expression.  If a subsequent argument is a non-null constant, all
    following arguments are dropped since they will never be reached.
    
    We can extend this simplification to Var arguments since the NOT NULL
    attribute information is now available during constant folding.  0001
    implements this.
    
    Another optimization that can be done for a COALESCE expression is
    when it is used in a NullTest.  We can determine that a COALESCE
    expression is non-nullable by checking if at least one of its
    arguments is proven non-null.  This information can then be used to
    reduce the NullTest qual to a constant true or false.  0002 implements
    this.  (I'm wondering whether it'd be better to consolidate the
    non-null check for Const, Var, and CoalesceExpr into one helper
    function to simplify the code in eval_const_expressions.)
    
    - Richard