diff --git a/contrib/dblink/dblink.c b/contrib/dblink/dblink.c
index 71acb35..414ae20 100644
--- a/contrib/dblink/dblink.c
+++ b/contrib/dblink/dblink.c
@@ -100,6 +100,7 @@ static HeapTuple get_tuple_of_interest(Relation rel, int *pkattnums, int pknumat
 static Relation get_rel_from_relname(text *relname_text, LOCKMODE lockmode, AclMode aclmode);
 static char *generate_relation_name(Relation rel);
 static void dblink_connstr_check(const char *connstr);
+static char *dblink_connstr_append(const char *connstr);
 static void dblink_security_check(PGconn *conn, remoteConn *rconn);
 static void dblink_res_error(const char *conname, PGresult *res, const char *dblink_context_msg, bool fail);
 static char *get_connect_string(const char *servername);
@@ -255,6 +256,12 @@ dblink_connect(PG_FUNCTION_ARGS)
 
 	/* check password in connection string if not superuser */
 	dblink_connstr_check(connstr);
+
+	/* check if fallback_application_name doesn't exist then append 
+	 * fallback_application_name='dblink'
+	 */
+	connstr = dblink_connstr_append(connstr);
+    
 	conn = PQconnectdb(connstr);
 
 	if (PQstatus(conn) == CONNECTION_BAD)
@@ -2524,6 +2531,53 @@ dblink_connstr_check(const char *connstr)
 	}
 }
 
+
+/*
+ * To append fallback_application_name in connection string if it
+ * doesn't exist. 
+ * This is to ensure that incase connection string 
+ * doesn't contain application_name, fallback_application_name 'dblink'
+ * can be used to display as application_name at appropriate places.
+ */
+static char *
+dblink_connstr_append(const char *connstr)
+{
+	PQconninfoOption *options;
+	PQconninfoOption *option;
+	bool	connstr_has_fallback_appname = false;
+
+	options = PQconninfoParse(connstr, NULL);
+	if (options)
+	{
+		for (option = options; option->keyword != NULL; option++)
+		{
+			if (strcmp(option->keyword, "fallback_application_name") == 0)
+			{
+				if (option->val != NULL && option->val[0] != '\0')
+				{
+					connstr_has_fallback_appname = true;
+					break;
+				}
+			}
+		}
+		PQconninfoFree(options);
+	}
+
+	if (!connstr_has_fallback_appname)
+	{
+		StringInfo  buf = makeStringInfo();
+
+		appendStringInfo(buf, "%s ", connstr);
+		appendStringInfo(buf, "%s='%s' ", "fallback_application_name", "dblink");
+
+		return buf->data;
+	}
+
+	return connstr;
+}
+
+
+
 static void
 dblink_res_error(const char *conname, PGresult *res, const char *dblink_context_msg, bool fail)
 {
diff --git a/contrib/oid2name/oid2name.c b/contrib/oid2name/oid2name.c
index c7ba1bd..4b3db40 100644
--- a/contrib/oid2name/oid2name.c
+++ b/contrib/oid2name/oid2name.c
@@ -44,6 +44,7 @@ struct options
 	char	   *hostname;
 	char	   *port;
 	char	   *username;
+	char	   *progname;
 };
 
 /* function prototypes */
@@ -80,6 +81,7 @@ get_opts(int argc, char **argv, struct options * my_opts)
 	my_opts->hostname = NULL;
 	my_opts->port = NULL;
 	my_opts->username = NULL;
+	my_opts->progname = progname;
 
 	if (argc > 1)
 	{
@@ -308,14 +310,32 @@ sql_conn(struct options * my_opts)
 	 */
 	do
 	{
+#define PARAMS_ARRAY_SIZE	7
+
+		const char **keywords = myalloc(PARAMS_ARRAY_SIZE * sizeof(*keywords));
+		const char **values   = myalloc(PARAMS_ARRAY_SIZE * sizeof(*values));
+
+		keywords[0] = "host";
+		values[0] = my_opts->hostname;
+		keywords[1] = "port";
+		values[1] = my_opts->port;
+		keywords[2] = "user";
+		values[2] = my_opts->username;
+		keywords[3] = "password";
+		values[3] = password;
+		keywords[4] = "dbname";
+		values[4] = my_opts->dbname;
+		keywords[5] = "fallback_application_name";
+		values[5] = my_opts->progname;
+		keywords[6] = NULL;
+		values[6] = NULL;
+
 		new_pass = false;
-		conn = PQsetdbLogin(my_opts->hostname,
-							my_opts->port,
-							NULL,		/* options */
-							NULL,		/* tty */
-							my_opts->dbname,
-							my_opts->username,
-							password);
+		conn = PQconnectdbParams(keywords, values, true);
+
+		free(keywords);
+		free(values);
+
 		if (!conn)
 		{
 			fprintf(stderr, "%s: could not connect to database %s\n",
diff --git a/contrib/pgbench/pgbench.c b/contrib/pgbench/pgbench.c
index b0e6991..cfdf0f6 100644
--- a/contrib/pgbench/pgbench.c
+++ b/contrib/pgbench/pgbench.c
@@ -146,10 +146,9 @@ int			main_pid;			/* main process id used in log filename */
 
 char	   *pghost = "";
 char	   *pgport = "";
-char	   *pgoptions = NULL;
-char	   *pgtty = NULL;
 char	   *login = NULL;
 char	   *dbName;
+const char *progname;
 
 volatile bool timer_exceeded = false;	/* flag from signal handler */
 
@@ -334,7 +333,7 @@ xstrdup(const char *s)
 
 
 static void
-usage(const char *progname)
+usage(void)
 {
 	printf("%s is a benchmarking tool for PostgreSQL.\n\n"
 		   "Usage:\n"
@@ -424,10 +423,33 @@ doConnect(void)
 	 */
 	do
 	{
+#define PARAMS_ARRAY_SIZE	7
+
+		const char **keywords = xmalloc(PARAMS_ARRAY_SIZE * sizeof(*keywords));
+		const char **values   = xmalloc(PARAMS_ARRAY_SIZE * sizeof(*values));
+
+		keywords[0] = "host";
+		values[0] = pghost;
+		keywords[1] = "port";
+		values[1] = pgport;
+		keywords[2] = "user";
+		values[2] = login;
+		keywords[3] = "password";
+		values[3] = password;
+		keywords[4] = "dbname";
+		values[4] = dbName;
+		keywords[5] = "fallback_application_name";
+		values[5] = progname;
+		keywords[6] = NULL;
+		values[6] = NULL;
+
 		new_pass = false;
 
-		conn = PQsetdbLogin(pghost, pgport, pgoptions, pgtty, dbName,
-							login, password);
+		conn = PQconnectdbParams(keywords, values, true);
+		
+		free(keywords);
+		free(values);
+
 		if (!conn)
 		{
 			fprintf(stderr, "Connection to database \"%s\" failed\n",
@@ -1877,15 +1899,13 @@ main(int argc, char **argv)
 
 	char		val[64];
 
-	const char *progname;
-
 	progname = get_progname(argv[0]);
 
 	if (argc > 1)
 	{
 		if (strcmp(argv[1], "--help") == 0 || strcmp(argv[1], "-?") == 0)
 		{
-			usage(progname);
+			usage();
 			exit(0);
 		}
 		if (strcmp(argv[1], "--version") == 0 || strcmp(argv[1], "-V") == 0)
