mirror of
https://github.com/MarginaliaSearch/MarginaliaSearch.git
synced 2025-02-23 13:09:00 +00:00
Clean up BTreeWriter
This commit is contained in:
parent
347f16939c
commit
281f1322a9
@ -17,18 +17,6 @@ public class BTreeWriter {
|
|||||||
this.ctx = ctx;
|
this.ctx = ctx;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static long indexSize(BTreeContext ctx, int numWords, int numLayers) {
|
|
||||||
if (numLayers == 0) {
|
|
||||||
return 0; // Special treatment for small tables
|
|
||||||
}
|
|
||||||
|
|
||||||
long size = 0;
|
|
||||||
for (int layer = 0; layer < numLayers; layer++) {
|
|
||||||
size += ctx.indexLayerSize(numWords, layer);
|
|
||||||
}
|
|
||||||
return size;
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Construct a BTree with numEntries entries at offset in the associated map
|
/** Construct a BTree with numEntries entries at offset in the associated map
|
||||||
*
|
*
|
||||||
* @return The size of the written data
|
* @return The size of the written data
|
||||||
@ -75,19 +63,32 @@ public class BTreeWriter {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static BTreeHeader makeHeader(BTreeContext ctx, long offset, int numEntries) {
|
public static BTreeHeader makeHeader(BTreeContext ctx, long baseOffset, int numEntries) {
|
||||||
final int numLayers = ctx.numIndexLayers(numEntries);
|
final int numLayers = ctx.numIndexLayers(numEntries);
|
||||||
|
|
||||||
final int padding = getHeaderPadding(ctx, offset, numLayers);
|
final long indexOffset = baseOffset
|
||||||
|
+ BTreeHeader.BTreeHeaderSizeLongs
|
||||||
final long indexOffset = offset + BTreeHeader.BTreeHeaderSizeLongs + padding;
|
+ headerPaddingSize(ctx, baseOffset, numLayers);
|
||||||
final long dataOffset = indexOffset + indexSize(ctx, numEntries, numLayers);
|
final long dataOffset = indexOffset
|
||||||
|
+ indexSize(ctx, numEntries, numLayers);
|
||||||
|
|
||||||
return new BTreeHeader(numLayers, numEntries, indexOffset, dataOffset);
|
return new BTreeHeader(numLayers, numEntries, indexOffset, dataOffset);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static long indexSize(BTreeContext ctx, int numWords, int numLayers) {
|
||||||
|
if (numLayers == 0) {
|
||||||
|
return 0; // Special treatment for small tables
|
||||||
|
}
|
||||||
|
|
||||||
private static int getHeaderPadding(BTreeContext ctx, long offset, int numLayers) {
|
long size = 0;
|
||||||
|
for (int layer = 0; layer < numLayers; layer++) {
|
||||||
|
size += ctx.indexLayerSize(numWords, layer);
|
||||||
|
}
|
||||||
|
|
||||||
|
return size;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static int headerPaddingSize(BTreeContext ctx, long baeOffset, int numLayers) {
|
||||||
final int padding;
|
final int padding;
|
||||||
if (numLayers == 0) {
|
if (numLayers == 0) {
|
||||||
padding = 0;
|
padding = 0;
|
||||||
@ -97,7 +98,7 @@ public class BTreeWriter {
|
|||||||
* a sorted list, there needs to be padding between the header and the index
|
* a sorted list, there needs to be padding between the header and the index
|
||||||
* in order to get aligned blocks
|
* in order to get aligned blocks
|
||||||
*/
|
*/
|
||||||
padding = (int) (ctx.pageSize() - ((offset + BTreeHeader.BTreeHeaderSizeLongs) % ctx.pageSize()));
|
padding = (int) (ctx.pageSize() - ((baeOffset + BTreeHeader.BTreeHeaderSizeLongs) % ctx.pageSize()));
|
||||||
}
|
}
|
||||||
return padding;
|
return padding;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user