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)
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)
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))
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)
def _makeOne(self): from BTrees.OOBTree import OOBTreePy return OOBTreePy()