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 evalcond(cond, eqs, target, dyn, rassns, translate, invtrans): """factored out shared op between Update and Delete.""" if dyn: #print "dyn", dyn from semantics import dynamic_binding dynbind = dynamic_binding(len(dyn), dyn) if len(dynbind) > 1: raise ValueError, "only one dynamic binding allowed for UPDATE" dynbind1 = dynbind = dynbind[0] if eqs is not None: dynbind1 = dynbind.remap(eqs) if dynbind1 is None: # inconsistent return dynbind = dynbind1 + dynbind if rassns is not None: rassns = rassns + invtrans * dynbind if rassns.Clean() is None: # inconsistent return else: rassns = invtrans * dynbind #print "dynbind", dynbind #print "rassn", rassns else: dynbind = None # get tuple set, try to use an index index = None if rassns is not None: known = rassns.keys() index = target.choose_index(known) if index is None: (tuples, seqnums) = target.rows(1) else: #print "using index", index.name (tuples, seqnums) = index.matches(rassns) ltuples = len(tuples) buffer = [0] * ltuples rtups = range(ltuples) for i in rtups: tup = tuples[i] #print tup ttup = translate * tup if dynbind: ttup = (ttup + dynbind).Clean() if ttup is not None: buffer[i] = ttup #print "buffer", buffer #print "cond", cond #for x in buffer: #print "before", x test = cond(buffer) #print "test", test return (test, rtups, seqnums, tuples)
def evalcond(cond, eqs, target, dyn, rassns, translate, invtrans): """factored out shared op between Update and Delete.""" if dyn: #print "dyn", dyn from semantics import dynamic_binding dynbind = dynamic_binding(len(dyn), dyn) if len(dynbind)>1: raise ValueError, "only one dynamic binding allowed for UPDATE" dynbind1 = dynbind = dynbind[0] if eqs is not None: dynbind1 = dynbind.remap(eqs) if dynbind1 is None: # inconsistent return dynbind = dynbind1 + dynbind if rassns is not None: rassns = rassns + invtrans * dynbind if rassns.Clean() is None: # inconsistent return else: rassns = invtrans * dynbind #print "dynbind", dynbind #print "rassn", rassns else: dynbind = None # get tuple set, try to use an index index = None if rassns is not None: known = rassns.keys() index = target.choose_index(known) if index is None: (tuples, seqnums) = target.rows(1) else: #print "using index", index.name (tuples, seqnums) = index.matches(rassns) ltuples = len(tuples) buffer = [0] * ltuples rtups = range(ltuples) for i in rtups: tup = tuples[i] #print tup ttup = translate * tup if dynbind: ttup = (ttup + dynbind).Clean() if ttup is not None: buffer[i] = ttup #print "buffer", buffer #print "cond", cond #for x in buffer: #print "before", x test = cond(buffer) #print "test", test return (test, rtups, seqnums, tuples)