--- 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 ')' {