diff --git a/src/backend/commands/statscmds.c b/src/backend/commands/statscmds.c
index 54a190722d..81e73d9062 100644
--- a/src/backend/commands/statscmds.c
+++ b/src/backend/commands/statscmds.c
@@ -653,6 +653,11 @@ AlterStatistics(AlterStatsStmt *stmt)
 		return InvalidObjectAddress;
 	}
 
+	/* Must be owner of the existing statistics object */
+	if (!pg_statistics_object_ownercheck(stxoid, GetUserId()))
+		aclcheck_error(ACLCHECK_NOT_OWNER, OBJECT_STATISTIC_EXT,
+					   NameListToString(stmt->defnames));
+
 	/* Search pg_statistic_ext */
 	rel = table_open(StatisticExtRelationId, RowExclusiveLock);
 
@@ -660,11 +665,6 @@ AlterStatistics(AlterStatsStmt *stmt)
 	if (!HeapTupleIsValid(oldtup))
 		elog(ERROR, "cache lookup failed for extended statistics object %u", stxoid);
 
-	/* Must be owner of the existing statistics object */
-	if (!pg_statistics_object_ownercheck(stxoid, GetUserId()))
-		aclcheck_error(ACLCHECK_NOT_OWNER, OBJECT_STATISTIC_EXT,
-					   NameListToString(stmt->defnames));
-
 	/* Build new tuple. */
 	memset(repl_val, 0, sizeof(repl_val));
 	memset(repl_null, false, sizeof(repl_null));