mirror of
https://github.com/postgres/postgres.git
synced 2025-06-27 23:21:58 +03:00
pgindent run before 6.3 release, with Thomas' requested changes.
This commit is contained in:
@ -6,7 +6,7 @@
|
||||
*
|
||||
*
|
||||
* IDENTIFICATION
|
||||
* $Header: /cvsroot/pgsql/src/backend/rewrite/Attic/locks.c,v 1.8 1998/01/21 04:24:34 momjian Exp $
|
||||
* $Header: /cvsroot/pgsql/src/backend/rewrite/Attic/locks.c,v 1.9 1998/02/26 04:35:15 momjian Exp $
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
@ -28,7 +28,7 @@
|
||||
*/
|
||||
static bool
|
||||
nodeThisLockWasTriggered(Node *node, int varno, AttrNumber attnum,
|
||||
int sublevels_up)
|
||||
int sublevels_up)
|
||||
{
|
||||
if (node == NULL)
|
||||
return FALSE;
|
||||
@ -48,7 +48,7 @@ nodeThisLockWasTriggered(Node *node, int varno, AttrNumber attnum,
|
||||
Expr *expr = (Expr *) node;
|
||||
|
||||
return nodeThisLockWasTriggered((Node *) expr->args, varno,
|
||||
attnum, sublevels_up);
|
||||
attnum, sublevels_up);
|
||||
}
|
||||
break;
|
||||
case T_TargetEntry:
|
||||
@ -56,15 +56,15 @@ nodeThisLockWasTriggered(Node *node, int varno, AttrNumber attnum,
|
||||
TargetEntry *tle = (TargetEntry *) node;
|
||||
|
||||
return nodeThisLockWasTriggered(tle->expr, varno, attnum,
|
||||
sublevels_up);
|
||||
sublevels_up);
|
||||
}
|
||||
break;
|
||||
case T_Aggreg:
|
||||
{
|
||||
Aggreg *agg = (Aggreg *) node;
|
||||
Aggreg *agg = (Aggreg *) node;
|
||||
|
||||
return nodeThisLockWasTriggered(agg->target, varno, attnum,
|
||||
sublevels_up);
|
||||
sublevels_up);
|
||||
}
|
||||
break;
|
||||
case T_List:
|
||||
@ -74,7 +74,7 @@ nodeThisLockWasTriggered(Node *node, int varno, AttrNumber attnum,
|
||||
foreach(l, (List *) node)
|
||||
{
|
||||
if (nodeThisLockWasTriggered(lfirst(l), varno, attnum,
|
||||
sublevels_up))
|
||||
sublevels_up))
|
||||
return TRUE;
|
||||
}
|
||||
return FALSE;
|
||||
@ -82,11 +82,11 @@ nodeThisLockWasTriggered(Node *node, int varno, AttrNumber attnum,
|
||||
break;
|
||||
case T_SubLink:
|
||||
{
|
||||
SubLink *sublink = (SubLink *) node;
|
||||
Query *query = (Query *)sublink->subselect;
|
||||
SubLink *sublink = (SubLink *) node;
|
||||
Query *query = (Query *) sublink->subselect;
|
||||
|
||||
return nodeThisLockWasTriggered(query->qual, varno, attnum,
|
||||
sublevels_up + 1);
|
||||
sublevels_up + 1);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
@ -106,7 +106,7 @@ thisLockWasTriggered(int varno,
|
||||
AttrNumber attnum,
|
||||
Query *parsetree)
|
||||
{
|
||||
|
||||
|
||||
if (nodeThisLockWasTriggered(parsetree->qual, varno, attnum, 0))
|
||||
return true;
|
||||
|
||||
@ -114,14 +114,14 @@ thisLockWasTriggered(int varno,
|
||||
return true;
|
||||
|
||||
return false;
|
||||
|
||||
|
||||
}
|
||||
|
||||
/*
|
||||
* matchLocks -
|
||||
* match the list of locks and returns the matching rules
|
||||
*/
|
||||
List *
|
||||
List *
|
||||
matchLocks(CmdType event,
|
||||
RuleLock *rulelocks,
|
||||
int varno,
|
||||
|
@ -6,7 +6,7 @@
|
||||
*
|
||||
*
|
||||
* IDENTIFICATION
|
||||
* $Header: /cvsroot/pgsql/src/backend/rewrite/rewriteHandler.c,v 1.13 1998/02/25 13:07:18 scrappy Exp $
|
||||
* $Header: /cvsroot/pgsql/src/backend/rewrite/rewriteHandler.c,v 1.14 1998/02/26 04:35:16 momjian Exp $
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
@ -34,13 +34,15 @@
|
||||
#include "utils/acl.h"
|
||||
#include "catalog/pg_shadow.h"
|
||||
|
||||
static void ApplyRetrieveRule(Query *parsetree, RewriteRule *rule,
|
||||
static void
|
||||
ApplyRetrieveRule(Query *parsetree, RewriteRule *rule,
|
||||
int rt_index, int relation_level,
|
||||
Relation relation, int *modified);
|
||||
static List *fireRules(Query *parsetree, int rt_index, CmdType event,
|
||||
static List *
|
||||
fireRules(Query *parsetree, int rt_index, CmdType event,
|
||||
bool *instead_flag, List *locks, List **qual_products);
|
||||
static void QueryRewriteSubLink(Node *node);
|
||||
static List *QueryRewriteOne(Query *parsetree);
|
||||
static List *QueryRewriteOne(Query *parsetree);
|
||||
static List *deepRewriteQuery(Query *parsetree);
|
||||
static void CheckViewPerms(Relation view, List *rtable);
|
||||
|
||||
@ -270,34 +272,30 @@ ApplyRetrieveRule(Query *parsetree,
|
||||
if (rule->actions)
|
||||
{
|
||||
if (length(rule->actions) > 1) /* ??? because we don't handle
|
||||
* rules with more than one
|
||||
* action? -ay */
|
||||
* rules with more than one
|
||||
* action? -ay */
|
||||
|
||||
/* WARNING!!!
|
||||
* If we sometimes handle
|
||||
* rules with more than one
|
||||
* action, the view acl checks
|
||||
* might get broken.
|
||||
* viewAclOverride should only
|
||||
* become true (below) if this
|
||||
* is a relation_level, instead,
|
||||
* select query - Jan
|
||||
*/
|
||||
/*
|
||||
* WARNING!!! If we sometimes handle rules with more than one
|
||||
* action, the view acl checks might get broken.
|
||||
* viewAclOverride should only become true (below) if this is
|
||||
* a relation_level, instead, select query - Jan
|
||||
*/
|
||||
return;
|
||||
rule_action = copyObject(lfirst(rule->actions));
|
||||
nothing = FALSE;
|
||||
|
||||
/*
|
||||
* If this rule is on the relation level, the rule action
|
||||
* is a select and the rule is instead then it must be
|
||||
* a view. Permissions for views now follow the owner of
|
||||
* the view, not the current user.
|
||||
* If this rule is on the relation level, the rule action is a
|
||||
* select and the rule is instead then it must be a view.
|
||||
* Permissions for views now follow the owner of the view, not the
|
||||
* current user.
|
||||
*/
|
||||
if (relation_level && rule_action->commandType == CMD_SELECT
|
||||
&& rule->isInstead)
|
||||
&& rule->isInstead)
|
||||
{
|
||||
CheckViewPerms(relation, rule_action->rtable);
|
||||
viewAclOverride = TRUE;
|
||||
CheckViewPerms(relation, rule_action->rtable);
|
||||
viewAclOverride = TRUE;
|
||||
}
|
||||
}
|
||||
else
|
||||
@ -320,8 +318,9 @@ ApplyRetrieveRule(Query *parsetree,
|
||||
|
||||
if (viewAclOverride)
|
||||
{
|
||||
List *rule_rtable, *rule_rt;
|
||||
RangeTblEntry *rte;
|
||||
List *rule_rtable,
|
||||
*rule_rt;
|
||||
RangeTblEntry *rte;
|
||||
|
||||
rule_rtable = copyObject(rule_action->rtable);
|
||||
foreach(rule_rt, rule_rtable)
|
||||
@ -329,8 +328,8 @@ ApplyRetrieveRule(Query *parsetree,
|
||||
rte = lfirst(rule_rt);
|
||||
|
||||
/*
|
||||
* tell the executor that the ACL check on this
|
||||
* range table entry is already done
|
||||
* tell the executor that the ACL check on this range table
|
||||
* entry is already done
|
||||
*/
|
||||
rte->skipAcl = true;
|
||||
}
|
||||
@ -655,8 +654,8 @@ RewriteQuery(Query *parsetree, bool *instead_flag, List **qual_products)
|
||||
Query *other;
|
||||
|
||||
/*
|
||||
* ApplyRetrieveRule changes the range table
|
||||
* XXX Unions are copied again.
|
||||
* ApplyRetrieveRule changes the range table XXX Unions are copied
|
||||
* again.
|
||||
*/
|
||||
other = copyObject(parsetree);
|
||||
|
||||
@ -681,7 +680,7 @@ static int numQueryRewriteInvoked = 0;
|
||||
* rewrite one query via QueryRewrite system, possibly returning 0, or many
|
||||
* queries
|
||||
*/
|
||||
List *
|
||||
List *
|
||||
QueryRewrite(Query *parsetree)
|
||||
{
|
||||
|
||||
@ -712,7 +711,7 @@ QueryRewriteSubLink(Node *node)
|
||||
{
|
||||
Expr *expr = (Expr *) node;
|
||||
|
||||
QueryRewriteSubLink((Node *)expr->args);
|
||||
QueryRewriteSubLink((Node *) expr->args);
|
||||
}
|
||||
break;
|
||||
case T_Var:
|
||||
@ -727,15 +726,15 @@ QueryRewriteSubLink(Node *node)
|
||||
break;
|
||||
case T_SubLink:
|
||||
{
|
||||
SubLink *sublink = (SubLink *) node;
|
||||
Query *query = (Query *)sublink->subselect;
|
||||
List *ret;
|
||||
SubLink *sublink = (SubLink *) node;
|
||||
Query *query = (Query *) sublink->subselect;
|
||||
List *ret;
|
||||
|
||||
/*
|
||||
* Nest down first. We do this so if a rewrite adds a
|
||||
* SubLink we don't process it as part of this loop.
|
||||
* Nest down first. We do this so if a rewrite adds a
|
||||
* SubLink we don't process it as part of this loop.
|
||||
*/
|
||||
QueryRewriteSubLink((Node *)query->qual);
|
||||
QueryRewriteSubLink((Node *) query->qual);
|
||||
|
||||
ret = QueryRewriteOne(query);
|
||||
if (!ret)
|
||||
@ -743,7 +742,7 @@ QueryRewriteSubLink(Node *node)
|
||||
else if (lnext(ret) == NIL)
|
||||
sublink->subselect = lfirst(ret);
|
||||
else
|
||||
elog(ERROR,"Don't know how to process subquery that rewrites to multiple queries.");
|
||||
elog(ERROR, "Don't know how to process subquery that rewrites to multiple queries.");
|
||||
}
|
||||
break;
|
||||
default:
|
||||
@ -757,7 +756,7 @@ QueryRewriteSubLink(Node *node)
|
||||
* QueryOneRewrite -
|
||||
* rewrite one query
|
||||
*/
|
||||
static List *
|
||||
static List *
|
||||
QueryRewriteOne(Query *parsetree)
|
||||
{
|
||||
numQueryRewriteInvoked = 0;
|
||||
@ -813,8 +812,8 @@ CheckViewPerms(Relation view, List *rtable)
|
||||
{
|
||||
HeapTuple utup;
|
||||
NameData uname;
|
||||
List *rt;
|
||||
RangeTblEntry *rte;
|
||||
List *rt;
|
||||
RangeTblEntry *rte;
|
||||
int32 aclcheck_res;
|
||||
|
||||
/*
|
||||
@ -824,19 +823,19 @@ CheckViewPerms(Relation view, List *rtable)
|
||||
if (!HeapTupleIsValid(utup))
|
||||
{
|
||||
elog(ERROR, "cache lookup for userid %d failed",
|
||||
view->rd_rel->relowner);
|
||||
view->rd_rel->relowner);
|
||||
}
|
||||
StrNCpy(uname.data,
|
||||
((Form_pg_shadow) GETSTRUCT(utup))->usename.data,
|
||||
NAMEDATALEN);
|
||||
|
||||
/*
|
||||
* check that we have read access to all the
|
||||
* classes in the range table of the view
|
||||
* check that we have read access to all the classes in the range
|
||||
* table of the view
|
||||
*/
|
||||
foreach(rt, rtable)
|
||||
{
|
||||
rte = (RangeTblEntry *)lfirst(rt);
|
||||
rte = (RangeTblEntry *) lfirst(rt);
|
||||
|
||||
aclcheck_res = pg_aclcheck(rte->relname, uname.data, ACL_RD);
|
||||
if (aclcheck_res != ACLCHECK_OK)
|
||||
@ -845,6 +844,3 @@ CheckViewPerms(Relation view, List *rtable)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
@ -6,7 +6,7 @@
|
||||
*
|
||||
*
|
||||
* IDENTIFICATION
|
||||
* $Header: /cvsroot/pgsql/src/backend/rewrite/rewriteManip.c,v 1.12 1998/02/10 04:02:02 momjian Exp $
|
||||
* $Header: /cvsroot/pgsql/src/backend/rewrite/rewriteManip.c,v 1.13 1998/02/26 04:35:17 momjian Exp $
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
@ -28,8 +28,9 @@
|
||||
#include "nodes/plannodes.h"
|
||||
#include "optimizer/clauses.h"
|
||||
|
||||
static void ResolveNew(RewriteInfo *info, List *targetlist,
|
||||
Node **node, int sublevels_up);
|
||||
static void
|
||||
ResolveNew(RewriteInfo *info, List *targetlist,
|
||||
Node **node, int sublevels_up);
|
||||
|
||||
|
||||
|
||||
@ -49,7 +50,7 @@ OffsetVarNodes(Node *node, int offset)
|
||||
break;
|
||||
case T_Aggreg:
|
||||
{
|
||||
Aggreg *agg = (Aggreg *) node;
|
||||
Aggreg *agg = (Aggreg *) node;
|
||||
|
||||
OffsetVarNodes(agg->target, offset);
|
||||
}
|
||||
@ -101,7 +102,7 @@ ChangeVarNodes(Node *node, int old_varno, int new_varno, int sublevels_up)
|
||||
break;
|
||||
case T_Aggreg:
|
||||
{
|
||||
Aggreg *agg = (Aggreg *) node;
|
||||
Aggreg *agg = (Aggreg *) node;
|
||||
|
||||
ChangeVarNodes(agg->target, old_varno, new_varno, sublevels_up);
|
||||
}
|
||||
@ -135,11 +136,11 @@ ChangeVarNodes(Node *node, int old_varno, int new_varno, int sublevels_up)
|
||||
break;
|
||||
case T_SubLink:
|
||||
{
|
||||
SubLink *sublink = (SubLink *) node;
|
||||
Query *query = (Query *)sublink->subselect;
|
||||
SubLink *sublink = (SubLink *) node;
|
||||
Query *query = (Query *) sublink->subselect;
|
||||
|
||||
ChangeVarNodes((Node *)query->qual, old_varno, new_varno,
|
||||
sublevels_up + 1);
|
||||
ChangeVarNodes((Node *) query->qual, old_varno, new_varno,
|
||||
sublevels_up + 1);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
@ -247,7 +248,7 @@ FindMatchingTLEntry(List *tlist, char *e_attname)
|
||||
|
||||
static void
|
||||
ResolveNew(RewriteInfo *info, List *targetlist, Node **nodePtr,
|
||||
int sublevels_up)
|
||||
int sublevels_up)
|
||||
{
|
||||
Node *node = *nodePtr;
|
||||
|
||||
@ -258,21 +259,21 @@ ResolveNew(RewriteInfo *info, List *targetlist, Node **nodePtr,
|
||||
{
|
||||
case T_TargetEntry:
|
||||
ResolveNew(info, targetlist, &((TargetEntry *) node)->expr,
|
||||
sublevels_up);
|
||||
sublevels_up);
|
||||
break;
|
||||
case T_Aggreg:
|
||||
ResolveNew(info, targetlist, &((Aggreg *) node)->target,
|
||||
sublevels_up);
|
||||
sublevels_up);
|
||||
break;
|
||||
case T_Expr:
|
||||
ResolveNew(info, targetlist, (Node **) (&(((Expr *) node)->args)),
|
||||
sublevels_up);
|
||||
sublevels_up);
|
||||
break;
|
||||
case T_Var:
|
||||
{
|
||||
int this_varno = (int) ((Var *) node)->varno;
|
||||
int this_varlevelsup = (int) ((Var *) node)->varlevelsup;
|
||||
Node *n;
|
||||
int this_varno = (int) ((Var *) node)->varno;
|
||||
int this_varlevelsup = (int) ((Var *) node)->varlevelsup;
|
||||
Node *n;
|
||||
|
||||
if (this_varno == info->new_varno &&
|
||||
this_varlevelsup == sublevels_up)
|
||||
@ -304,15 +305,15 @@ ResolveNew(RewriteInfo *info, List *targetlist, Node **nodePtr,
|
||||
|
||||
foreach(l, (List *) node)
|
||||
ResolveNew(info, targetlist, (Node **) &(lfirst(l)),
|
||||
sublevels_up);
|
||||
sublevels_up);
|
||||
break;
|
||||
}
|
||||
case T_SubLink:
|
||||
{
|
||||
SubLink *sublink = (SubLink *) node;
|
||||
Query *query = (Query *)sublink->subselect;
|
||||
SubLink *sublink = (SubLink *) node;
|
||||
Query *query = (Query *) sublink->subselect;
|
||||
|
||||
ResolveNew(info, targetlist, (Node **)&(query->qual), sublevels_up + 1);
|
||||
ResolveNew(info, targetlist, (Node **) &(query->qual), sublevels_up + 1);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
@ -350,17 +351,17 @@ nodeHandleRIRAttributeRule(Node **nodePtr,
|
||||
TargetEntry *tle = (TargetEntry *) node;
|
||||
|
||||
nodeHandleRIRAttributeRule(&tle->expr, rtable, targetlist,
|
||||
rt_index, attr_num, modified, badsql,
|
||||
sublevels_up);
|
||||
rt_index, attr_num, modified, badsql,
|
||||
sublevels_up);
|
||||
}
|
||||
break;
|
||||
case T_Aggreg:
|
||||
{
|
||||
Aggreg *agg = (Aggreg *) node;
|
||||
Aggreg *agg = (Aggreg *) node;
|
||||
|
||||
nodeHandleRIRAttributeRule(&agg->target, rtable, targetlist,
|
||||
rt_index, attr_num, modified, badsql,
|
||||
sublevels_up);
|
||||
rt_index, attr_num, modified, badsql,
|
||||
sublevels_up);
|
||||
}
|
||||
break;
|
||||
case T_Expr:
|
||||
@ -402,7 +403,7 @@ nodeHandleRIRAttributeRule(Node **nodePtr,
|
||||
if (name_to_look_for.data[0])
|
||||
{
|
||||
Node *n;
|
||||
|
||||
|
||||
n = FindMatchingTLEntry(targetlist, (char *) &name_to_look_for);
|
||||
if (n == NULL)
|
||||
*nodePtr = make_null(((Var *) node)->vartype);
|
||||
@ -422,18 +423,18 @@ nodeHandleRIRAttributeRule(Node **nodePtr,
|
||||
{
|
||||
nodeHandleRIRAttributeRule((Node **) (&(lfirst(i))), rtable,
|
||||
targetlist, rt_index, attr_num,
|
||||
modified, badsql, sublevels_up);
|
||||
modified, badsql, sublevels_up);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case T_SubLink:
|
||||
{
|
||||
SubLink *sublink = (SubLink *) node;
|
||||
Query *query = (Query *)sublink->subselect;
|
||||
SubLink *sublink = (SubLink *) node;
|
||||
Query *query = (Query *) sublink->subselect;
|
||||
|
||||
nodeHandleRIRAttributeRule((Node **)&(query->qual), rtable, targetlist,
|
||||
rt_index, attr_num, modified, badsql,
|
||||
sublevels_up + 1);
|
||||
nodeHandleRIRAttributeRule((Node **) &(query->qual), rtable, targetlist,
|
||||
rt_index, attr_num, modified, badsql,
|
||||
sublevels_up + 1);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
@ -455,7 +456,7 @@ HandleRIRAttributeRule(Query *parsetree,
|
||||
int *modified,
|
||||
int *badsql)
|
||||
{
|
||||
|
||||
|
||||
nodeHandleRIRAttributeRule((Node **) (&(parsetree->targetList)), rtable,
|
||||
targetlist, rt_index, attr_num,
|
||||
modified, badsql, 0);
|
||||
@ -470,7 +471,7 @@ nodeHandleViewRule(Node **nodePtr,
|
||||
List *targetlist,
|
||||
int rt_index,
|
||||
int *modified,
|
||||
int sublevels_up)
|
||||
int sublevels_up)
|
||||
{
|
||||
Node *node = *nodePtr;
|
||||
|
||||
@ -489,7 +490,7 @@ nodeHandleViewRule(Node **nodePtr,
|
||||
break;
|
||||
case T_Aggreg:
|
||||
{
|
||||
Aggreg *agg = (Aggreg *) node;
|
||||
Aggreg *agg = (Aggreg *) node;
|
||||
|
||||
nodeHandleViewRule(&(agg->target), rtable, targetlist,
|
||||
rt_index, modified, sublevels_up);
|
||||
@ -512,7 +513,7 @@ nodeHandleViewRule(Node **nodePtr,
|
||||
Node *n;
|
||||
|
||||
if (this_varno == rt_index &&
|
||||
this_varlevelsup == sublevels_up)
|
||||
this_varlevelsup == sublevels_up)
|
||||
{
|
||||
n = FindMatchingTLEntry(targetlist,
|
||||
get_attname(getrelid(this_varno,
|
||||
@ -540,10 +541,10 @@ nodeHandleViewRule(Node **nodePtr,
|
||||
break;
|
||||
case T_SubLink:
|
||||
{
|
||||
SubLink *sublink = (SubLink *) node;
|
||||
Query *query = (Query *)sublink->subselect;
|
||||
SubLink *sublink = (SubLink *) node;
|
||||
Query *query = (Query *) sublink->subselect;
|
||||
|
||||
nodeHandleViewRule((Node **)&(query->qual), rtable, targetlist,
|
||||
nodeHandleViewRule((Node **) &(query->qual), rtable, targetlist,
|
||||
rt_index, modified, sublevels_up + 1);
|
||||
}
|
||||
break;
|
||||
|
@ -7,7 +7,7 @@
|
||||
*
|
||||
*
|
||||
* IDENTIFICATION
|
||||
* $Header: /cvsroot/pgsql/src/backend/rewrite/rewriteRemove.c,v 1.10 1998/01/31 04:38:38 momjian Exp $
|
||||
* $Header: /cvsroot/pgsql/src/backend/rewrite/rewriteRemove.c,v 1.11 1998/02/26 04:35:20 momjian Exp $
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
@ -30,7 +30,7 @@
|
||||
* RewriteGetRuleEventRel
|
||||
*-----------------------------------------------------------------------
|
||||
*/
|
||||
char *
|
||||
char *
|
||||
RewriteGetRuleEventRel(char *rulename)
|
||||
{
|
||||
HeapTuple htp;
|
||||
|
@ -7,7 +7,7 @@
|
||||
*
|
||||
*
|
||||
* IDENTIFICATION
|
||||
* $Header: /cvsroot/pgsql/src/backend/rewrite/rewriteSupport.c,v 1.15 1998/01/31 04:38:39 momjian Exp $
|
||||
* $Header: /cvsroot/pgsql/src/backend/rewrite/rewriteSupport.c,v 1.16 1998/02/26 04:35:21 momjian Exp $
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
@ -58,13 +58,13 @@ RuleIdGetActionInfo(Oid ruleoid, bool *instead_flag, Query **parseTrees)
|
||||
if (ruletuple == NULL)
|
||||
elog(ERROR, "rule %u isn't in rewrite system relation", ruleoid);
|
||||
|
||||
ruleaction = (char *)heap_getattr(ruletuple,
|
||||
Anum_pg_rewrite_ev_action,
|
||||
ruleTupdesc,
|
||||
&action_is_null);
|
||||
rule_evqual_string = (char *)heap_getattr(ruletuple,
|
||||
Anum_pg_rewrite_ev_qual,
|
||||
ruleTupdesc, &action_is_null);
|
||||
ruleaction = (char *) heap_getattr(ruletuple,
|
||||
Anum_pg_rewrite_ev_action,
|
||||
ruleTupdesc,
|
||||
&action_is_null);
|
||||
rule_evqual_string = (char *) heap_getattr(ruletuple,
|
||||
Anum_pg_rewrite_ev_qual,
|
||||
ruleTupdesc, &action_is_null);
|
||||
*instead_flag = !!heap_getattr(ruletuple,
|
||||
Anum_pg_rewrite_is_instead,
|
||||
ruleTupdesc, &instead_is_null);
|
||||
|
Reference in New Issue
Block a user