projects
/
tedtools.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
New cache subsystem
[tedtools.git]
/
tbtree.c
diff --git
a/tbtree.c
b/tbtree.c
index
becd120
..
f9eae19
100644
(file)
--- a/
tbtree.c
+++ b/
tbtree.c
@@
-673,21
+673,21
@@
findDelimiter(TBTree *db, TBTPage *page, TBTPointer *ptr, int size, u_int32_t st
}
}
- if ( was==0 )
+ if ( was==0 )
{
sizes[page->npointer]=size;
sizes[page->npointer]=size;
+ }
- for(i=0;i<page->npointer+1;i++)
{
+ for(i=0;i<page->npointer+1;i++)
if ( i< start )
lfree-=sizes[i];
else
rfree-=sizes[i];
if ( i< start )
lfree-=sizes[i];
else
rfree-=sizes[i];
- }
while( 1 ) {
if ( lfree<0 ) {
while( 1 ) {
if ( lfree<0 ) {
+ start--;
lfree+=sizes[start];
rfree-=sizes[start];
lfree+=sizes[start];
rfree-=sizes[start];
- start--;
} else if ( rfree < 0 ) {
lfree-=sizes[start];
rfree+=sizes[start];
} else if ( rfree < 0 ) {
lfree-=sizes[start];
rfree+=sizes[start];
@@
-778,7
+778,6
@@
splitPage(TBTree *db, TBTMemPage *srcpage, TBTMemPage** newpage, TBTPointer **pt
packLeafKV(db, &(tmp->page), *ptr, key, value);
else
packInternalKV(db, &(tmp->page), *ptr, key, pagenumber);
packLeafKV(db, &(tmp->page), *ptr, key, value);
else
packInternalKV(db, &(tmp->page), *ptr, key, pagenumber);
-
return TBT_OK;
}
return TBT_OK;
}
@@
-825,7
+824,9
@@
layerInsert(TBTree *db, u_int32_t pagenumber, TBTMemPage **left, TBTMemPage **ri
}
if ( size <= page->page.freespace ) {
}
if ( size <= page->page.freespace ) {
+ u_int32_t oldsize=page->page.freespace;
packLeafKV(db, &(page->page), ptr, key, value);
packLeafKV(db, &(page->page), ptr, key, value);
+ tassert( oldsize == page->page.freespace + size );
page->issynced=0;
} else {
rc = splitPage(db, page, &newright, &ptr, size, key, value, 0);
page->issynced=0;
} else {
rc = splitPage(db, page, &newright, &ptr, size, key, value, 0);