void test( uint64_t n ) { DBCore core; core.WipeDatabase(); // Wipe old sql schema and data to get consistent records // Then create new sql schema, just containing large strings, currently // this is not perfectly tied together anyways, so insert does not // care that our records are not correct, but we still need a relation // before we can get a segment for that relation // (Mb we should make segments that are not bound to a relation at some // point) std::string sql = "create table dbtest ( strentry char(5000), primary key (strentry));"; core.AddRelationsFromString( sql ); uint64_t segmentId = core.GetSegmentOfIndex( "dbtest", "strentry" ); BPTree<T, CMP> bTree( core, *core.GetBufferManager(), segmentId ); // Insert values for ( uint64_t i = 0; i < n; ++i ) { bTree.Insert( getKey<T>( i ), static_cast<TID>(i*i) ); } uint32_t btreeSize = bTree.GetSize(); assert( btreeSize == n ); // Check if they can be retrieved for ( uint64_t i = 0; i < n; ++i ) { std::pair<bool, TID> foundTID; foundTID = bTree.Lookup( getKey<T>( i ) ); assert( foundTID.first ); assert( foundTID.second == i*i ); } // Delete some values for ( uint64_t i = 0; i < n; ++i ) if ( (i % 7) == 0 ) bTree.Erase( getKey<T>( i ) ); // Check if the right ones have been deleted for ( uint64_t i = 0; i < n; ++i ) { std::pair<bool, TID> foundTID; foundTID = bTree.Lookup( getKey<T>( i ) ); if ( (i % 7) == 0 ) { assert( !foundTID.first ); } else { assert( foundTID.first ); assert( foundTID.second == i*i ); } } // Delete everything for ( uint64_t i = 0; i < n; ++i ) bTree.Erase( getKey<T>( i ) ); assert( bTree.GetSize() == 0 ); }
void test(uint64_t n) { // Set up stuff, you probably have to change something here to match to your interfaces BufferManager bm; // ... BTree<T, CMP> bTree(segment); // Insert values for (uint64_t i=0; i<n; ++i) bTree.insert(getKey<T>(i),static_cast<TID>(i*i)); assert(bTree.size()==n); // Check if they can be retrieved for (uint64_t i=0; i<n; ++i) { TID tid; assert(bTree.lookup(getKey<T>(i),tid)); assert(tid==i*i); } // Delete some values for (uint64_t i=0; i<n; ++i) if ((i%7)==0) bTree.erase(getKey<T>(i)); // Check if the right ones have been deleted for (uint64_t i=0; i<n; ++i) { TID tid; if ((i%7)==0) { assert(!bTree.lookup(getKey<T>(i),tid)); } else { assert(bTree.lookup(getKey<T>(i),tid)); assert(tid==i*i); } } // Delete everything for (uint64_t i=0; i<n; ++i) bTree.erase(getKey<T>(i)); assert(bTree.size()==0); }