diff --git a/src/backend/tcop/postgres.c b/src/backend/tcop/postgres.c
index 24346fb871..52a964170e 100644
--- a/src/backend/tcop/postgres.c
+++ b/src/backend/tcop/postgres.c
@@ -3861,7 +3861,7 @@ PostgresMain(int argc, char *argv[],
 		PgStartTime = GetCurrentTimestamp();
 
 	if (session_start_hook)
-		(*session_start_hook) (dbname, username);
+		(*session_start_hook) ();
 
 	/*
 	 * POSTGRES main processing loop begins here
diff --git a/src/backend/utils/init/postinit.c b/src/backend/utils/init/postinit.c
index 029eeb40a4..4faad231c4 100644
--- a/src/backend/utils/init/postinit.c
+++ b/src/backend/utils/init/postinit.c
@@ -1160,7 +1160,7 @@ ShutdownPostgres(int code, Datum arg)
 	/* Hook just normal backends */
 	if (session_end_hook && MyBackendId != InvalidBackendId)
 	{
-		(*session_end_hook) (MyProcPort->database_name, MyProcPort->user_name);
+		(*session_end_hook) ();
 
 		/* Make don't leave any active transactions and/or locks behind */
 		AbortOutOfAnyTransaction();
diff --git a/src/include/tcop/tcopprot.h b/src/include/tcop/tcopprot.h
index b7fb8c34b3..9f05bfb4ab 100644
--- a/src/include/tcop/tcopprot.h
+++ b/src/include/tcop/tcopprot.h
@@ -36,10 +36,8 @@ extern int	max_stack_depth;
 extern int	PostAuthDelay;
 
 /* Hook for plugins to get control at start and end of session */
-typedef void (*session_start_hook_type) (const char *dbname,
-										 const char *username);
-typedef void (*session_end_hook_type) (const char *dbname,
-									   const char *username);
+typedef void (*session_start_hook_type) (void);
+typedef void (*session_end_hook_type) (void);
 
 extern PGDLLIMPORT session_start_hook_type session_start_hook;
 extern PGDLLIMPORT session_end_hook_type session_end_hook;
diff --git a/src/test/modules/test_session_hooks/test_session_hooks.c b/src/test/modules/test_session_hooks/test_session_hooks.c
index 96b244fc48..00f17aeec2 100644
--- a/src/test/modules/test_session_hooks/test_session_hooks.c
+++ b/src/test/modules/test_session_hooks/test_session_hooks.c
@@ -13,8 +13,10 @@
 #include "postgres.h"
 
 #include "access/xact.h"
+#include "commands/dbcommands.h"
 #include "executor/spi.h"
 #include "lib/stringinfo.h"
+#include "miscadmin.h"
 #include "tcop/tcopprot.h"
 #include "utils/snapmgr.h"
 #include "utils/builtins.h"
@@ -34,52 +36,57 @@ static session_start_hook_type prev_session_start_hook = NULL;
 static session_end_hook_type prev_session_end_hook = NULL;
 
 static void
-register_session_hook(const char *dbname, const char *username, const char *hook_at)
+register_session_hook(const char *hook_at)
 {
 	int		ret;
 	StringInfoData	buf;
+	const char *dbname;
+	const char *username;
 
-	if (!strcmp(dbname, "session_hook_db"))
-	{
-		StartTransactionCommand();
-		SPI_connect();
-		PushActiveSnapshot(GetTransactionSnapshot());
-		initStringInfo(&buf);
-
-		appendStringInfo(&buf, "INSERT INTO session_hook_log (dbname, username, hook_at) ");
-		appendStringInfo(&buf, "VALUES ('%s', '%s', '%s');",
-			dbname, username, hook_at);
-
-		ret = SPI_exec(buf.data, 0);
-		if (ret != SPI_OK_INSERT)
-			elog(FATAL, "SPI_execute failed: error code %d", ret);
-
-		SPI_finish();
-		PopActiveSnapshot();
-		CommitTransactionCommand();
-	}
+	StartTransactionCommand();
+
+	SPI_connect();
+	PushActiveSnapshot(GetTransactionSnapshot());
+	initStringInfo(&buf);
+
+	dbname = get_database_name(MyDatabaseId);
+	username = GetUserNameFromId(GetUserId(), false);
+
+	elog(LOG, "%s session hook called", hook_at);
+
+	appendStringInfo(&buf, "INSERT INTO session_hook_log (dbname, username, hook_at) ");
+	appendStringInfo(&buf, "VALUES ('%s', '%s', '%s');",
+		dbname, username, hook_at);
+
+	ret = SPI_exec(buf.data, 0);
+	if (ret != SPI_OK_INSERT)
+		elog(FATAL, "SPI_execute failed: error code %d", ret);
+
+	SPI_finish();
+	PopActiveSnapshot();
+	CommitTransactionCommand();
 }
 
 /* sample session start hook function */
 static void
-sample_session_start_hook(const char *dbname, const char *username)
+sample_session_start_hook(void)
 {
 	if (prev_session_start_hook)
-		prev_session_start_hook(dbname, username);
+		prev_session_start_hook();
 
 	if (session_start_hook_enabled)
-		(void) register_session_hook(dbname, username, "START");
+		(void) register_session_hook("START");
 }
 
 /* sample sessoin end hook function */
 static void
-sample_session_end_hook(const char *dbname, const char *username)
+sample_session_end_hook(void)
 {
 	if (prev_session_end_hook)
-		prev_session_end_hook(dbname, username);
+		prev_session_end_hook();
 
 	if (session_end_hook_enabled)
-		(void) register_session_hook(dbname, username, "END");
+		(void) register_session_hook("END");
 }
 
 /*
