diff --git a/src/bin/scripts/pg_isready.c b/src/bin/scripts/pg_isready.c
new file mode 100644
index 4ba257d..59f3d24
*** a/src/bin/scripts/pg_isready.c
--- b/src/bin/scripts/pg_isready.c
*************** help(const char *progname);
*** 20,26 ****
  int
  main(int argc, char **argv)
  {
! 	int c,optindex,opt_index = 2;
  
  	const char *progname;
  
--- 20,26 ----
  int
  main(int argc, char **argv)
  {
! 	int c,opt_index = 0;
  
  	const char *progname;
  
*************** main(int argc, char **argv)
*** 36,42 ****
  	bool quiet = false;
  
  	PGPing rv;
! 	PQconninfoOption *connect_options, *conn_opt_ptr;
  
  	/*
  	 * We accept user and database as options to avoid
--- 36,42 ----
  	bool quiet = false;
  
  	PGPing rv;
! 	PQconninfoOption *connect_options, *conn_opt_ptr, *dbname_options = NULL, *db_opt_ptr = NULL;
  
  	/*
  	 * We accept user and database as options to avoid
*************** main(int argc, char **argv)
*** 57,63 ****
  	set_pglocale_pgservice(argv[0], PG_TEXTDOMAIN("pgscripts"));
  	handle_help_version_opts(argc, argv, progname, help);
  
! 	while ((c = getopt_long(argc, argv, "d:h:p:qt:U:V", long_options, &optindex)) != -1)
  	{
  		switch (c)
  		{
--- 57,63 ----
  	set_pglocale_pgservice(argv[0], PG_TEXTDOMAIN("pgscripts"));
  	handle_help_version_opts(argc, argv, progname, help);
  
! 	while ((c = getopt_long(argc, argv, "d:h:p:qt:U:V", long_options, NULL)) != -1)
  	{
  		switch (c)
  		{
*************** main(int argc, char **argv)
*** 102,137 ****
  	}
  
  	/*
- 	 * Set connection options
- 	 */
- 
- 	keywords[0] = "connect_timeout";
- 	values[0] = connect_timeout;
- 	keywords[1] = "fallback_application_name";
- 	values[1] = progname;
- 	if (pguser)
- 	{
- 		keywords[opt_index] = "user";
- 		values[opt_index] = pguser;
- 		opt_index++;
- 	}
- 	if (pgdbname)
- 	{
- 		keywords[opt_index] = "dbname";
- 		values[opt_index] = pgdbname;
- 		opt_index++;
- 	}
- 
- 	/*
  	 * Get the default host and port so we can display them in our output
  	 */
  	connect_options = PQconndefaults();
  	conn_opt_ptr = connect_options;
  	while (conn_opt_ptr->keyword)
  	{
  		if (strncmp(conn_opt_ptr->keyword, "host", 5) == 0)
  		{
! 			if (pghost)
  			{
  				keywords[opt_index] = conn_opt_ptr->keyword;
  				values[opt_index] = pghost;
--- 102,125 ----
  	}
  
  	/*
  	 * Get the default host and port so we can display them in our output
  	 */
  	connect_options = PQconndefaults();
  	conn_opt_ptr = connect_options;
+ 	if (pgdbname)
+ 	{
+ 		dbname_options = PQconninfoParse(pgdbname, NULL);
+ 		db_opt_ptr = dbname_options;
+ 	}
  	while (conn_opt_ptr->keyword)
  	{
  		if (strncmp(conn_opt_ptr->keyword, "host", 5) == 0)
  		{
! 			if (db_opt_ptr && db_opt_ptr->val)
! 			{
! 				pghost = db_opt_ptr->val;
! 			}
! 			else if (pghost)
  			{
  				keywords[opt_index] = conn_opt_ptr->keyword;
  				values[opt_index] = pghost;
*************** main(int argc, char **argv)
*** 144,150 ****
  		}
  		else if (strncmp(conn_opt_ptr->keyword, "port", 5) == 0)
  		{
! 			if (pgport)
  			{
  				keywords[opt_index] = conn_opt_ptr->keyword;
  				values[opt_index] = pgport;
--- 132,142 ----
  		}
  		else if (strncmp(conn_opt_ptr->keyword, "port", 5) == 0)
  		{
! 			if (db_opt_ptr && db_opt_ptr->val)
! 			{
! 				pgport = db_opt_ptr->val;
! 			}
! 			else if (pgport)
  			{
  				keywords[opt_index] = conn_opt_ptr->keyword;
  				values[opt_index] = pgport;
*************** main(int argc, char **argv)
*** 154,160 ****
--- 146,171 ----
  				pgport = conn_opt_ptr->val;
  		}
  		conn_opt_ptr++;
+ 		if (db_opt_ptr)
+ 			db_opt_ptr++;
  	}
+ 	if (pguser)
+ 	{
+ 		keywords[opt_index] = "user";
+ 		values[opt_index] = pguser;
+ 		opt_index++;
+ 	}
+ 	if (pgdbname)
+ 	{
+ 		keywords[opt_index] = "dbname";
+ 		values[opt_index] = pgdbname;
+ 		opt_index++;
+ 	}
+ 	keywords[opt_index] = "connect_timeout";
+ 	values[opt_index] = connect_timeout;
+ 	opt_index++;
+ 	keywords[opt_index] = "fallback_application_name";
+ 	values[opt_index] = progname;
  
  	rv = PQpingParams(keywords, values, 1);
  
