aboutsummaryrefslogtreecommitdiff
path: root/src/backend/rewrite/rowsecurity.c
diff options
context:
space:
mode:
authorRobert Haas <rhaas@postgresql.org>2016-06-09 18:02:36 -0400
committerRobert Haas <rhaas@postgresql.org>2016-06-09 18:02:36 -0400
commit4bc424b968058c7f0aa685821d7039e86faac99c (patch)
treea4e245ae67bd11edb3926ff5fb3b0223438ac283 /src/backend/rewrite/rowsecurity.c
parent9164deea2f4ac90ee5e008ff41fc5ad4423887b2 (diff)
downloadpostgresql-4bc424b968058c7f0aa685821d7039e86faac99c.tar.gz
postgresql-4bc424b968058c7f0aa685821d7039e86faac99c.zip
pgindent run for 9.6
Diffstat (limited to 'src/backend/rewrite/rowsecurity.c')
-rw-r--r--src/backend/rewrite/rowsecurity.c96
1 files changed, 50 insertions, 46 deletions
diff --git a/src/backend/rewrite/rowsecurity.c b/src/backend/rewrite/rowsecurity.c
index 970fa33843f..e02911656a3 100644
--- a/src/backend/rewrite/rowsecurity.c
+++ b/src/backend/rewrite/rowsecurity.c
@@ -64,21 +64,21 @@ static void get_policies_for_relation(Relation relation,
static List *sort_policies_by_name(List *policies);
-static int row_security_policy_cmp(const void *a, const void *b);
+static int row_security_policy_cmp(const void *a, const void *b);
static void add_security_quals(int rt_index,
- List *permissive_policies,
- List *restrictive_policies,
- List **securityQuals,
- bool *hasSubLinks);
+ List *permissive_policies,
+ List *restrictive_policies,
+ List **securityQuals,
+ bool *hasSubLinks);
static void add_with_check_options(Relation rel,
- int rt_index,
- WCOKind kind,
- List *permissive_policies,
- List *restrictive_policies,
- List **withCheckOptions,
- bool *hasSubLinks);
+ int rt_index,
+ WCOKind kind,
+ List *permissive_policies,
+ List *restrictive_policies,
+ List **withCheckOptions,
+ bool *hasSubLinks);
static bool check_role_for_policy(ArrayType *policy_roles, Oid user_id);
@@ -163,29 +163,31 @@ get_row_security_policies(Query *root, RangeTblEntry *rte, int rt_index,
rel = heap_open(rte->relid, NoLock);
commandType = rt_index == root->resultRelation ?
- root->commandType : CMD_SELECT;
+ root->commandType : CMD_SELECT;
/*
* In some cases, we need to apply USING policies (which control the
* visibility of records) associated with multiple command types (see
* specific cases below).
*
- * When considering the order in which to apply these USING policies,
- * we prefer to apply higher privileged policies, those which allow the
- * user to lock records (UPDATE and DELETE), first, followed by policies
- * which don't (SELECT).
+ * When considering the order in which to apply these USING policies, we
+ * prefer to apply higher privileged policies, those which allow the user
+ * to lock records (UPDATE and DELETE), first, followed by policies which
+ * don't (SELECT).
*
* Note that the optimizer is free to push down and reorder quals which
* use leakproof functions.
*
* In all cases, if there are no policy clauses allowing access to rows in
- * the table for the specific type of operation, then a single always-false
- * clause (a default-deny policy) will be added (see add_security_quals).
+ * the table for the specific type of operation, then a single
+ * always-false clause (a default-deny policy) will be added (see
+ * add_security_quals).
*/
/*
* For a SELECT, if UPDATE privileges are required (eg: the user has
- * specified FOR [KEY] UPDATE/SHARE), then add the UPDATE USING quals first.
+ * specified FOR [KEY] UPDATE/SHARE), then add the UPDATE USING quals
+ * first.
*
* This way, we filter out any records from the SELECT FOR SHARE/UPDATE
* which the user does not have access to via the UPDATE USING policies,
@@ -232,8 +234,8 @@ get_row_security_policies(Query *root, RangeTblEntry *rte, int rt_index,
* a WHERE clause which involves columns from the relation), we collect up
* CMD_SELECT policies and add them via add_security_quals first.
*
- * This way, we filter out any records which are not visible through an ALL
- * or SELECT USING policy.
+ * This way, we filter out any records which are not visible through an
+ * ALL or SELECT USING policy.
*/
if ((commandType == CMD_UPDATE || commandType == CMD_DELETE) &&
rte->requiredPerms & ACL_SELECT)
@@ -272,9 +274,9 @@ get_row_security_policies(Query *root, RangeTblEntry *rte, int rt_index,
hasSubLinks);
/*
- * Get and add ALL/SELECT policies, if SELECT rights are required
- * for this relation (eg: when RETURNING is used). These are added as
- * WCO policies rather than security quals to ensure that an error is
+ * Get and add ALL/SELECT policies, if SELECT rights are required for
+ * this relation (eg: when RETURNING is used). These are added as WCO
+ * policies rather than security quals to ensure that an error is
* raised if a policy is violated; otherwise, we might end up silently
* dropping rows to be added.
*/
@@ -288,7 +290,7 @@ get_row_security_policies(Query *root, RangeTblEntry *rte, int rt_index,
&select_restrictive_policies);
add_with_check_options(rel, rt_index,
commandType == CMD_INSERT ?
- WCO_RLS_INSERT_CHECK : WCO_RLS_UPDATE_CHECK,
+ WCO_RLS_INSERT_CHECK : WCO_RLS_UPDATE_CHECK,
select_permissive_policies,
select_restrictive_policies,
withCheckOptions,
@@ -324,11 +326,11 @@ get_row_security_policies(Query *root, RangeTblEntry *rte, int rt_index,
hasSubLinks);
/*
- * Get and add ALL/SELECT policies, as WCO_RLS_CONFLICT_CHECK
- * WCOs to ensure they are considered when taking the UPDATE
- * path of an INSERT .. ON CONFLICT DO UPDATE, if SELECT
- * rights are required for this relation, also as WCO policies,
- * again, to avoid silently dropping data. See above.
+ * Get and add ALL/SELECT policies, as WCO_RLS_CONFLICT_CHECK WCOs
+ * to ensure they are considered when taking the UPDATE path of an
+ * INSERT .. ON CONFLICT DO UPDATE, if SELECT rights are required
+ * for this relation, also as WCO policies, again, to avoid
+ * silently dropping data. See above.
*/
if (rte->requiredPerms & ACL_SELECT)
{
@@ -336,7 +338,7 @@ get_row_security_policies(Query *root, RangeTblEntry *rte, int rt_index,
List *conflict_select_restrictive_policies = NIL;
get_policies_for_relation(rel, CMD_SELECT, user_id,
- &conflict_select_permissive_policies,
+ &conflict_select_permissive_policies,
&conflict_select_restrictive_policies);
add_with_check_options(rel, rt_index,
WCO_RLS_CONFLICT_CHECK,
@@ -392,8 +394,8 @@ get_policies_for_relation(Relation relation, CmdType cmd, Oid user_id,
*/
foreach(item, relation->rd_rsdesc->policies)
{
- bool cmd_matches = false;
- RowSecurityPolicy *policy = (RowSecurityPolicy *) lfirst(item);
+ bool cmd_matches = false;
+ RowSecurityPolicy *policy = (RowSecurityPolicy *) lfirst(item);
/* Always add ALL policies, if they exist. */
if (policy->polcmd == '*')
@@ -427,8 +429,8 @@ get_policies_for_relation(Relation relation, CmdType cmd, Oid user_id,
}
/*
- * Add this policy to the list of permissive policies if it
- * applies to the specified role.
+ * Add this policy to the list of permissive policies if it applies to
+ * the specified role.
*/
if (cmd_matches && check_role_for_policy(policy->roles, user_id))
*permissive_policies = lappend(*permissive_policies, policy);
@@ -442,7 +444,7 @@ get_policies_for_relation(Relation relation, CmdType cmd, Oid user_id,
if (row_security_policy_hook_restrictive)
{
List *hook_policies =
- (*row_security_policy_hook_restrictive) (cmd, relation);
+ (*row_security_policy_hook_restrictive) (cmd, relation);
/*
* We sort restrictive policies by name so that any WCOs they generate
@@ -462,7 +464,7 @@ get_policies_for_relation(Relation relation, CmdType cmd, Oid user_id,
if (row_security_policy_hook_permissive)
{
List *hook_policies =
- (*row_security_policy_hook_permissive) (cmd, relation);
+ (*row_security_policy_hook_permissive) (cmd, relation);
foreach(item, hook_policies)
{
@@ -498,6 +500,7 @@ sort_policies_by_name(List *policies)
foreach(item, policies)
{
RowSecurityPolicy *policy = (RowSecurityPolicy *) lfirst(item);
+
pols[ii++] = *policy;
}
@@ -551,8 +554,8 @@ add_security_quals(int rt_index,
Expr *rowsec_expr;
/*
- * First collect up the permissive quals. If we do not find any permissive
- * policies then no rows are visible (this is handled below).
+ * First collect up the permissive quals. If we do not find any
+ * permissive policies then no rows are visible (this is handled below).
*/
foreach(item, permissive_policies)
{
@@ -577,8 +580,8 @@ add_security_quals(int rt_index,
/*
* We now know that permissive policies exist, so we can now add
* security quals based on the USING clauses from the restrictive
- * policies. Since these need to be "AND"d together, we can
- * just add them one at a time.
+ * policies. Since these need to be "AND"d together, we can just add
+ * them one at a time.
*/
foreach(item, restrictive_policies)
{
@@ -608,6 +611,7 @@ add_security_quals(int rt_index,
*securityQuals = list_append_unique(*securityQuals, rowsec_expr);
}
else
+
/*
* A permissive policy must exist for rows to be visible at all.
* Therefore, if there were no permissive policies found, return a
@@ -647,7 +651,7 @@ add_with_check_options(Relation rel,
List *permissive_quals = NIL;
#define QUAL_FOR_WCO(policy) \
- ( kind != WCO_RLS_CONFLICT_CHECK && \
+ ( kind != WCO_RLS_CONFLICT_CHECK && \
(policy)->with_check_qual != NULL ? \
(policy)->with_check_qual : (policy)->qual )
@@ -668,11 +672,11 @@ add_with_check_options(Relation rel,
}
/*
- * There must be at least one permissive qual found or no rows are
- * allowed to be added. This is the same as in add_security_quals.
+ * There must be at least one permissive qual found or no rows are allowed
+ * to be added. This is the same as in add_security_quals.
*
- * If there are no permissive_quals then we fall through and return a single
- * 'false' WCO, preventing all new rows.
+ * If there are no permissive_quals then we fall through and return a
+ * single 'false' WCO, preventing all new rows.
*/
if (permissive_quals != NIL)
{