Check SELECT permissions in subqueries.

This commit is contained in:
Vadim B. Mikheev 1998-02-27 08:43:53 +00:00
parent 472d802ced
commit 1a6de0760d
2 changed files with 15 additions and 12 deletions

View File

@ -26,7 +26,7 @@
* *
* *
* IDENTIFICATION * IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/executor/execMain.c,v 1.44 1998/02/26 04:31:09 momjian Exp $ * $Header: /cvsroot/pgsql/src/backend/executor/execMain.c,v 1.45 1998/02/27 08:43:52 vadim Exp $
* *
*------------------------------------------------------------------------- *-------------------------------------------------------------------------
*/ */
@ -54,12 +54,12 @@
#include "catalog/heap.h" #include "catalog/heap.h"
#include "commands/trigger.h" #include "commands/trigger.h"
void
ExecCheckPerms(CmdType operation, int resultRelation, List *rangeTable,
Query *parseTree);
/* decls for local routines only used within this module */ /* decls for local routines only used within this module */
static void
ExecCheckPerms(CmdType operation, int resultRelation, List *rangeTable,
Query *parseTree);
static TupleDesc static TupleDesc
InitPlan(CmdType operation, Query *parseTree, InitPlan(CmdType operation, Query *parseTree,
Plan *plan, EState *estate); Plan *plan, EState *estate);
@ -273,14 +273,7 @@ ExecutorEnd(QueryDesc *queryDesc, EState *estate)
BufferRefCountRestore(estate->es_refcount); BufferRefCountRestore(estate->es_refcount);
} }
/* =============================================================== void
* ===============================================================
static routines follow
* ===============================================================
* ===============================================================
*/
static void
ExecCheckPerms(CmdType operation, ExecCheckPerms(CmdType operation,
int resultRelation, int resultRelation,
List *rangeTable, List *rangeTable,
@ -376,6 +369,13 @@ ExecCheckPerms(CmdType operation,
} }
} }
/* ===============================================================
* ===============================================================
static routines follow
* ===============================================================
* ===============================================================
*/
/* ---------------------------------------------------------------- /* ----------------------------------------------------------------
* InitPlan * InitPlan

View File

@ -106,11 +106,14 @@ ExecSubPlan(SubPlan *node, List *pvar, ExprContext *econtext)
* *
* ---------------------------------------------------------------- * ----------------------------------------------------------------
*/ */
extern void ExecCheckPerms(CmdType op, int resRel, List *rtable, Query *q);
bool bool
ExecInitSubPlan(SubPlan *node, EState *estate, Plan *parent) ExecInitSubPlan(SubPlan *node, EState *estate, Plan *parent)
{ {
EState *sp_estate = CreateExecutorState(); EState *sp_estate = CreateExecutorState();
ExecCheckPerms (CMD_SELECT, 0, node->rtable, (Query*) NULL);
sp_estate->es_range_table = node->rtable; sp_estate->es_range_table = node->rtable;
sp_estate->es_param_list_info = estate->es_param_list_info; sp_estate->es_param_list_info = estate->es_param_list_info;
sp_estate->es_param_exec_vals = estate->es_param_exec_vals; sp_estate->es_param_exec_vals = estate->es_param_exec_vals;