202 for etype, var in rqlst.main_variables: |
202 for etype, var in rqlst.main_variables: |
203 step = DeleteEntitiesStep(plan) |
203 step = DeleteEntitiesStep(plan) |
204 step.children += self._sel_variable_step(plan, rqlst, etype, var) |
204 step.children += self._sel_variable_step(plan, rqlst, etype, var) |
205 steps.append(step) |
205 steps.append(step) |
206 for relation in rqlst.main_relations: |
206 for relation in rqlst.main_relations: |
207 step = DeleteRelationsStep(plan, relation.r_type) |
207 rtype = relation.r_type |
|
208 if self.schema[rtype].rule: |
|
209 raise QueryError("'%s' is a computed relation" % rtype) |
|
210 step = DeleteRelationsStep(plan, rtype) |
208 step.children += self._sel_relation_steps(plan, rqlst, relation) |
211 step.children += self._sel_relation_steps(plan, rqlst, relation) |
209 steps.append(step) |
212 steps.append(step) |
210 return steps |
213 return steps |
211 |
214 |
212 def _sel_variable_step(self, plan, rqlst, etype, varref): |
215 def _sel_variable_step(self, plan, rqlst, etype, varref): |
491 else: |
494 else: |
492 result = [[]] |
495 result = [[]] |
493 for i, row in enumerate(result): |
496 for i, row in enumerate(result): |
494 newrow = [] |
497 newrow = [] |
495 for (lhsinfo, rhsinfo, rschema) in self.updatedefs: |
498 for (lhsinfo, rhsinfo, rschema) in self.updatedefs: |
|
499 if rschema.rule: |
|
500 raise QueryError("'%s' is a computed relation" |
|
501 % rschema.type) |
496 lhsval = _handle_relterm(lhsinfo, row, newrow) |
502 lhsval = _handle_relterm(lhsinfo, row, newrow) |
497 rhsval = _handle_relterm(rhsinfo, row, newrow) |
503 rhsval = _handle_relterm(rhsinfo, row, newrow) |
498 if rschema.final or rschema.inlined: |
504 if rschema.final or rschema.inlined: |
499 eid = int(lhsval) |
505 eid = int(lhsval) |
500 try: |
506 try: |