diff --git a/src/backend/parser/gram.y b/src/backend/parser/gram.y
index 07cc81e..af47a01 100644
--- a/src/backend/parser/gram.y
+++ b/src/backend/parser/gram.y
@@ -644,7 +644,7 @@ static Node *makeRecursiveViewSelect(char *relname, List *aliases, Node *query);
 
 	MAPPING MATCH MATERIALIZED MAXVALUE METHOD MINUTE_P MINVALUE MODE MONTH_P MOVE
 
-	NAME_P NAMES NATIONAL NATURAL NCHAR NEW NEXT NO NONE
+	NAME_P NAMES NATIONAL NATURAL NCHAR NEW NEXT NO NODROP NONE
 	NOT NOTHING NOTIFY NOTNULL NOWAIT NULL_P NULLIF
 	NULLS_P NUMERIC
 
@@ -9190,19 +9190,9 @@ DropSubscriptionStmt: DROP SUBSCRIPTION name opt_drop_slot
 		;
 
 opt_drop_slot:
-			IDENT SLOT
-				{
-					if (strcmp($1, "drop") == 0)
-						$$ = TRUE;
-					else if (strcmp($1, "nodrop") == 0)
-						$$ = FALSE;
-					else
-						ereport(ERROR,
-								(errcode(ERRCODE_SYNTAX_ERROR),
-								 errmsg("unrecognized option \"%s\"", $1),
-										parser_errposition(@1)));
-				}
-			| /*EMPTY*/								{ $$ = TRUE; }
+				DROP SLOT							{ $$ = TRUE; }
+				| NODROP SLOT						{ $$ = FALSE; }
+				| /* EMPTY */						{ $$ = TRUE; }
 		;
 
 /*****************************************************************************
@@ -14441,6 +14431,7 @@ unreserved_keyword:
 			| NEW
 			| NEXT
 			| NO
+			| NODROP
 			| NOTHING
 			| NOTIFY
 			| NOWAIT
diff --git a/src/include/parser/kwlist.h b/src/include/parser/kwlist.h
index 985d650..f7bbe71 100644
--- a/src/include/parser/kwlist.h
+++ b/src/include/parser/kwlist.h
@@ -256,6 +256,7 @@ PG_KEYWORD("nchar", NCHAR, COL_NAME_KEYWORD)
 PG_KEYWORD("new", NEW, UNRESERVED_KEYWORD)
 PG_KEYWORD("next", NEXT, UNRESERVED_KEYWORD)
 PG_KEYWORD("no", NO, UNRESERVED_KEYWORD)
+PG_KEYWORD("nodrop", NODROP, UNRESERVED_KEYWORD)
 PG_KEYWORD("none", NONE, COL_NAME_KEYWORD)
 PG_KEYWORD("not", NOT, RESERVED_KEYWORD)
 PG_KEYWORD("nothing", NOTHING, UNRESERVED_KEYWORD)
