--- src/backend/parser/gram.y	Sun Dec  3 08:50:54 2000
+++ /usr/src/postgresql-7.1beta1/src/backend/parser/gram.y	Tue Jan 23 12:49:45 2001
@@ -4462,15 +4462,23 @@
 				}
 		| a_expr BETWEEN b_expr AND b_expr
 				{
-					$$ = makeA_Expr(AND, NULL,
-						makeA_Expr(OP, ">=", $1, $3),
-						makeA_Expr(OP, "<=", $1, $5));
+					$$ = makeA_Expr(OR, NULL,
+						(makeA_Expr(AND, NULL,
+							makeA_Expr(OP, ">=", $1, $3),
+							makeA_Expr(OP, "<=", $1, $5))),
+						(makeA_Expr(AND, NULL,
+							makeA_Expr(OP, ">=", $1, $5),
+							makeA_Expr(OP, "<=", $1, $3))));
 				}
 		| a_expr NOT BETWEEN b_expr AND b_expr
 				{
-					$$ = makeA_Expr(OR, NULL,
-						makeA_Expr(OP, "<", $1, $4),
-						makeA_Expr(OP, ">", $1, $6));
+					$$ = makeA_Expr(AND, NULL,
+						(makeA_Expr(OR, NULL,
+							makeA_Expr(OP, "<", $1, $4),
+							makeA_Expr(OP, ">", $1, $6))),
+						(makeA_Expr(OR, NULL,
+							makeA_Expr(OP, "<", $1, $6),
+							makeA_Expr(OP, ">", $1, $4))));
 				}
 		| a_expr IN '(' in_expr ')'
 				{
