@Override public void putTime(long val) { ensureSize(SizeOf.SIZE_OF_LONG); long addr = currentAddr(); PlatformDependent.putLong(addr, val); curFieldIdx++; forwardField(SizeOf.SIZE_OF_LONG); }
@Override public void putInt4(int val) { ensureSize(MAXIMUM_VARIANT_INT32); curFieldIdx++; forwardField(writeRawVarint32(currentAddr(), encodeZigZag32(val))); }
@Override public void putInt8(long val) { ensureSize(MAXIMUM_VARIANT_INT64); curFieldIdx++; forwardField(writeRawVarint64(currentAddr(), encodeZigZag64(val))); }
@Override public void putInterval(IntervalDatum val) { ensureSize(MAXIMUM_VARIANT_INT32 + MAXIMUM_VARIANT_INT64); long addr = currentAddr(); short length = writeRawVarint32(addr, encodeZigZag32(val.getMonths())); length += writeRawVarint64(addr, encodeZigZag64(val.getMilliSeconds())); curFieldIdx++; forwardField(length); }
@Override public boolean startRow() { ensureSize(headerSize); nullFlags.clear(); curOffset = headerSize; curFieldIdx = 0; forward(headerSize); return true; }
@Override public void cancelRow() { // curOffset is equivalent to a byte length of current row. backward(curOffset); curOffset = 0; nullFlags.clear(); curFieldIdx = 0; }
/** * Current memory address of the row * * @return The memory address */ public long recordStartAddr() { return currentAddr() - curOffset; }
/** * set current buffer position and forward field length * @param fieldLength */ private void forwardField(int fieldLength) { forward(fieldLength); curOffset += fieldLength; }
public int offset() { return position(); }
@Override public RowWriter getWriter() { if (!getMemory().hasAddress()) { throw new TajoInternalError(new NotImplementedException("Heap memory writer not implemented yet")); } if (builder == null) { switch (dataFormat) { case BuiltinStorages.DRAW: this.builder = new OffHeapRowBlockWriter(this); break; case BuiltinStorages.RAW: this.builder = new CompactRowBlockWriter(this); break; default: throw new TajoInternalError(new NotImplementedException(dataFormat + " memory writer not implemented yet")); } } return builder; }
@Override public void putInterval(IntervalDatum val) { ensureSize(MAXIMUM_VARIANT_INT32 + MAXIMUM_VARIANT_INT64); long addr = currentAddr(); short length = writeRawVarint32(addr, encodeZigZag32(val.getMonths())); length += writeRawVarint64(addr, encodeZigZag64(val.getMilliSeconds())); curFieldIdx++; forwardField(length); }
@Override public void putInt8(long val) { ensureSize(MAXIMUM_VARIANT_INT64); curFieldIdx++; forwardField(writeRawVarint64(currentAddr(), encodeZigZag64(val))); }
@Override public boolean startRow() { ensureSize(headerSize); nullFlags.clear(); curOffset = headerSize; curFieldIdx = 0; forward(headerSize); return true; }
@Override public void cancelRow() { // curOffset is equivalent to a byte length of current row. backward(curOffset); curOffset = 0; nullFlags.clear(); curFieldIdx = 0; }
/** * Current memory address of the row * * @return The memory address */ public long recordStartAddr() { return currentAddr() - curOffset; }
/** * set current buffer position and forward field length * @param fieldLength */ private void forwardField(int fieldLength) { forward(fieldLength); curOffset += fieldLength; }
public int offset() { return position(); }
@Override public RowWriter getWriter() { if (!getMemory().hasAddress()) { throw new TajoInternalError(new NotImplementedException("Heap memory writer not implemented yet")); } if (builder == null) { switch (dataFormat) { case BuiltinStorages.DRAW: this.builder = new OffHeapRowBlockWriter(this); break; case BuiltinStorages.RAW: this.builder = new CompactRowBlockWriter(this); break; default: throw new TajoInternalError(new NotImplementedException(dataFormat + " memory writer not implemented yet")); } } return builder; }
@Override public void putFloat8(double val) { ensureSize(SizeOf.SIZE_OF_DOUBLE); long addr = currentAddr(); UnsafeUtil.unsafe.putDouble(addr, val); curFieldIdx++; forwardField(SizeOf.SIZE_OF_DOUBLE); }