def create_index(self, table, column_number):
        zeros = [None] * table.num_columns
        mask = Bits("")
        mask.build_from_list(zeros[:column_number] + [1] +
                             zeros[column_number:])

        self.tree = OOBTreePy()

        ks = {}
        for rid in table.page_directory:
            r = table.get(rid, mask)
            ks[rid] = r.columns[0]

        self.tree.update(ks)
Exemple #2
0
 def create_index(self, column_number):
     if column_number in self.col_btree:
         return
     print("Create index", column_number)
     zeros = [None] * self.table.num_columns
     mask = Bits("")
     mask.build_from_list(zeros[:column_number] + [1] +
                          zeros[column_number:])
     tree = OOBTreePy()
     ks = {}
     for rid in self.table.page_directory:
         _m = self.table.page_directory[rid]
         if _m.indirection == 0 or _m.indirection > rid:
             #print("ADDING INDEX:",rid)
             r = self.table.get(rid, mask)
             #ks[rid] = r.columns[0]
             ks[r[0]] = [rid]
     tree.update(ks)
     self.col_btree[column_number] = tree
     return True
class Index:
    def __init__(self, table):
        self.tree = None

    """
    # returns the location of all records with the given value
    """

    def locate(self, value):
        return self.tree.values(value)

    """
    # optional: Create index on specific column
    """

    def create_index(self, table, column_number):
        zeros = [None] * table.num_columns
        mask = Bits("")
        mask.build_from_list(zeros[:column_number] + [1] +
                             zeros[column_number:])

        self.tree = OOBTreePy()

        ks = {}
        for rid in table.page_directory:
            r = table.get(rid, mask)
            ks[rid] = r.columns[0]

        self.tree.update(ks)

    """
    # optional: Drop index of specific column
    """

    def drop_index(self, table, column_number):
        self.tree = None

    def get_range(self, l, r):
        return self.tree.values(min=l, max=r)
Exemple #4
0
 def btreeIndex(self, tableName, attr):
     start_time = time.time()
     btreeIdx = OOBTreePy()
     data = self.tables[tableName][1:]
     i = self.find_col_idx(tableName, attr)
     for idx, row in enumerate(data):
         key = float(row[i])
         if key not in btreeIdx:
             btreeIdx[key] = []
         btreeIdx[key].append(idx)
     if tableName not in self.index:
         self.index[tableName] = {}
     self.index[tableName][attr] = btreeIdx
     # print(btreeIdx)
     end_time = time.time()
     print("B tree runs in: %s s" % (end_time - start_time))
Exemple #5
0
 def test_classify_w_tree(self):
     from BTrees.OOBTree import OOBTreePy
     from BTrees.check import TYPE_BTREE
     kind, is_mapping = self._callFUT(OOBTreePy())
     self.assertEqual(kind, TYPE_BTREE)
     self.assertTrue(is_mapping)
 def _makeOne(self, *args):
     from BTrees.OOBTree import OOBTreePy
     return OOBTreePy(*args)
Exemple #7
0
 def _makeOne(self):
     from BTrees.OOBTree import OOBTreePy
     return OOBTreePy()