boolean shouldMerge(int availBytes) { return mSplit == null && (((type() & (LOW_EXTREMITY | HIGH_EXTREMITY)) == 0 && availBytes >= ((pageSize(mPage) - TN_HEADER_SIZE) >> 1)) || !hasKeys()); }
boolean shouldMerge(int availBytes) { return mSplit == null && (((type() & (LOW_EXTREMITY | HIGH_EXTREMITY)) == 0 && availBytes >= ((pageSize(mPage) - TN_HEADER_SIZE) >> 1)) || !hasKeys()); }
boolean shouldMerge(int availBytes) { return mSplit == null && (((type() & (LOW_EXTREMITY | HIGH_EXTREMITY)) == 0 && availBytes >= ((pageSize(mPage) - TN_HEADER_SIZE) >> 1)) || !hasKeys()); }
private void clearEntries() { garbage(0); leftSegTail(TN_HEADER_SIZE); int pageSize = pageSize(mPage); rightSegTail(pageSize - 1); // Search vector location must be even. searchVecStart((TN_HEADER_SIZE + ((pageSize - TN_HEADER_SIZE) >> 1)) & ~1); searchVecEnd(searchVecStart() - 2); // inclusive }
private void clearEntries() { garbage(0); leftSegTail(TN_HEADER_SIZE); int pageSize = pageSize(mPage); rightSegTail(pageSize - 1); // Search vector location must be even. searchVecStart((TN_HEADER_SIZE + ((pageSize - TN_HEADER_SIZE) >> 1)) & ~1); searchVecEnd(searchVecStart() - 2); // inclusive }
private void clearEntries() { garbage(0); leftSegTail(TN_HEADER_SIZE); int pageSize = pageSize(mPage); rightSegTail(pageSize - 1); // Search vector location must be even. searchVecStart((TN_HEADER_SIZE + ((pageSize - TN_HEADER_SIZE) >> 1)) & ~1); searchVecEnd(searchVecStart() - 2); // inclusive }
/** * Prepares the node for appending entries out-of-order, and then sorting them. * * @see appendToSortLeaf */ void asSortLeaf() { type((byte) (TYPE_TN_LEAF | LOW_EXTREMITY | HIGH_EXTREMITY)); garbage(0); leftSegTail(TN_HEADER_SIZE); int pageSize = pageSize(mPage); rightSegTail(pageSize - 1); // Position search vector on the left side, but appendToSortLeaf will move it to the // right. It's not safe to position an empty search vector on the right side, because // the inclusive start position would wrap around for the largest page size. searchVecStart(TN_HEADER_SIZE); searchVecEnd(TN_HEADER_SIZE - 2); // inclusive }
newNode.rightSegTail(pageSize(newPage) - 1); int newSearchVecStart = pageSize(newPage) - 2; newNode.searchVecStart(newSearchVecStart); newNode.searchVecEnd(newSearchVecStart); final int sloc = p_ushortGetLE(spage, snode.searchVecStart() + spos); p_copy(spage, sloc, newPage, TN_HEADER_SIZE, encodedLen); p_shortPutLE(newPage, pageSize(newPage) - 2, TN_HEADER_SIZE);
final int searchVecStart = pageSize(newRootPage) - (((pageSize(newRootPage) - leftSegTail + (2 + 8 + 8)) >> 1) & ~1); p_shortPutLE(newRootPage, searchVecStart, TN_HEADER_SIZE); p_longPutLE(newRootPage, searchVecStart + 2, left.mId); /*P*/ // ] leftSegTail(leftSegTail); rightSegTail(pageSize(newRootPage) - 1); searchVecStart(searchVecStart); searchVecEnd(searchVecStart);
final int searchVecStart = pageSize(newRootPage) - (((pageSize(newRootPage) - leftSegTail + (2 + 8 + 8)) >> 1) & ~1); p_shortPutLE(newRootPage, searchVecStart, TN_HEADER_SIZE); p_longPutLE(newRootPage, searchVecStart + 2, left.mId); /*P*/ // ] leftSegTail(leftSegTail); rightSegTail(pageSize(newRootPage) - 1); searchVecStart(searchVecStart); searchVecEnd(searchVecStart);
final int searchVecStart = pageSize(newRootPage) - (((pageSize(newRootPage) - leftSegTail + (2 + 8 + 8)) >> 1) & ~1); p_shortPutLE(newRootPage, searchVecStart, TN_HEADER_SIZE); p_longPutLE(newRootPage, searchVecStart + 2, left.mId); /*P*/ // ] leftSegTail(leftSegTail); rightSegTail(pageSize(newRootPage) - 1); searchVecStart(searchVecStart); searchVecEnd(searchVecStart);
throw new DatabaseException("Closed"); start = node.pageSize(page) - 2; node.searchVecEnd(start); } else {
if (rightSegTail() < searchVecEnd() || rightSegTail() > (pageSize(page) - 1)) { return verifyFailed(level, observer, "Right segment tail: " + rightSegTail()); int loc = keyLoc; if (loc < TN_HEADER_SIZE || loc >= pageSize(page) || (loc >= leftSegTail() && loc <= rightSegTail())) if (loc + keyLen > pageSize(page)) { return verifyFailed(level, observer, "Key end location: " + (loc + keyLen)); return verifyFailed(level, observer, "Value location out of bounds"); if (loc + len > pageSize(page)) { return verifyFailed(level, observer, "Value end location: " + (loc + len)); int garbage = pageSize(page) - used;
if (rightSegTail() < searchVecEnd() || rightSegTail() > (pageSize(page) - 1)) { return verifyFailed(level, observer, "Right segment tail: " + rightSegTail()); int loc = keyLoc; if (loc < TN_HEADER_SIZE || loc >= pageSize(page) || (loc >= leftSegTail() && loc <= rightSegTail())) if (loc + keyLen > pageSize(page)) { return verifyFailed(level, observer, "Key end location: " + (loc + keyLen)); return verifyFailed(level, observer, "Value location out of bounds"); if (loc + len > pageSize(page)) { return verifyFailed(level, observer, "Value end location: " + (loc + len)); int garbage = pageSize(page) - used;