Index: contrib/dblink/dblink.c
===================================================================
--- contrib/dblink/dblink.c	(HEAD)
+++ contrib/dblink/dblink.c	(working copy)
@@ -2408,7 +2408,7 @@
 		Oid			fdwid = foreign_server->fdwid;
 		Oid			userid = GetUserId();
 
-		user_mapping = GetUserMapping(userid, serverid);
+		user_mapping = GetUserMapping(userid, serverid, true);
 		fdw = GetForeignDataWrapper(fdwid);
 
 		/* Check permissions, user must have usage on the server. */
@@ -2432,7 +2432,7 @@
 							 escape_param_str(strVal(def->arg)));
 		}
 
-		foreach(cell, user_mapping->options)
+		foreach(cell, user_mapping ? user_mapping->options : NIL)
 		{
 
 			DefElem    *def = lfirst(cell);
Index: src/backend/foreign/foreign.c
===================================================================
--- src/backend/foreign/foreign.c	(HEAD)
+++ src/backend/foreign/foreign.c	(working copy)
@@ -212,7 +212,7 @@
  * PUBLIC mappings (userid == InvalidOid).
  */
 UserMapping *
-GetUserMapping(Oid userid, Oid serverid)
+GetUserMapping(Oid userid, Oid serverid, bool missing_ok)
 {
 	Form_pg_user_mapping umform;
 	Datum		datum;
@@ -235,10 +235,15 @@
 	}
 
 	if (!HeapTupleIsValid(tp))
+	{
+		if (missing_ok)
+			return NULL;
+
 		ereport(ERROR,
 				(errcode(ERRCODE_UNDEFINED_OBJECT),
 				 errmsg("user mapping not found for \"%s\"",
 						MappingUserName(userid))));
+	}
 
 	umform = (Form_pg_user_mapping) GETSTRUCT(tp);
 
Index: src/include/foreign/foreign.h
===================================================================
--- src/include/foreign/foreign.h	(HEAD)
+++ src/include/foreign/foreign.h	(working copy)
@@ -63,7 +63,7 @@
 extern ForeignServer *GetForeignServer(Oid serverid);
 extern ForeignServer *GetForeignServerByName(const char *name, bool missing_ok);
 extern Oid	GetForeignServerOidByName(const char *name, bool missing_ok);
-extern UserMapping *GetUserMapping(Oid userid, Oid serverid);
+extern UserMapping *GetUserMapping(Oid userid, Oid serverid, bool missing_ok);
 extern ForeignDataWrapper *GetForeignDataWrapper(Oid fdwid);
 extern ForeignDataWrapper *GetForeignDataWrapperByName(const char *name,
 							bool missing_ok);
