提交 514ce7a3 编写于 作者: T Tom Lane

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.
上级 87cd901c
......@@ -2,7 +2,7 @@
* ruleutils.c - Functions to convert stored expressions/querytrees
* back to source text
*
* $PostgreSQL: pgsql/src/backend/utils/adt/ruleutils.c,v 1.232 2006/08/21 00:57:25 tgl Exp $
* $PostgreSQL: pgsql/src/backend/utils/adt/ruleutils.c,v 1.233 2006/10/01 17:23:38 tgl Exp $
**********************************************************************/
#include "postgres.h"
......@@ -3584,14 +3584,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);
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册