Commit 1a6de076 authored by Vadim B. Mikheev's avatar Vadim B. Mikheev

Check SELECT permissions in subqueries.

parent 472d802c
...@@ -26,7 +26,7 @@ ...@@ -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 @@ ...@@ -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) ...@@ -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, ...@@ -376,6 +369,13 @@ ExecCheckPerms(CmdType operation,
} }
} }
/* ===============================================================
* ===============================================================
static routines follow
* ===============================================================
* ===============================================================
*/
/* ---------------------------------------------------------------- /* ----------------------------------------------------------------
* InitPlan * InitPlan
......
...@@ -106,11 +106,14 @@ ExecSubPlan(SubPlan *node, List *pvar, ExprContext *econtext) ...@@ -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;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment