@Override public boolean next() { if(index + 1 < repeatedHolder.end) { index++; repeatedHolder.vector.getAccessor().get(repeatedHolder.start + index, holder); return true; } else { return false; } }
@Override public DrillBuf getBuffer() { return values.getBuffer(); }
@Override public int getByteCapacity(){ return values.getByteCapacity(); }
@Override public SerializedField getMetadata() { return getMetadataBuilder() .addChild(offsetVector.getMetadata()) .setValueCount(getAccessor().getValueCount()) .setBufferLength(getBufferSize()) .build(); }
public void fromNotNullable(VarCharVector srce) { clear(); final int valueCount = srce.getAccessor().getValueCount(); // Create a new bits vector, all values non-null fillBitsVector(getBitsVector(), valueCount); // Swap the data portion getValuesVector().exchange(srce); lastSet = valueCount; setValueCount(valueCount); } }
public VarCharWriterImpl(VarCharVector vector, AbstractFieldWriter parent) { super(parent); this.mutator = vector.getMutator(); this.vector = vector; }
private void flushInternal() { if (!enableDataBuffering) { return; // NOOP } int numElements = buffer.position(); if (numElements == 0) { return; // NOOP } while (parent.data.capacity() < totalDataLen) { parent.reAlloc(); } try { parent.data.setBytes(dataBuffOff, buffer.array(), 0, buffer.position()); } catch (Exception e) { throw new RuntimeException(e); } // Update counters dataBuffOff += buffer.position(); assert dataBuffOff == totalDataLen; // Reset the byte buffer buffer.clear(); }
case REQUIRED: { VarCharVector vector = (VarCharVector) sourceVector; vectorMemoryUsage.offsetsByteCapacity = vector.getOffsetVector().getValueCapacity() * INT_VALUE_WIDTH; vectorMemoryUsage.dataByteCapacity = vector.getByteCapacity(); vectorMemoryUsage.offsetsBytesUsed = vector.getOffsetVector().getPayloadByteCount(currValueCount); vectorMemoryUsage.dataBytesUsed = vector.getPayloadByteCount(currValueCount) - vectorMemoryUsage.offsetsBytesUsed; break; VarCharVector values = vector.getValuesVector(); vectorMemoryUsage.bitsBytesCapacity = vector.getBitsValueCapacity(); vectorMemoryUsage.offsetsByteCapacity = values.getOffsetVector().getValueCapacity() * INT_VALUE_WIDTH; vectorMemoryUsage.dataByteCapacity = values.getByteCapacity(); vectorMemoryUsage.bitsBytesUsed = currValueCount * BYTE_VALUE_WIDTH; vectorMemoryUsage.offsetsBytesUsed = values.getOffsetVector().getPayloadByteCount(currValueCount); vectorMemoryUsage.dataBytesUsed = values.getPayloadByteCount(currValueCount) - vectorMemoryUsage.offsetsBytesUsed; break;
@Override public int getValueCapacity() { return vector.getValueCapacity(); }
private void validateVarCharVector(String name, VarCharVector vector, int entryCount) { // int dataLength = vector.getAllocatedByteCount(); // Includes offsets and data. int dataLength = vector.getBuffer().capacity(); validateOffsetVector(name + "-offsets", vector.getOffsetVector(), entryCount, dataLength); }
public static void printStrings(VarCharVector vector, int start, int length) { printOffsets(vector.getOffsetVector(), start, length + 1); header(vector, start, length); System.out.println(); for (int i = start, j = 0; j < length; i++, j++) { System.out.print(" "); System.out.print(i); System.out.print(": \""); System.out.print(stringAt(vector, i)); System.out.println("\""); } System.out.println("]"); }
public void splitAndTransferTo(int startIndex, int length, VarCharVector target) { UInt4Vector.Accessor offsetVectorAccessor = this.offsetVector.getAccessor(); final int startPoint = offsetVectorAccessor.get(startIndex); final int sliceLength = offsetVectorAccessor.get(startIndex + length) - startPoint; target.clear(); target.offsetVector.allocateNew(length + 1); offsetVectorAccessor = this.offsetVector.getAccessor(); final UInt4Vector.Mutator targetOffsetVectorMutator = target.offsetVector.getMutator(); for (int i = 0; i < length + 1; i++) { targetOffsetVectorMutator.set(i, offsetVectorAccessor.get(startIndex + i) - startPoint); } target.data = data.slice(startPoint, sliceLength).transferOwnership(target.allocator).buffer; target.getMutator().setValueCount(length); }
@Override public int getPayloadByteCount(int valueCount) { // For nullable, we include all values, null or not, in computing // the value length. return bits.getPayloadByteCount(valueCount) + values.getPayloadByteCount(valueCount); }
@Override public void setValueLengthSafe(int index, int length) { values.getMutator().setValueLengthSafe(index, length); lastSet = index; }
public void setSafe(int index, int start, int end, DrillBuf buffer) { final int len = end - start; final int outputStart = offsetVector.data.getInt(index * 4); while (data.capacity() < outputStart + len) { reAlloc(); } offsetVector.getMutator().setSafe(index + 1, outputStart + len); buffer.getBytes(start, data, outputStart, len); }
@Override public SerializedField getMetadata() { return getMetadataBuilder() .addChild(offsetVector.getMetadata()) .setValueCount(getAccessor().getValueCount()) .setBufferLength(getBufferSize()) .build(); }
@Override public int getValueCapacity(){ return Math.min(bits.getValueCapacity(), values.getValueCapacity()); }
public static void printStrings(VarCharVector vector, int start, int length) { printOffsets(vector.getOffsetVector(), start, length + 1); header(vector, start, length); System.out.println(); for (int i = start, j = 0; j < length; i++, j++) { System.out.print(" "); System.out.print(i); System.out.print(": \""); System.out.print(stringAt(vector, i)); System.out.println("\""); } System.out.println("]"); }
@Override public int getPayloadByteCount(int valueCount) { // For nullable, we include all values, null or not, in computing // the value length. return bits.getPayloadByteCount(valueCount) + values.getPayloadByteCount(valueCount); }
@Override public int getValueLength(int index) { return values.getAccessor().getValueLength(index); }