def relbind(self, db): self.indb = db name = self.name target = self.target = db.get_for_update(name) (attb, relb, amb, ambatts) = db.bindings([(name, name)]) cond = self.condition = self.condition.relbind(attb, db) # compute domain of cond # do nothing with it (should add sanity check) cond_domain = cond.domain() constraints = cond.constraints if constraints is not None: cassns = constraints.assns self.eqs = constraints.eqs else: self.eqs = cassns = None # compute projection/rename from semantics import kjbuckets condatts = kjbuckets.kjGraph(cond.domain().items()).neighbors(name) translate = kjbuckets.kjDict() for att in condatts: translate[(name, att)] = att self.translate = translate invtrans = self.invtrans = ~translate if cassns is not None: self.rassns = invtrans * cassns else: self.rassns = None return self
def relbind(self, db): self.indb = db name = self.name target = self.target = db.get_for_update(name) (attb, relb, amb, ambatts) = db.bindings( [ (name, name) ] ) cond = self.condition = self.condition.relbind(attb, db) # compute domain of cond # do nothing with it (should add sanity check) cond_domain = cond.domain() constraints = cond.constraints if constraints is not None: cassns = constraints.assns self.eqs = constraints.eqs else: self.eqs = cassns = None # compute projection/rename from semantics import kjbuckets condatts = kjbuckets.kjGraph(cond.domain().items()).neighbors(name) translate = kjbuckets.kjDict() for att in condatts: translate[(name, att)] = att self.translate = translate invtrans = self.invtrans = ~translate if cassns is not None: self.rassns = invtrans * cassns else: self.rassns = None return self
def eval(self, dyn=None): if dyn: from semantics import dynamic_binding dynbt = dynamic_binding(len(dyn), dyn) else: # dummy value to prevent triviality from semantics import kjbuckets dynbt = [kjbuckets.kjDict(Insert_dummy_arg)] #print "bindings", dynbt.assns return dynbt # ??
def relbind(self, db): self.indb = db name = self.name target = self.target = db.get_for_update(name) (attb, relb, amb, ambatts) = db.bindings([(name, name)]) assns = self.assns = self.assns.relbind(attb, db) cond = self.condition = self.condition.relbind(attb, db) constraints = cond.constraints if constraints is not None: eqs = self.eqs = constraints.eqs cassns = constraints.assns else: cassns = eqs = self.eqs = None #print constraints, eqs # check that atts of assns are atts of target #print dir(assns) resultatts = assns.attorder from semantics import kjbuckets kjSet = kjbuckets.kjSet kjGraph = kjbuckets.kjGraph resultatts = kjSet(resultatts) allatts = kjSet(target.attribute_names) self.preserved = allatts - resultatts huh = resultatts - allatts if huh: raise NameError, "%s lacks %s attributes" % (name, huh.items()) # compute projection assnsatts = kjGraph(assns.domain().items()).neighbors(name) condatts = kjGraph(cond.domain().items()).neighbors(name) condatts = condatts + assnsatts #print "condatts", condatts translate = kjbuckets.kjDict() for att in condatts: translate[(name, att)] = att self.translate = translate invtrans = self.invtrans = ~translate if cassns is not None: self.rassns = invtrans * cassns else: self.rassns = None #print "cassns,rassns", cassns, self.rassns #print translate # compute domain of self.assns # (do nothing with it, should add sanity check!) assns_domain = self.assns.domain() return self
def relbind(self, db): self.indb = db name = self.name target = self.target = db.get_for_update(name) (attb, relb, amb, ambatts) = db.bindings( [ (name, name) ] ) assns = self.assns = self.assns.relbind(attb, db) cond = self.condition = self.condition.relbind(attb, db) constraints = cond.constraints if constraints is not None: eqs = self.eqs = constraints.eqs cassns = constraints.assns else: cassns = eqs = self.eqs = None #print constraints, eqs # check that atts of assns are atts of target #print dir(assns) resultatts = assns.attorder from semantics import kjbuckets kjSet = kjbuckets.kjSet kjGraph = kjbuckets.kjGraph resultatts = kjSet(resultatts) allatts = kjSet(target.attribute_names) self.preserved = allatts - resultatts huh = resultatts - allatts if huh: raise NameError, "%s lacks %s attributes" % (name, huh.items()) # compute projection assnsatts = kjGraph(assns.domain().items()).neighbors(name) condatts = kjGraph(cond.domain().items()).neighbors(name) condatts = condatts+assnsatts #print "condatts", condatts translate = kjbuckets.kjDict() for att in condatts: translate[ (name, att) ] = att self.translate = translate invtrans= self.invtrans = ~translate if cassns is not None: self.rassns = invtrans * cassns else: self.rassns = None #print "cassns,rassns", cassns, self.rassns #print translate # compute domain of self.assns # (do nothing with it, should add sanity check!) assns_domain = self.assns.domain() return self