示例#1
0
    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
示例#2
0
    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 []
示例#3
0
    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 []
示例#4
0
文件: cache.py 项目: HBPSP8Repo/madis
    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