Exemplo n.º 1
0
 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
Exemplo n.º 2
0
 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
Exemplo n.º 3
0
 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  # ??
Exemplo n.º 4
0
 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 # ??
Exemplo n.º 5
0
 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
Exemplo n.º 6
0
 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