Index: src/backend/parser/analyze.c
===================================================================
RCS file: /home/pqcvs/pgsql-server/src/backend/parser/analyze.c,v
retrieving revision 1.283
diff -u -u -r1.283 analyze.c
--- src/backend/parser/analyze.c	1 Aug 2003 00:15:22 -0000	1.283
+++ src/backend/parser/analyze.c	2 Aug 2003 16:01:59 -0000
@@ -949,6 +949,28 @@
 		}
 	}
 
+	/* Check for AUTO_INCREMENT constraint */
+	foreach(clist, column->constraints)
+	{
+		constraint = lfirst(clist);
+		if (IsA(constraint, Constraint) &&
+			constraint->contype == CONSTR_AUTO_INCREMENT) {
+			column->typename->typeid = LookupTypeName(column->typename);
+			if (column->typename->typeid != InvalidOid)
+				column->typename->names = NIL;
+			if (is_serial)
+				elog(WARNING, "both SERIAL and AUTO_INCREMENT specified for column '%s.%s'",
+					 cxt->relation->relname, column->colname);
+			else if (column->typename->typeid != INT4OID)
+				ereport(ERROR,
+						(errcode(ERRCODE_DATATYPE_MISMATCH),
+						 errmsg("AUTO_INCREMENT columns must be of integer type")));
+			else
+				is_serial = true;
+			break;
+		}
+	}
+
 	/* Do necessary work on the column type declaration */
 	transformColumnType(pstate, column);
 
@@ -1112,6 +1134,10 @@
 			case CONSTR_ATTR_DEFERRED:
 			case CONSTR_ATTR_IMMEDIATE:
 				/* transformConstraintAttrs took care of these */
+				break;
+
+		    case CONSTR_AUTO_INCREMENT:
+				/* already processed */
 				break;
 
 			default:
Index: src/backend/parser/gram.y
===================================================================
RCS file: /home/pqcvs/pgsql-server/src/backend/parser/gram.y,v
retrieving revision 2.427
diff -u -u -r2.427 gram.y
--- src/backend/parser/gram.y	19 Jul 2003 20:20:52 -0000	2.427
+++ src/backend/parser/gram.y	2 Aug 2003 12:01:23 -0000
@@ -327,7 +327,7 @@
 /* ordinary key words in alphabetical order */
 %token <keyword> ABORT_P ABSOLUTE_P ACCESS ACTION ADD AFTER
 	AGGREGATE ALL ALTER ANALYSE ANALYZE AND ANY ARRAY AS ASC
-	ASSERTION ASSIGNMENT AT AUTHORIZATION
+	ASSERTION ASSIGNMENT AT AUTHORIZATION AUTO_INCREMENT
 
 	BACKWARD BEFORE BEGIN_P BETWEEN BIGINT BINARY BIT
 	BOOLEAN_P BOTH BY
@@ -1604,6 +1604,12 @@
 					n->fk_del_action	= (char) ($5 & 0xFF);
 					n->deferrable		= FALSE;
 					n->initdeferred		= FALSE;
+					$$ = (Node *)n;
+				}
+			| AUTO_INCREMENT
+				{
+					Constraint *n = makeNode(Constraint);
+					n->contype = CONSTR_AUTO_INCREMENT;
 					$$ = (Node *)n;
 				}
 		;
Index: src/backend/parser/keywords.c
===================================================================
RCS file: /home/pqcvs/pgsql-server/src/backend/parser/keywords.c,v
retrieving revision 1.140
diff -u -u -r1.140 keywords.c
--- src/backend/parser/keywords.c	25 Jun 2003 03:40:18 -0000	1.140
+++ src/backend/parser/keywords.c	2 Aug 2003 12:00:54 -0000
@@ -50,6 +50,7 @@
 	{"assignment", ASSIGNMENT},
 	{"at", AT},
 	{"authorization", AUTHORIZATION},
+	{"auto_increment", AUTO_INCREMENT},
 	{"backward", BACKWARD},
 	{"before", BEFORE},
 	{"begin", BEGIN_P},
