aboutsummaryrefslogtreecommitdiff
path: root/src/test/modules/test_session_hooks/test_session_hooks.c
diff options
context:
space:
mode:
authorAndrew Dunstan <andrew@dunslane.net>2017-11-16 11:35:02 -0500
committerAndrew Dunstan <andrew@dunslane.net>2017-11-16 11:35:02 -0500
commit98d54bb7790d5fb0a77173d5e5e3c655901b472c (patch)
tree6959ce8a9a5dbefdc269966a37b5c0b3d36dc904 /src/test/modules/test_session_hooks/test_session_hooks.c
parent164d6338785b0b6c5a1ac30ee3e4b63bd77441ba (diff)
downloadpostgresql-98d54bb7790d5fb0a77173d5e5e3c655901b472c.tar.gz
postgresql-98d54bb7790d5fb0a77173d5e5e3c655901b472c.zip
Back out the session_start and session_end hooks feature.
It's become apparent during testing that there are problems with at least the testing regime. I don't think we should have it without a working test regime, and the difficulties might indicate implementation problems anyway, so I'm backing out the whole thing until that's sorted out. This reverts commits 7459484 9989f92 cd8ce3a
Diffstat (limited to 'src/test/modules/test_session_hooks/test_session_hooks.c')
-rw-r--r--src/test/modules/test_session_hooks/test_session_hooks.c134
1 files changed, 0 insertions, 134 deletions
diff --git a/src/test/modules/test_session_hooks/test_session_hooks.c b/src/test/modules/test_session_hooks/test_session_hooks.c
deleted file mode 100644
index 4e2eef183e4..00000000000
--- a/src/test/modules/test_session_hooks/test_session_hooks.c
+++ /dev/null
@@ -1,134 +0,0 @@
-/* -------------------------------------------------------------------------
- *
- * test_session_hooks.c
- * Code for testing SESSION hooks.
- *
- * Copyright (c) 2010-2017, PostgreSQL Global Development Group
- *
- * IDENTIFICATION
- * src/test/modules/test_session_hooks/test_session_hooks.c
- *
- * -------------------------------------------------------------------------
- */
-#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"
-
-PG_MODULE_MAGIC;
-
-/* Entry point of library loading/unloading */
-void _PG_init(void);
-void _PG_fini(void);
-
-/* GUC variables */
-static char *session_hook_username = "postgres";
-
-/* Original Hook */
-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 *hook_at)
-{
- const char *username;
-
- StartTransactionCommand();
- SPI_connect();
- PushActiveSnapshot(GetTransactionSnapshot());
-
- username = GetUserNameFromId(GetUserId(), false);
-
- /* Register log just for configured username */
- if (!strcmp(username, session_hook_username))
- {
- const char *dbname;
- int ret;
- StringInfoData buf;
-
- dbname = get_database_name(MyDatabaseId);
-
- 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(ERROR, "SPI_execute failed: error code %d", ret);
- }
-
- SPI_finish();
- PopActiveSnapshot();
- CommitTransactionCommand();
-}
-
-/* sample session start hook function */
-static void
-sample_session_start_hook()
-{
- /* Hook just normal backends */
- if (MyBackendId != InvalidBackendId)
- {
- (void) register_session_hook("START");
-
- if (prev_session_start_hook)
- prev_session_start_hook();
- }
-}
-
-/* sample session end hook function */
-static void
-sample_session_end_hook()
-{
- /* Hook just normal backends */
- if (MyBackendId != InvalidBackendId)
- {
- if (prev_session_end_hook)
- prev_session_end_hook();
-
- (void) register_session_hook("END");
- }
-}
-
-/*
- * Module Load Callback
- */
-void
-_PG_init(void)
-{
- /* Save Hooks for Unload */
- prev_session_start_hook = session_start_hook;
- prev_session_end_hook = session_end_hook;
-
- /* Set New Hooks */
- session_start_hook = sample_session_start_hook;
- session_end_hook = sample_session_end_hook;
-
- /* Load GUCs */
- DefineCustomStringVariable("test_session_hooks.username",
- "Username to register log on session start or end",
- NULL,
- &session_hook_username,
- "postgres",
- PGC_SIGHUP,
- 0, NULL, NULL, NULL);
-}
-
-/*
- * Module Unload Callback
- */
-void
-_PG_fini(void)
-{
- /* Uninstall Hooks */
- session_start_hook = prev_session_start_hook;
- session_end_hook = prev_session_end_hook;
-}