diff --git a/src/backend/parser/parse_utilcmd.c b/src/backend/parser/parse_utilcmd.c
index f66af41b1a35c293da414da96b4000b28f15f79a..1fc8c2cbe1eac77eb05094784867f1a4272a67a0 100644
--- a/src/backend/parser/parse_utilcmd.c
+++ b/src/backend/parser/parse_utilcmd.c
@@ -56,7 +56,6 @@
 #include "rewrite/rewriteManip.h"
 #include "utils/acl.h"
 #include "utils/builtins.h"
-#include "utils/guc.h"
 #include "utils/lsyscache.h"
 #include "utils/rel.h"
 #include "utils/syscache.h"
@@ -223,7 +222,7 @@ transformCreateStmt(CreateStmt *stmt, const char *queryString)
 	cxt.blist = NIL;
 	cxt.alist = NIL;
 	cxt.pkey = NULL;
-	cxt.hasoids = default_with_oids;
+	cxt.hasoids = interpretOidsOption(stmt->options, true);
 
 	Assert(!stmt->ofTypename || !stmt->inhRelations);	/* grammar enforces */
 
@@ -282,17 +281,6 @@ transformCreateStmt(CreateStmt *stmt, const char *queryString)
 	 * Output results.
 	 */
 	stmt->tableElts = cxt.columns;
-	/*
-	 * Add WITH/WITHOUT OIDS, if necessary.  A literal statement-specified
-	 * WITH/WITHOUT OIDS will still take precedence because the first
-	 * matching "oids" in "options" is used.
-	 */
-	if (cxt.hasoids && !interpretOidsOption(stmt->options, true))
-		stmt->options = lappend(stmt->options, makeDefElem("oids",
-								(Node *)makeInteger(TRUE)));
-	else if (!cxt.hasoids && interpretOidsOption(stmt->options, true))
-		stmt->options = lappend(stmt->options, makeDefElem("oids",
-								(Node *)makeInteger(FALSE)));
 	stmt->constraints = cxt.ckconstraints;
 
 	result = lappend(cxt.blist, stmt);
@@ -861,8 +849,6 @@ transformTableLikeClause(CreateStmtContext *cxt, TableLikeClause *table_like_cla
 		}
 	}
 
-	cxt->hasoids = relation->rd_rel->relhasoids;
-
 	/*
 	 * Copy CHECK constraints if requested, being careful to adjust attribute
 	 * numbers so they match the child.