Fix an old problem in decompilation of CASE constructs: the ruleutils.c code
authorTom Lane <tgl@sss.pgh.pa.us>
Wed, 25 Feb 2009 18:00:22 +0000 (18:00 +0000)
committerTom Lane <tgl@sss.pgh.pa.us>
Wed, 25 Feb 2009 18:00:22 +0000 (18:00 +0000)
commitaa6f57358d5557ad968886dff5ed32a131172e38
tree4f1269f296043ed4c0b438a7c4903995da76a7f1
parent5b4e977c65efcf745a1f2084ab916dfb5857eb11
Fix an old problem in decompilation of CASE constructs: the ruleutils.c code
looks for a CaseTestExpr to figure out what the parser did, but it failed to
consider the possibility that an implicit coercion might be inserted above
the CaseTestExpr.  This could result in an Assert failure in some cases
(but correct results if Asserts weren't enabled), or an "unexpected CASE WHEN
clause" error in other cases.  Per report from Alan Li.

Back-patch to 8.1; problem doesn't exist before that because CASE was
implemented differently.
src/backend/utils/adt/ruleutils.c