diff --git a/src/backend/parser/parse_expr.c b/src/backend/parser/parse_expr.c
index f4cf3247628a4d203714277d26403ff488e0f33a..da5f90685773746273618ff07af6317e249262b2 100644
--- a/src/backend/parser/parse_expr.c
+++ b/src/backend/parser/parse_expr.c
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/backend/parser/parse_expr.c,v 1.23 1998/02/27 16:07:02 vadim Exp $
+ *	  $Header: /cvsroot/pgsql/src/backend/parser/parse_expr.c,v 1.24 1998/03/26 21:08:10 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -301,6 +301,21 @@ transformExpr(ParseState *pstate, Node *expr, int precedence)
 				result = (Node *) expr;
 				break;
 			}
+/* These nodes do _not_ come from the original parse tree.
+ * They result from parser transformation in this phase.
+ * At least one construct (BETWEEN/AND) puts the same nodes
+ *  into two branches of the parse tree. Hence, some nodes
+ *  are transformed twice. These nodes come from transforming
+ *  a function call. Let's try just passing them through...
+ * - thomas 1998-03-14
+ */
+		case T_Expr:
+		case T_Var:
+		case T_Const:
+			{
+				result = (Node *) expr;
+				break;
+			}
 		default:
 			/* should not reach here */
 			elog(ERROR, "transformExpr: does not know how to transform node %d",