public static void Check(BPlusTreeLong bpt) { Console.WriteLine(bpt.ToText()); bpt.CheckFreeBlock(); ArrayList allkeys = new ArrayList(); foreach (DictionaryEntry d in AllInsertHashtable) { allkeys.Add(d.Key); } allkeys.Sort(); allkeys.Reverse(); foreach (object thing in allkeys) { string thekey = (string)thing; long thevalue = (long)AllInsertHashtable[thing]; if (thevalue != bpt[thekey]) { throw new ApplicationException("no match on retrieval " + thekey + " --> " + bpt[thekey] + " not " + thevalue); } } allkeys.Reverse(); string currentkey = bpt.FirstKey(); foreach (object thing in allkeys) { string testkey = (string)thing; if (currentkey == null) { throw new ApplicationException("end of keys found when expecting " + testkey); } if (!testkey.Equals(currentkey)) { throw new ApplicationException("when walking found " + currentkey + " when expecting " + testkey); } currentkey = bpt.NextKey(testkey); } }
public static void TestLongTree() { Stream mstream = new FileStream(string.Format(@"{0}\{1}.txt", tempDirectory, DateTime.Now.ToString("HHmmss")), FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.Read); BPlusTreeLong tree = BPlusTreeLong.InitializeInStream(mstream, 0L, keylength, nodesize); Insert(tree, "aaa", 11111); Debug.WriteLine(tree.ToText()); Commit(tree); Debug.WriteLine(tree.ToText()); Insert(tree, "bbb", 22222); Debug.WriteLine(tree.ToText()); Commit(tree); Debug.WriteLine(tree.ToText()); Insert(tree, "ccc", 33333); Debug.WriteLine(tree.ToText()); Commit(tree); Debug.WriteLine(tree.ToText()); Insert(tree, "ddd", 44444); Debug.WriteLine(tree.ToText()); Commit(tree); Debug.WriteLine(tree.ToText()); Insert(tree, "eee", 55555); Debug.WriteLine(tree.ToText()); Commit(tree); Debug.WriteLine(tree.ToText()); Insert(tree, "fff", 66666); Debug.WriteLine(tree.ToText()); Commit(tree); Debug.WriteLine(tree.ToText()); Insert(tree, "ggg", 77777); Debug.WriteLine(tree.ToText()); Commit(tree); Debug.WriteLine(tree.ToText()); Insert(tree, "hhh", 88888); Debug.WriteLine(tree.ToText()); Commit(tree); Debug.WriteLine(tree.ToText()); Insert(tree, "iii", 99999); Debug.WriteLine(tree.ToText()); Commit(tree); Debug.WriteLine(tree.ToText()); Insert(tree, "ggh", 77777); Debug.WriteLine(tree.ToText()); Commit(tree); Debug.WriteLine(tree.ToText()); Insert(tree, "ggi", 77777); Debug.WriteLine(tree.ToText()); Commit(tree); Debug.WriteLine(tree.ToText()); Insert(tree, "ggj", 77777); Debug.WriteLine(tree.ToText()); Commit(tree); Debug.WriteLine(tree.ToText()); Insert(tree, "ggk", 77777); Debug.WriteLine(tree.ToText()); Commit(tree); Debug.WriteLine(tree.ToText()); Debug.WriteLine("aaa" + " " + tree.Get("aaa").ToString()); Debug.WriteLine("bbb" + " " + tree.Get("bbb").ToString()); Debug.WriteLine("ccc" + " " + tree.Get("ccc").ToString()); Debug.WriteLine("ddd" + " " + tree.Get("ddd").ToString()); Delete(tree, "aaa"); Commit(tree); Debug.WriteLine(tree.ToText()); Delete(tree, "bbb"); Commit(tree); Debug.WriteLine(tree.ToText()); Delete(tree, "ccc"); Commit(tree); Debug.WriteLine(tree.ToText()); Delete(tree, "ddd"); Commit(tree); Debug.WriteLine(tree.ToText()); Delete(tree, "eee"); Commit(tree); Debug.WriteLine(tree.ToText()); Delete(tree, "fff"); Commit(tree); Debug.WriteLine(tree.ToText()); Delete(tree, "ggg"); Commit(tree); Debug.WriteLine(tree.ToText()); Delete(tree, "hhh"); Commit(tree); Debug.WriteLine(tree.ToText()); Delete(tree, "iii"); Commit(tree); Debug.WriteLine(tree.ToText()); Delete(tree, "ggh"); Commit(tree); Debug.WriteLine(tree.ToText()); Delete(tree, "ggi"); Commit(tree); Debug.WriteLine(tree.ToText()); Delete(tree, "ggj"); Commit(tree); Debug.WriteLine(tree.ToText()); Delete(tree, "ggk"); Commit(tree); Debug.WriteLine(tree.ToText()); }
public static void Delete(BPlusTreeLong bpt, string key) { bpt.RemoveKey(key); AllInsertHashtable.Remove(key); Check(bpt); }
public static void Abort(BPlusTreeLong bpt) { bpt.Abort(); AllInsertHashtable = (Hashtable)LastCommittedInsertHashtable.Clone(); Check(bpt); }
public static void Insert(BPlusTreeLong bpt, string key, long map) { bpt.Set(key, map); AllInsertHashtable[key] = map; Check(bpt); }