Example #1
0
        public static void Test03()
        {
            var intNode = new InternalNode();

            intNode.AddNode(100, 5);
            intNode.AddNode(101, 10);
            intNode.AddNode(102, 15);
            intNode.AddNode(103, 20);
            intNode.AddNode(104, 25);
            intNode.AddNode(105, 30);
            var split = intNode.Split();

            Console.WriteLine(intNode.GetPageIndexForKey(28));
            Console.WriteLine(split.GetPageIndexForKey(28));
            var leafNode = new LeafNode();

            leafNode.AddDataRow(50, new byte[] { 1 });
            leafNode.AddDataRow(100, new byte[] { 2 });
            leafNode.AddDataRow(150, new byte[] { 3 });
            leafNode.AddDataRow(200, new byte[] { 4 });
            leafNode.AddDataRow(250, new byte[] { 5 });
            leafNode.AddDataRow(300, new byte[] { 6 });
            leafNode.AddDataRow(350, new byte[] { 7 });
            leafNode.AddDataRow(400, new byte[] { 8 });
            Console.WriteLine(leafNode.GetDataRow(350)[0]);
            var leafSplit = leafNode.Split();

            Console.WriteLine(leafNode.GetDataRow(350)[0]);
            Console.WriteLine(leafSplit.GetDataRow(350).ByteCount);
        }
Example #2
0
        // Split off and return the lower half in a new node
        // We split off the lower half so that data about the upper key value of this node does not change
        public InternalNode Split()
        {
            var nodeCount = upperKeyValues.Count / 2;
            var splitKeys = new NodeKey[nodeCount];

            upperKeyValues.CopyTo(splitKeys, 0, nodeCount);
            var splitNode = new InternalNode();

            foreach (var upperKey in splitKeys)
            {
                splitNode.AddNode(nodeIndices[upperKey], upperKey);
                nodeIndices.Remove(upperKey);
                upperKeyValues.Remove(upperKey);
            }

            return(splitNode);
        }
Example #3
0
        public static void Test02()
        {
            var node = new InternalNode();

            node.AddNode(100, 5);
            node.AddNode(101, 10);
            node.AddNode(102, 15);
            node.AddNode(103, 20);
            node.AddNode(104, 25);
            node.AddNode(105, 30);
            node.AddNode(106, 28);
            Console.WriteLine(node.GetPageIndexForKey(18));
            var serialized = node.Serialize();

            node = new InternalNode(5, serialized);
            Console.WriteLine(node.GetPageIndexForKey(18));
        }