Copy the relation name for error reporting in WCOs
In get_row_security_policies(), we need to make a copy of the relation name when building the WithCheckOptions structure, since RelationGetRelationName just returns a pointer into the local Relation structure. The relation name in the WCO structure is only used for error reporting. Pointed out by Robert and Christian Ullrich, who noted that the buildfarm members with -DCLOBBER_CACHE_ALWAYS were failing.
This commit is contained in:
parent
62420ae7d6
commit
cb087ec03b
@ -259,7 +259,7 @@ get_row_security_policies(Query* root, RangeTblEntry* rte, int rt_index,
|
||||
WithCheckOption *wco;
|
||||
|
||||
wco = (WithCheckOption *) makeNode(WithCheckOption);
|
||||
wco->viewname = RelationGetRelationName(rel);
|
||||
wco->viewname = pstrdup(RelationGetRelationName(rel));
|
||||
wco->qual = (Node *) hook_with_check_expr_restrictive;
|
||||
wco->cascaded = false;
|
||||
*withCheckOptions = lappend(*withCheckOptions, wco);
|
||||
@ -274,7 +274,7 @@ get_row_security_policies(Query* root, RangeTblEntry* rte, int rt_index,
|
||||
WithCheckOption *wco;
|
||||
|
||||
wco = (WithCheckOption *) makeNode(WithCheckOption);
|
||||
wco->viewname = RelationGetRelationName(rel);
|
||||
wco->viewname = pstrdup(RelationGetRelationName(rel));
|
||||
wco->qual = (Node *) rowsec_with_check_expr;
|
||||
wco->cascaded = false;
|
||||
*withCheckOptions = lappend(*withCheckOptions, wco);
|
||||
@ -285,7 +285,7 @@ get_row_security_policies(Query* root, RangeTblEntry* rte, int rt_index,
|
||||
WithCheckOption *wco;
|
||||
|
||||
wco = (WithCheckOption *) makeNode(WithCheckOption);
|
||||
wco->viewname = RelationGetRelationName(rel);
|
||||
wco->viewname = pstrdup(RelationGetRelationName(rel));
|
||||
wco->qual = (Node *) hook_with_check_expr_permissive;
|
||||
wco->cascaded = false;
|
||||
*withCheckOptions = lappend(*withCheckOptions, wco);
|
||||
@ -303,7 +303,7 @@ get_row_security_policies(Query* root, RangeTblEntry* rte, int rt_index,
|
||||
combined_qual_eval = makeBoolExpr(OR_EXPR, combined_quals, -1);
|
||||
|
||||
wco = (WithCheckOption *) makeNode(WithCheckOption);
|
||||
wco->viewname = RelationGetRelationName(rel);
|
||||
wco->viewname = pstrdup(RelationGetRelationName(rel));
|
||||
wco->qual = (Node *) combined_qual_eval;
|
||||
wco->cascaded = false;
|
||||
*withCheckOptions = lappend(*withCheckOptions, wco);
|
||||
|
Loading…
x
Reference in New Issue
Block a user