mirror of
https://github.com/postgres/postgres.git
synced 2025-07-31 22:04:40 +03:00
Add a hook in ExecCheckRTPerms().
This hook allows a loadable module to gain control when table permissions are checked. It is expected to be used by an eventual SE-PostgreSQL implementation, but there are other possible applications as well. A sample contrib module can be found in the archives at: http://archives.postgresql.org/pgsql-hackers/2010-05/msg01095.php Robert Haas and Stephen Frost
This commit is contained in:
@ -26,7 +26,7 @@
|
|||||||
*
|
*
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* IDENTIFICATION
|
||||||
* $PostgreSQL: pgsql/src/backend/executor/execMain.c,v 1.349 2010/04/28 16:10:42 heikki Exp $
|
* $PostgreSQL: pgsql/src/backend/executor/execMain.c,v 1.350 2010/07/09 14:06:01 rhaas Exp $
|
||||||
*
|
*
|
||||||
*-------------------------------------------------------------------------
|
*-------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
@ -63,6 +63,9 @@ ExecutorStart_hook_type ExecutorStart_hook = NULL;
|
|||||||
ExecutorRun_hook_type ExecutorRun_hook = NULL;
|
ExecutorRun_hook_type ExecutorRun_hook = NULL;
|
||||||
ExecutorEnd_hook_type ExecutorEnd_hook = NULL;
|
ExecutorEnd_hook_type ExecutorEnd_hook = NULL;
|
||||||
|
|
||||||
|
/* Hook for plugin to get control in ExecCheckRTPerms() */
|
||||||
|
ExecutorCheckPerms_hook_type ExecutorCheckPerms_hook = NULL;
|
||||||
|
|
||||||
/* decls for local routines only used within this module */
|
/* decls for local routines only used within this module */
|
||||||
static void InitPlan(QueryDesc *queryDesc, int eflags);
|
static void InitPlan(QueryDesc *queryDesc, int eflags);
|
||||||
static void ExecEndPlan(PlanState *planstate, EState *estate);
|
static void ExecEndPlan(PlanState *planstate, EState *estate);
|
||||||
@ -416,6 +419,9 @@ ExecCheckRTPerms(List *rangeTable)
|
|||||||
{
|
{
|
||||||
ExecCheckRTEPerms((RangeTblEntry *) lfirst(l));
|
ExecCheckRTEPerms((RangeTblEntry *) lfirst(l));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (ExecutorCheckPerms_hook)
|
||||||
|
(*ExecutorCheckPerms_hook)(rangeTable);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
* Portions Copyright (c) 1996-2010, PostgreSQL Global Development Group
|
* Portions Copyright (c) 1996-2010, PostgreSQL Global Development Group
|
||||||
* Portions Copyright (c) 1994, Regents of the University of California
|
* Portions Copyright (c) 1994, Regents of the University of California
|
||||||
*
|
*
|
||||||
* $PostgreSQL: pgsql/src/include/executor/executor.h,v 1.168 2010/02/26 02:01:24 momjian Exp $
|
* $PostgreSQL: pgsql/src/include/executor/executor.h,v 1.169 2010/07/09 14:06:01 rhaas Exp $
|
||||||
*
|
*
|
||||||
*-------------------------------------------------------------------------
|
*-------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
@ -74,6 +74,10 @@ extern PGDLLIMPORT ExecutorRun_hook_type ExecutorRun_hook;
|
|||||||
typedef void (*ExecutorEnd_hook_type) (QueryDesc *queryDesc);
|
typedef void (*ExecutorEnd_hook_type) (QueryDesc *queryDesc);
|
||||||
extern PGDLLIMPORT ExecutorEnd_hook_type ExecutorEnd_hook;
|
extern PGDLLIMPORT ExecutorEnd_hook_type ExecutorEnd_hook;
|
||||||
|
|
||||||
|
/* Hook for plugins to get control in ExecCheckRTPerms() */
|
||||||
|
typedef void (*ExecutorCheckPerms_hook_type) (List *);
|
||||||
|
extern PGDLLIMPORT ExecutorCheckPerms_hook_type ExecutorCheckPerms_hook;
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* prototypes from functions in execAmi.c
|
* prototypes from functions in execAmi.c
|
||||||
|
Reference in New Issue
Block a user