diff options
author | Martin Kobetic <mkobetic@gmail.com> | 2014-05-12 18:22:45 +0000 |
---|---|---|
committer | Martin Kobetic <mkobetic@gmail.com> | 2014-05-12 18:22:45 +0000 |
commit | 0dbfa3f08a0d2657cc7fc9b7b46af1f0aa271d45 (patch) | |
tree | 0e6dad3d349dcd218deccaf4d04ac2eb77eed1b9 /bucket.go | |
parent | fix inline bucket stats (diff) | |
download | dedo-0dbfa3f08a0d2657cc7fc9b7b46af1f0aa271d45.tar.gz dedo-0dbfa3f08a0d2657cc7fc9b7b46af1f0aa271d45.tar.xz |
merge inline branch into leaf branch
Diffstat (limited to 'bucket.go')
-rw-r--r-- | bucket.go | 39 |
1 files changed, 18 insertions, 21 deletions
@@ -369,29 +369,26 @@ func (b *Bucket) Stats() BucketStats { s.InlineBucketN += 1 } b.forEachPage(func(p *page, depth int) { - if b.root == 0 { // inline bucket + if (p.flags & leafPageFlag) != 0 { s.KeyN += int(p.count) - lastElement := p.leafPageElement(p.count - 1) - used := bucketHeaderSize + pageHeaderSize + (leafPageElementSize * int(p.count-1)) - used += int(lastElement.pos + lastElement.ksize + lastElement.vsize) - s.InlineBucketInuse += used - } else if (p.flags & leafPageFlag) != 0 { - s.LeafPageN++ - if p.count == 0 { - return + used := pageHeaderSize + (leafPageElementSize * int(p.count)) + if p.count != 0 { + lastElement := p.leafPageElement(p.count - 1) + used += int(lastElement.pos + lastElement.ksize + lastElement.vsize) } - s.KeyN += int(p.count) - lastElement := p.leafPageElement(p.count - 1) - used := pageHeaderSize + (leafPageElementSize * int(p.count-1)) - used += int(lastElement.pos + lastElement.ksize + lastElement.vsize) - s.LeafInuse += used - s.LeafOverflowN += int(p.overflow) - - // Collect stats from sub-buckets - for i := uint16(0); i < p.count; i++ { - e := p.leafPageElement(i) - if (e.flags & bucketLeafFlag) != 0 { - subStats.Add(b.openBucket(e.value()).Stats()) + if b.root == 0 { + s.InlineBucketInuse += used + } else { + s.LeafPageN++ + s.LeafInuse += used + s.LeafOverflowN += int(p.overflow) + + // Collect stats from sub-buckets + for i := uint16(0); i < p.count; i++ { + e := p.leafPageElement(i) + if (e.flags & bucketLeafFlag) != 0 { + subStats.Add(b.openBucket(e.value()).Stats()) + } } } } else if (p.flags & branchPageFlag) != 0 { |