Index: src/backend/parser/gram.y
===================================================================
RCS file: /home/projects/pgsql/cvsroot/pgsql/src/backend/parser/gram.y,v
retrieving revision 2.221
diff -u -r2.221 gram.y
--- src/backend/parser/gram.y	2001/02/18 18:06:10	2.221
+++ src/backend/parser/gram.y	2001/03/10 14:17:44
@@ -307,7 +307,7 @@
 		GLOBAL, GRANT, GROUP, HAVING, HOUR_P,
 		IN, INNER_P, INSENSITIVE, INSERT, INTERSECT, INTERVAL, INTO, IS,
 		ISOLATION, JOIN, KEY, LANGUAGE, LEADING, LEFT, LEVEL, LIKE, LOCAL,
-		MATCH, MINUTE_P, MONTH_P, NAMES,
+		MATCH, MINUS, MINUTE_P, MONTH_P, NAMES,
 		NATIONAL, NATURAL, NCHAR, NEXT, NO, NOT, NULLIF, NULL_P, NUMERIC,
 		OF, OLD, ON, ONLY, OPTION, OR, ORDER, OUTER_P, OVERLAPS,
 		PARTIAL, POSITION, PRECISION, PRIMARY, PRIOR, PRIVILEGES, PROCEDURE, PUBLIC,
@@ -368,7 +368,7 @@
 %token			OP
 
 /* precedence: lowest to highest */
-%left		UNION EXCEPT
+%left		UNION EXCEPT MINUS
 %left		INTERSECT
 %left		JOIN UNIONJOIN CROSS LEFT FULL RIGHT INNER_P NATURAL
 %left		OR
@@ -3085,7 +3085,7 @@
 
 /* This rule used 'opt_column_list' between 'relation_name' and 'insert_rest'
  * originally. When the second rule of 'insert_rest' was changed to use the
- * new 'SelectStmt' rule (for INTERSECT and EXCEPT) it produced a shift/reduce
+ * new 'SelectStmt' rule (for INTERSECT, MINUS and EXCEPT) it produced a shift/reduce
  * conflict. So I just changed the rules 'InsertStmt' and 'insert_rest' to
  * accept the same statements without any shift/reduce conflicts
  */
@@ -3329,7 +3329,7 @@
 
 /*
  * This rule parses SELECT statements that can appear within set operations,
- * including UNION, INTERSECT and EXCEPT.  '(' and ')' can be used to specify
+ * including UNION, INTERSECT, MINUS and EXCEPT.  '(' and ')' can be used to specify
  * the ordering of the set operations.  Without '(' and ')' we want the
  * operations to be ordered per the precedence specs at the head of this file.
  *
@@ -3374,6 +3374,7 @@
 				$$ = makeSetOp(SETOP_INTERSECT, $3, $1, $4);
 			}
 		| select_clause EXCEPT opt_all select_clause
+		| select_clause MINUS opt_all select_clause
 			{
 				$$ = makeSetOp(SETOP_EXCEPT, $3, $1, $4);
 			}
@@ -5626,6 +5627,7 @@
 		| LOAD							{ $$ = "load"; }
 		| LOCAL							{ $$ = "local"; }
 		| LOCK_P						{ $$ = "lock"; }
+		| MINUS							{ $$ = "minus"; }
 		| MOVE							{ $$ = "move"; }
 		| NATURAL						{ $$ = "natural"; }
 		| NCHAR							{ $$ = "nchar"; }
Index: src/backend/parser/keywords.c
===================================================================
RCS file: /home/projects/pgsql/cvsroot/pgsql/src/backend/parser/keywords.c,v
retrieving revision 1.89
diff -u -r1.89 keywords.c
--- src/backend/parser/keywords.c	2001/02/21 18:53:46	1.89
+++ src/backend/parser/keywords.c	2001/03/10 14:17:44
@@ -160,6 +160,7 @@
 	{"lock", LOCK_P},
 	{"match", MATCH},
 	{"maxvalue", MAXVALUE},
+	{"minus", MINUS},
 	{"minute", MINUTE_P},
 	{"minvalue", MINVALUE},
 	{"mode", MODE},
