def Filter(self, indexnum, indexname, constraintargs): self.eof = False constraints, orderbys = self.table.consdict[indexname] if self.table.lastcalculatedidx != (constraints, orderbys): self.calculate_indexes(constraints, orderbys) self.table.lastcalculatedidx = (constraints, orderbys) if len(constraints) == 0: self.resultrows = iter(self.table.data) else: self.resultrows = kdtree.query(self.table.kdindex, constraints, constraintargs) if self.table.ordered: self.resultrows = iter( sorted(list(self.resultrows), key=operator.itemgetter(self.table.orderindex))) try: self.row = self.resultrows.next() except KeyboardInterrupt: raise except: self.eof = True
def innerJoin(self, key, constraints, constraintargs, orderbys): try: while self.lastvalue == None or key > self.lastvalue: self.nextGroup() except StopIteration: pass stats = self.statistics[orderbys] if stats[0] != key: stats[0] = key stats[1] = 0 else: stats[1] += 1 try: return kdtree.query(self.ordercaches[orderbys][2][key], constraints, constraintargs) except KeyError: try: window = [] for r in self.ordercaches[orderbys][0][key]: if self.scanRow(r, constraints, constraintargs): window.append(r) return window except KeyError: return []
def Filter(self, indexnum, indexname, constraintargs): self.eof=False constraints, orderbys = self.table.consdict[indexname] if self.table.lastcalculatedidx!=(constraints,orderbys): self.calculate_indexes(constraints,orderbys) self.table.lastcalculatedidx=(constraints,orderbys) if len(constraints)==0: self.resultrows=iter(self.table.data) else: self.resultrows=kdtree.query(self.table.kdindex, constraints, constraintargs) if self.table.ordered: self.resultrows=iter(sorted(list(self.resultrows),key=operator.itemgetter(self.table.orderindex) )) try: self.row=self.resultrows.next() except KeyboardInterrupt: raise except: self.eof=True