logon.c
text/x-c
Filename: logon.c
Type: text/x-c
Part: 1
#include <stdio.h>
#include <math.h>
#include <string.h>
#include <sys/time.h>
#include <unistd.h>
#include <limits.h>
#include "postgres.h"
#include "utils/array.h"
#include "utils/lsyscache.h"
#include "utils/numeric.h"
#include "utils/builtins.h"
#include "utils/memutils.h"
#include "catalog/pg_type.h"
#include "miscadmin.h"
static backend_startup_hook_type prev_backend_startup_hook = NULL;
#ifdef PG_MODULE_MAGIC
PG_MODULE_MAGIC;
#endif
void _PG_init(void);
void _PG_fini(void);
static
void my_startup_hook (pid_t pid, Oid databaseOid,
const char * dbname, const char * username);
/*
* Module load callback
*/
void
_PG_init(void)
{
prev_backend_startup_hook = backend_startup_hook;
backend_startup_hook = &my_startup_hook;
}
void
_PG_fini(void)
{
backend_startup_hook = prev_backend_startup_hook;
}
static
void my_startup_hook (pid_t pid, Oid databaseOid,
const char * dbname, const char * username) {
if (! strcmp(dbname, "testdb")) {
elog(ERROR, "startup hook is failing");
} else {
elog(NOTICE, "startup hook finished OK");
}
}