@Override public int getLength() { return (int)getWritePoint(); }
/** * Writes the value and value length for non-first record. * @param kv Key-value writer. * @return The offset of the new record. */ private long writeValueAndLength(KvSource kv) throws SerDeException { long valueOffset = writeBuffers.getWritePoint(); kv.writeValue(writeBuffers); long tailOffset = writeBuffers.getWritePoint(); writeBuffers.writeVLong(tailOffset - valueOffset); // LOG.info("Writing value at " + valueOffset + " length " + (tailOffset - valueOffset)); return tailOffset; }
/** * Writes the value and value length for non-first record. * @param kv Key-value writer. * @return The offset of the new record. */ private long writeValueAndLength(KvSource kv) throws SerDeException { long valueOffset = writeBuffers.getWritePoint(); kv.writeValue(writeBuffers); long tailOffset = writeBuffers.getWritePoint(); writeBuffers.writeVLong(tailOffset - valueOffset); // LOG.info("Writing value at " + valueOffset + " length " + (tailOffset - valueOffset)); return tailOffset; }
newAbsoluteOffset = writeBuffers.getWritePoint(); } else { newAbsoluteOffset = writeBuffers.getWritePoint(); writeBuffers.write(valueBytes, valueStart, valueLength); newAbsoluteOffset = writeBuffers.getWritePoint();
newAbsoluteOffset = writeBuffers.getWritePoint(); } else { newAbsoluteOffset = writeBuffers.getWritePoint(); writeBuffers.write(valueBytes, valueStart, valueLength); newAbsoluteOffset = writeBuffers.getWritePoint();
public long add(byte[] keyBytes, int keyStart, int keyLength) { boolean isKeyLengthBig = (keyLength >= SmallKeyLength.threshold); long absoluteKeyOffset = writeBuffers.getWritePoint(); if (isKeyLengthBig) { writeBuffers.writeVInt(keyLength); } writeBuffers.write(keyBytes, keyStart, keyLength); long keyRefWord = IsNonZeroFlag.flagOnMask; if (isKeyLengthBig) { keyRefWord |= SmallKeyLength.allBitsOnBitShifted; } else { keyRefWord |= ((long) keyLength) << SmallKeyLength.bitShift; } keyRefWord |= absoluteKeyOffset; // LOG.debug("VectorMapJoinFastKeyStore add keyLength " + keyLength + " absoluteKeyOffset " + absoluteKeyOffset + " keyRefWord " + Long.toHexString(keyRefWord)); return keyRefWord; }
public long add(byte[] keyBytes, int keyStart, int keyLength) { boolean isKeyLengthBig = (keyLength >= SmallKeyLength.threshold); long absoluteKeyOffset = writeBuffers.getWritePoint(); if (isKeyLengthBig) { writeBuffers.writeVInt(keyLength); } writeBuffers.write(keyBytes, keyStart, keyLength); long keyRefWord = IsNonZeroFlag.flagOnMask; if (isKeyLengthBig) { keyRefWord |= SmallKeyLength.allBitsOnBitShifted; } else { keyRefWord |= ((long) keyLength) << SmallKeyLength.bitShift; } keyRefWord |= absoluteKeyOffset; // LOG.debug("VectorMapJoinFastKeyStore add keyLength " + keyLength + " absoluteKeyOffset " + absoluteKeyOffset + " keyRefWord " + Long.toHexString(keyRefWord)); return keyRefWord; }
final long absoluteOffset = writeBuffers.getWritePoint();
long valueOffset = writeBuffers.getWritePoint(); kv.writeValue(writeBuffers); long tailOffset = writeBuffers.getWritePoint(); int valueLength = (int)(tailOffset - valueOffset); long lengthsLength = writeBuffers.getWritePoint() - tailOffset; if (lengthsLength < 5) { // Reserve space for potential future list writeBuffers.reserve(5 - (int)lengthsLength);
long valueOffset = writeBuffers.getWritePoint(); kv.writeValue(writeBuffers); long tailOffset = writeBuffers.getWritePoint(); int valueLength = (int)(tailOffset - valueOffset); long lengthsLength = writeBuffers.getWritePoint() - tailOffset; if (lengthsLength < 5) { // Reserve space for potential future list writeBuffers.reserve(5 - (int)lengthsLength);
long newAbsoluteOffset = writeBuffers.getWritePoint();
final long absoluteOffset = writeBuffers.getWritePoint();
/** * @param refWord */ public long bumpCount(long refWord, WriteBuffers.Position unsafeReadPos) { // Preconditions.checkState(!KeyRef.getIsInvalidFlag(refWord)); /* * Extract information from the reference word. */ final long countAbsoluteOffset = KeyRef.getAbsoluteOffset(refWord) - MultiSetCount.byteLength; final int currentCount = writeBuffers.readInt( countAbsoluteOffset, unsafeReadPos); // Mark reference as having more than 1 as the count. refWord &= KeyRef.IsSingleFlag.flagOffMask; // Save current write position. final long saveAbsoluteOffset = writeBuffers.getWritePoint(); writeBuffers.setWritePoint(countAbsoluteOffset); writeBuffers.writeInt( countAbsoluteOffset, currentCount + 1); // Restore current write position. writeBuffers.setWritePoint(saveAbsoluteOffset); return refWord; }
long newAbsoluteOffset = writeBuffers.getWritePoint();
final long absoluteOffset = writeBuffers.getWritePoint();
long keyOffset = writeBuffers.getWritePoint(); int keyLength = (int)(writeBuffers.getWritePoint() - keyOffset); int hashCode = (keyHashCode == -1) ? writeBuffers.unsafeHashCode(keyOffset, keyLength) : keyHashCode;
long keyOffset = writeBuffers.getWritePoint(); int keyLength = (int)(writeBuffers.getWritePoint() - keyOffset); int hashCode = (keyHashCode == -1) ? writeBuffers.unsafeHashCode(keyOffset, keyLength) : keyHashCode;
long nextAbsoluteValueOffset = writeBuffers.getWritePoint();
/** * @param ref The ref. * @return The offset to list record pointer; list record is created if it doesn't exist. */ private long createOrGetListRecord(long ref) { if (Ref.hasList(ref)) { // LOG.info("Found list record at " + writeBuffers.getReadPoint()); return writeBuffers.getUnsafeReadPoint(); // Assumes we are here after key compare. } long firstTailOffset = Ref.getOffset(ref); // LOG.info("First tail offset to create list record is " + firstTailOffset); // Determine the length of storage for value and key lengths of the first record. writeBuffers.setUnsafeReadPoint(firstTailOffset); writeBuffers.unsafeSkipVLong(); writeBuffers.unsafeSkipVLong(); int lengthsLength = (int)(writeBuffers.getUnsafeReadPoint() - firstTailOffset); // Create the list record, copy first record value/key lengths there. writeBuffers.writeBytes(firstTailOffset, lengthsLength); long lrPtrOffset = writeBuffers.getWritePoint(); // LOG.info("Creating list record: copying " + lengthsLength + ", lrPtrOffset " + lrPtrOffset); // Reserve 5 bytes for writeValueRecord to fill. There might be junk there so null them. writeBuffers.write(FIVE_ZEROES); // Link the list record to the first element. writeBuffers.writeFiveByteULong(firstTailOffset, lrPtrOffset - lengthsLength - firstTailOffset); return lrPtrOffset; }
/** * @param ref The ref. * @return The offset to list record pointer; list record is created if it doesn't exist. */ private long createOrGetListRecord(long ref) { if (Ref.hasList(ref)) { // LOG.info("Found list record at " + writeBuffers.getReadPoint()); return writeBuffers.getUnsafeReadPoint(); // Assumes we are here after key compare. } long firstTailOffset = Ref.getOffset(ref); // LOG.info("First tail offset to create list record is " + firstTailOffset); // Determine the length of storage for value and key lengths of the first record. writeBuffers.setUnsafeReadPoint(firstTailOffset); writeBuffers.unsafeSkipVLong(); writeBuffers.unsafeSkipVLong(); int lengthsLength = (int)(writeBuffers.getUnsafeReadPoint() - firstTailOffset); // Create the list record, copy first record value/key lengths there. writeBuffers.writeBytes(firstTailOffset, lengthsLength); long lrPtrOffset = writeBuffers.getWritePoint(); // LOG.info("Creating list record: copying " + lengthsLength + ", lrPtrOffset " + lrPtrOffset); // Reserve 5 bytes for writeValueRecord to fill. There might be junk there so null them. writeBuffers.write(FIVE_ZEROES); // Link the list record to the first element. writeBuffers.writeFiveByteULong(firstTailOffset, lrPtrOffset - lengthsLength - firstTailOffset); return lrPtrOffset; }