Beispiel #1
0
        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);
            }
        }
Beispiel #2
0
        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());
        }
Beispiel #3
0
 public static void Delete(BPlusTreeLong bpt, string key)
 {
     bpt.RemoveKey(key);
     AllInsertHashtable.Remove(key);
     Check(bpt);
 }
Beispiel #4
0
 public static void Abort(BPlusTreeLong bpt)
 {
     bpt.Abort();
     AllInsertHashtable = (Hashtable)LastCommittedInsertHashtable.Clone();
     Check(bpt);
 }
Beispiel #5
0
 public static void Insert(BPlusTreeLong bpt, string key, long map)
 {
     bpt.Set(key, map);
     AllInsertHashtable[key] = map;
     Check(bpt);
 }