server/querier.py
changeset 4955 8ddd5e938804
parent 4954 96f67c5be0e6
child 4957 25f20adba80f
equal deleted inserted replaced
4954:96f67c5be0e6 4955:8ddd5e938804
    67                 rdef = eschema.rdef(rschema)
    67                 rdef = eschema.rdef(rschema)
    68             else:
    68             else:
    69                 rdef = rschema.rdef(solution[rel.children[0].name],
    69                 rdef = rschema.rdef(solution[rel.children[0].name],
    70                                     solution[rel.children[1].children[0].name])
    70                                     solution[rel.children[1].children[0].name])
    71             if not user.matching_groups(rdef.get_groups('read')):
    71             if not user.matching_groups(rdef.get_groups('read')):
       
    72                 # XXX rqlexpr not allowed
    72                 raise Unauthorized('read', rel.r_type)
    73                 raise Unauthorized('read', rel.r_type)
    73     localchecks = {}
    74     localchecks = {}
    74     # iterate on defined_vars and not on solutions to ignore column aliases
    75     # iterate on defined_vars and not on solutions to ignore column aliases
    75     for varname in rqlst.defined_vars:
    76     for varname in rqlst.defined_vars:
    76         eschema = schema.eschema(solution[varname])
    77         eschema = schema.eschema(solution[varname])
   282                     if not lcheckdef:
   283                     if not lcheckdef:
   283                         continue
   284                         continue
   284                     myrqlst = select.copy(solutions=lchecksolutions)
   285                     myrqlst = select.copy(solutions=lchecksolutions)
   285                     myunion.append(myrqlst)
   286                     myunion.append(myrqlst)
   286                     # in-place rewrite + annotation / simplification
   287                     # in-place rewrite + annotation / simplification
   287                     lcheckdef = [((varmap, 'X'), rqlexprs)
   288                     lcheckdef = [((var, 'X'), rqlexprs) for var, rqlexprs in lcheckdef]
   288                                  for varmap, rqlexprs in lcheckdef]
       
   289                     rewrite(myrqlst, lcheckdef, lchecksolutions, self.args)
   289                     rewrite(myrqlst, lcheckdef, lchecksolutions, self.args)
   290                     add_noinvariant(noinvariant, restricted, myrqlst, nbtrees)
   290                     add_noinvariant(noinvariant, restricted, myrqlst, nbtrees)
   291                 if () in localchecks:
   291                 if () in localchecks:
   292                     select.set_possible_types(localchecks[()])
   292                     select.set_possible_types(localchecks[()])
   293                     add_types_restriction(self.schema, select)
   293                     add_types_restriction(self.schema, select)