Fix old oversight in const-simplification of COALESCE() expressions.

Tom Lane <tgl@sss.pgh.pa.us>

Commit: faea08353120ed455df84ba30c07505248f5332b
Author: Tom Lane <tgl@sss.pgh.pa.us>
Date: 2010-11-12T20:19:08Z
Releases: 8.1.23
Fix old oversight in const-simplification of COALESCE() expressions.

Once we have found a non-null constant argument, there is no need to
examine additional arguments of the COALESCE.  The previous coding got it
right only if the constant was in the first argument position; otherwise
it tried to simplify following arguments too, leading to unexpected
behavior like this:

regression=# select coalesce(f1, 42, 1/0) from int4_tbl;
ERROR:  division by zero

It's a minor corner case, but a bug is a bug, so back-patch all the way.

Files

PathChange+/−
src/backend/optimizer/util/clauses.c modified +5 −1