summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2006-10-01 17:23:51 +0000
committerTom Lane <tgl@sss.pgh.pa.us>2006-10-01 17:23:51 +0000
commit9acbb81dd785f3b269c5eca5d06c338470053c44 (patch)
treeaf82ea8c5c73b535d95794376a41692edab0d40c
parente73687f2ecd2bbec22812db1c19fd6ee8dc3c08e (diff)
downloadpostgresql-9acbb81dd785f3b269c5eca5d06c338470053c44.tar.gz
Fix overly enthusiastic Assert introduced in 8.1: it's expecting a
CaseTestExpr, but forgot that the optimizer is sometimes able to replace CaseTestExpr by Const.
-rw-r--r--src/backend/utils/adt/ruleutils.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/src/backend/utils/adt/ruleutils.c b/src/backend/utils/adt/ruleutils.c
index 92dd03775e..b921bcb5ec 100644
--- a/src/backend/utils/adt/ruleutils.c
+++ b/src/backend/utils/adt/ruleutils.c
@@ -3,7 +3,7 @@
* back to source text
*
* IDENTIFICATION
- * $PostgreSQL: pgsql/src/backend/utils/adt/ruleutils.c,v 1.207.2.5 2006/01/26 17:08:26 tgl Exp $
+ * $PostgreSQL: pgsql/src/backend/utils/adt/ruleutils.c,v 1.207.2.6 2006/10/01 17:23:51 tgl Exp $
*
* This software is copyrighted by Jan Wieck - Hamburg.
*
@@ -3458,14 +3458,18 @@ get_rule_expr(Node *node, deparse_context *context,
* the optimizer's simplify_boolean_equality() may
* have reduced this to just "CaseTestExpr" or
* "NOT CaseTestExpr", for which we have to show
- * "TRUE" or "FALSE".
+ * "TRUE" or "FALSE". Also, depending on context
+ * the original CaseTestExpr might have been reduced
+ * to a Const (but we won't see "WHEN Const").
*/
if (IsA(w, OpExpr))
{
Node *rhs;
Assert(IsA(linitial(((OpExpr *) w)->args),
- CaseTestExpr));
+ CaseTestExpr) ||
+ IsA(linitial(((OpExpr *) w)->args),
+ Const));
rhs = (Node *) lsecond(((OpExpr *) w)->args);
get_rule_expr(rhs, context, false);
}