Esempio n. 1
0
 def eval(self, dyn=None):
     if dyn:
         from sqlsem import dynamic_binding
         dynbt = dynamic_binding(len(dyn), dyn)
     else:
         # dummy value to prevent triviality
         from sqlsem import kjbuckets
         dynbt = [kjbuckets.kjDict(Insert_dummy_arg)]
     #print "bindings", dynbt.assns
     return dynbt  # ??
Esempio n. 2
0
 def eval(self, dyn=None):
     if dyn:
         from sqlsem import dynamic_binding
         dynbt = dynamic_binding(len(dyn), dyn)
     else:
         # dummy value to prevent triviality
         from sqlsem import kjbuckets
         dynbt = [kjbuckets.kjDict(Insert_dummy_arg)]
     #print "bindings", dynbt.assns
     return dynbt # ??
Esempio n. 3
0
def evalcond(cond, eqs, target, dyn, rassns, translate, invtrans):
    """factored out shared op between Update and Delete."""
    if dyn:
        #print "dyn", dyn
        from sqlsem 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)
Esempio n. 4
0
def evalcond(cond, eqs, target, dyn, rassns, translate, invtrans):
    """factored out shared op between Update and Delete."""
    if dyn:
            #print "dyn", dyn
        from sqlsem 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)