mirror of
https://github.com/postgres/postgres.git
synced 2025-04-25 21:42:33 +03:00
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.
This commit is contained in:
parent
87cd901cba
commit
514ce7a331
@ -2,7 +2,7 @@
|
|||||||
* ruleutils.c - Functions to convert stored expressions/querytrees
|
* ruleutils.c - Functions to convert stored expressions/querytrees
|
||||||
* back to source text
|
* 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"
|
#include "postgres.h"
|
||||||
@ -3584,14 +3584,18 @@ get_rule_expr(Node *node, deparse_context *context,
|
|||||||
* the optimizer's simplify_boolean_equality() may
|
* the optimizer's simplify_boolean_equality() may
|
||||||
* have reduced this to just "CaseTestExpr" or
|
* have reduced this to just "CaseTestExpr" or
|
||||||
* "NOT CaseTestExpr", for which we have to show
|
* "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))
|
if (IsA(w, OpExpr))
|
||||||
{
|
{
|
||||||
Node *rhs;
|
Node *rhs;
|
||||||
|
|
||||||
Assert(IsA(linitial(((OpExpr *) w)->args),
|
Assert(IsA(linitial(((OpExpr *) w)->args),
|
||||||
CaseTestExpr));
|
CaseTestExpr) ||
|
||||||
|
IsA(linitial(((OpExpr *) w)->args),
|
||||||
|
Const));
|
||||||
rhs = (Node *) lsecond(((OpExpr *) w)->args);
|
rhs = (Node *) lsecond(((OpExpr *) w)->args);
|
||||||
get_rule_expr(rhs, context, false);
|
get_rule_expr(rhs, context, false);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user