Next step : completed. I'm now able to get data from many revisions of a B-tree !
Le 1/16/14 7:38 PM, Emmanuel Lécharny a écrit : > Done ! > > It was quite painful, with many small bugs that took a while to fix, due > to the lack of tooling atm (enough said I had to do many hexdump -C > mavibot.db to analyze the content of the file...) > > Here is an exemple of a reformated mavibot.db file after the creation of > a 'test' B-tree and the injection of three elements into it : <3,V3>, > <1,V1> and <5,V5> (test testRecordManagerBrowseWithKeepRevisions) : > > 0000 RMHeader, FirstFreePage = 1A00, CurrentBOB = 1400, CurrentCP = 2000 > 0200 test:1 H -> 0400 > 0400 test:1 RP > 0600 test:2 H -> 0800 > 0800 test:1 RP > 0A00 test:0 H -> 0C00 > 0C00 test:0 RP > 0E00 FP[2] -> 1000 > 1000 FP[3] -| > 1200 BOB:4 rp (0A00, 0200, 0600, 1800) > 1400 BOB:4 H -> 1200 > 1600 test:3 RP > 1800 test:3 H -> 1600 > 1A00 FP[0] -> 1C00 > 1C00 FP[1] -> 0E00 > 1E00 CP:3 RP > 2000 CP:3 H -> 1E00 > > All the useful pages are there, the freePages list is correct, the > management BTrees (BOB and CP) are also correct. > > Here are the content of each page : > > 00000000 00 00 02 00 00 00 00 01 00 00 00 00 00 00 1a 00 > |................| > 00000010 00 00 00 00 00 00 14 00 ff ff ff ff ff ff ff ff > |................| > 00000020 00 00 00 00 00 00 20 00 ff ff ff ff ff ff ff ff |...... > .........| > 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 > |................| > > test:1 H -> 0400 > 00000200 ff ff ff ff ff ff ff ff 00 00 00 aa > 00 00 00 00 00 00 00 01 > 00 00 00 00 00 00 00 01 > 00 00 00 00 00 00 04 00 test:1 RP > > > * > 00000400 ff ff ff ff ff ff ff ff 00 00 00 2e 00 00 00 00 > |................| > 00000410 00 00 00 01 00 00 00 01 00 00 00 1e 00 00 00 01 > |................| > 00000420 00 00 00 0a 00 00 00 06 00 00 00 02 56 33 00 00 > |............V3..| > 00000430 00 08 00 00 00 00 00 00 00 03 00 00 00 00 00 00 > |................| > 00000440 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 > |................| > > test:2 H -> 0800 > 00000600 ff ff ff ff ff ff ff ff 00 00 00 aa > 00 00 00 00 00 00 00 02 > 00 00 00 00 00 00 00 02 > 00 00 00 00 00 00 08 00 > > > test:2 RP > 00000800 ff ff ff ff ff ff ff ff 00 00 00 4c 00 00 00 00 > |...........L....| > 00000810 00 00 00 02 00 00 00 02 00 00 00 3c 00 00 00 01 > |...........<....| > 00000820 00 00 00 0a 00 00 00 06 00 00 00 02 56 31 00 00 > |............V1..| > 00000830 00 08 00 00 00 00 00 00 00 01 00 00 00 01 00 00 > |................| > 00000840 00 0a 00 00 00 06 00 00 00 02 56 33 00 00 00 08 > |..........V3....| > 00000850 00 00 00 00 00 00 00 03 00 00 00 00 00 00 00 00 > |................| > 00000860 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 > |................| > > > test:0 H -> > 00000a00 ff ff ff ff ff ff ff ff 00 00 00 aa > 00 00 00 00 00 00 00 00 > 00 00 00 00 00 00 00 00 > 00 00 00 00 00 00 0c 00 test:0 RP > > > test:0 RP > 00000c00 ff ff ff ff ff ff ff ff 00 00 00 0c 00 00 00 00 > |................| > 00000c10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 > |................| > > > FP[2] -> 1000 > 00000e00 00 00 00 00 00 00 10 00 00 00 00 88 00 00 00 00 > |................| > > > FP[3] -| > 00001000 ff ff ff ff ff ff ff ff 00 00 00 b2 00 00 00 00 > |................| > > > BOB rp r4 > 00001200 ff ff ff ff ff ff ff ff 00 00 00 b0 > 00 00 00 00 00 00 00 04 > 00 00 00 04 > 00 00 00 a0 > 00 00 00 01 > 00 00 00 0c > 00 00 00 08 > 00 00 00 00 00 00 0a 00 test:0 H > 00 00 00 10 > 00 00 00 00 00 00 00 00 > 00 00 00 04 > 74 65 73 74 > 00 00 00 01 > 00 00 00 0c > 00 00 00 08 > 00 00 00 00 00 00 02 00 test:1 H > 00 00 00 10 > 00 00 00 00 00 00 00 01 > 00 00 00 04 > 74 65 73 74 > 00 00 00 01 > 00 00 00 0c > 00 00 00 08 > 00 00 00 00 00 00 06 00 test:2 H > 00 00 00 10 > 00 00 00 00 00 00 00 02 > 00 00 00 04 > 74 65 73 74 > 00 00 00 01 > 00 00 00 0c > 00 00 00 08 > 00 00 00 00 00 00 18 00 test:3 H > 00 00 00 10 > 00 00 00 00 00 00 00 03 > 00 00 00 04 > 74 65 73 74 > > > BOB H r4 > 00001400 ff ff ff ff ff ff ff ff 00 00 00 b2 > 00 00 00 00 00 00 00 04 > 00 00 00 00 00 00 00 04 > 00 00 00 00 00 00 12 00 BOB rp r4 > > > test:3 RP > 00001600 ff ff ff ff ff ff ff ff 00 00 00 6a 00 00 00 00 > |...........j....| > > > test:3 H -> > 00001800 ff ff ff ff ff ff ff ff 00 00 00 aa > 00 00 00 00 00 00 00 03 > 00 00 00 00 00 00 00 03 > 00 00 00 00 00 00 16 00 -> test:3 RP > > > FP[0] -> 1C00 > 00001a00 00 00 00 00 00 00 1c 00 00 00 00 68 00 00 00 00 > |...........h....| > > > FP[1] -> 0E00 > 00001c00 00 00 00 00 00 00 0e 00 00 00 00 b7 00 00 00 00 > |................| > > > CP:3 RP > 00001e00 ff ff ff ff ff ff ff ff 00 00 00 94 > 00 00 00 00 00 00 00 03 > 00 00 00 03 > 00 00 00 84 > 00 00 00 01 > 00 00 00 10 > 00 00 00 0c > 00 00 00 01 > 00 00 00 00 00 00 0c 00 CopiedPage test:1/0C00 test:0 RP > 00 00 00 10 > 00 00 00 00 00 00 00 01 > 00 00 00 04 > 74 65 73 74 > 00 00 00 01 > 00 00 00 10 > 00 00 00 0c > 00 00 00 01 > 00 00 00 00 00 00 04 00 CopiedPage test:2/0400 test:1 RP > 00 00 00 10 > 00 00 00 00 00 00 00 02 > 00 00 00 04 > 74 65 73 74 > 00 00 00 01 > 00 00 00 10 > 00 00 00 0c > 00 00 00 01 > 00 00 00 00 00 00 08 00 CopiedPage test:3/0800 test:2 RP > 00 00 00 10 > 00 00 00 00 00 00 00 03 > 00 00 00 04 > 74 65 73 74 > > > CP:3 H -> 1E00 > 00002000 ff ff ff ff ff ff ff ff 00 00 00 b7 > 00 00 00 00 00 00 00 03 > 00 00 00 00 00 00 00 03 > 00 00 00 00 00 00 1e 00 > 00 00 00 10 00 00 00 11 5f 63 6f 70 > > > Next step : fixing the failing tests... > -- Regards, Cordialement, Emmanuel Lécharny www.iktek.com