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:07 +0000 (18:00 +0000)
committerTom Lane <tgl@sss.pgh.pa.us>
Wed, 25 Feb 2009 18:00:07 +0000 (18:00 +0000)
commitfd2747c9ba494c3a486fe2e55ca73d3d11b40ee8
tree5ae7ec7532811235eb52bea5689a22e1ef845030
parent6739a89e847b32236514464401ab883e0a73baa1
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