/** * Same as {@link #set(int, VarBinaryHolder)} except that it handles the * case where index and length of new element are beyond the existing * capacity of the vector. * * @param index position of the element to set * @param holder holder that carries data buffer. */ public void setSafe(int index, VarBinaryHolder holder) { assert index >= 0; final int dataLength = holder.end - holder.start; fillEmpties(index); handleSafe(index, dataLength); BitVectorHelper.setValidityBitToOne(validityBuffer, index); final int startOffset = getstartOffset(index); offsetBuffer.setInt((index + 1) * OFFSET_WIDTH, startOffset + dataLength); valueBuffer.setBytes(startOffset, holder.buffer, holder.start, dataLength); lastSet = index; }
/** * Same as {@link #set(int, NullableVarBinaryHolder)} except that it handles the * case where index and length of new element are beyond the existing * capacity of the vector. * * @param index position of the element to set * @param holder holder that carries data buffer. */ public void setSafe(int index, NullableVarBinaryHolder holder) { assert index >= 0; final int dataLength = holder.end - holder.start; fillEmpties(index); handleSafe(index, dataLength); BitVectorHelper.setValidityBit(validityBuffer, index, holder.isSet); final int startOffset = getstartOffset(index); offsetBuffer.setInt((index + 1) * OFFSET_WIDTH, startOffset + dataLength); valueBuffer.setBytes(startOffset, holder.buffer, holder.start, dataLength); lastSet = index; }