From a0b527c6e74c4f3719c1b1f64ce9c61965b90d46 Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Sun, 1 Oct 2006 17:23:51 +0000 Subject: [PATCH] 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. --- src/backend/utils/adt/ruleutils.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/backend/utils/adt/ruleutils.c b/src/backend/utils/adt/ruleutils.c index c08ff098e5..613d798245 100644 --- a/src/backend/utils/adt/ruleutils.c +++ b/src/backend/utils/adt/ruleutils.c @@ -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); } -- 2.39.5