List *permissive_policies,
List *restrictive_policies,
List **withCheckOptions,
- bool *hasSubLinks);
+ bool *hasSubLinks,
+ bool force_using);
static bool check_role_for_policy(ArrayType *policy_roles, Oid user_id);
permissive_policies,
restrictive_policies,
withCheckOptions,
- hasSubLinks);
+ hasSubLinks,
+ false);
/*
* Get and add ALL/SELECT policies, if SELECT rights are required for
select_permissive_policies,
select_restrictive_policies,
withCheckOptions,
- hasSubLinks);
+ hasSubLinks,
+ true);
}
/*
conflict_permissive_policies,
conflict_restrictive_policies,
withCheckOptions,
- hasSubLinks);
+ hasSubLinks,
+ true);
/*
* Get and add ALL/SELECT policies, as WCO_RLS_CONFLICT_CHECK WCOs
conflict_select_permissive_policies,
conflict_select_restrictive_policies,
withCheckOptions,
- hasSubLinks);
+ hasSubLinks,
+ true);
}
/* Enforce the WITH CHECK clauses of the UPDATE policies */
conflict_permissive_policies,
conflict_restrictive_policies,
withCheckOptions,
- hasSubLinks);
+ hasSubLinks,
+ false);
}
}
List *permissive_policies,
List *restrictive_policies,
List **withCheckOptions,
- bool *hasSubLinks)
+ bool *hasSubLinks,
+ bool force_using)
{
ListCell *item;
List *permissive_quals = NIL;
#define QUAL_FOR_WCO(policy) \
- ( kind != WCO_RLS_CONFLICT_CHECK && \
+ ( !force_using && \
(policy)->with_check_qual != NULL ? \
(policy)->with_check_qual : (policy)->qual )