{
if (hasSubLinks)
{
+ acquireLocksOnSubLinks_context context;
+
/*
* Recursively process the new quals, checking for infinite
* recursion.
activeRIRs = lcons_oid(RelationGetRelid(rel), activeRIRs);
+ /*
+ * get_row_security_policies just passed back securityQuals
+ * and/or withCheckOptions, and there were SubLinks, make sure
+ * we lock any relations which are referenced.
+ *
+ * These locks would normally be acquired by the parser, but
+ * securityQuals and withCheckOptions are added post-parsing.
+ */
+ context.for_execute = true;
+ (void) acquireLocksOnSubLinks((Node *) securityQuals, &context);
+ (void) acquireLocksOnSubLinks((Node *) withCheckOptions,
+ &context);
+
+ /*
+ * Now that we have the locks on anything added by
+ * get_row_security_policies, fire any RIR rules for them.
+ */
expression_tree_walker((Node *) securityQuals,
fireRIRonSubLink, (void *) activeRIRs);