Thread: pgsql-server/src backend/executor/execQual.c b ...

pgsql-server/src backend/executor/execQual.c b ...

From
tgl@svr1.postgresql.org (Tom Lane)
Date:
CVSROOT:    /cvsroot
Module name:    pgsql-server
Changes by:    tgl@svr1.postgresql.org    04/03/17 16:48:43

Modified files:
    src/backend/executor: execQual.c execUtils.c
    src/backend/nodes: copyfuncs.c equalfuncs.c outfuncs.c
                       readfuncs.c
    src/backend/optimizer/util: clauses.c
    src/backend/parser: gram.y parse_expr.c
    src/backend/utils/adt: ruleutils.c
    src/include/catalog: catversion.h
    src/include/nodes: execnodes.h nodes.h primnodes.h
    src/pl/plpgsql/src: pl_exec.c
    src/test/regress/expected: rules.out

Log message:
    Reimplement CASE val WHEN compval1 THEN ... WHEN compval2 THEN ... END
    so that the 'val' is computed only once, per recent discussion.  The
    speedup is not much when 'val' is just a simple variable, but could be
    significant for larger expressions.  More importantly this avoids issues
    with multiple evaluations of a volatile 'val', and it allows the CASE
    expression to be reverse-listed in its original form by ruleutils.c.