List of usage examples for org.apache.spark.sql.catalyst.expressions.codegen UnsafeRowWriter setOffsetAndSize
protected void setOffsetAndSize(int ordinal, int size)
From source file:com.splicemachine.db.iapi.types.SQLArray.java
License:Apache License
/** * * Write into a Project Tungsten format (UnsafeRow). This calls the * reference's write method./*from w w w .j a va 2 s. co m*/ * * * @param unsafeRowWriter * @param ordinal * @throws StandardException */ public void write(UnsafeRowWriter unsafeRowWriter, int ordinal) throws StandardException { if (isNull()) { unsafeRowWriter.setNullAt(ordinal); } else { UnsafeArrayWriter unsafeArrayWriter = new UnsafeArrayWriter(); BufferHolder bh = new BufferHolder(new UnsafeRow(value.length)); unsafeArrayWriter.initialize(bh, value.length, 8); // 4 bytes for int? for (int i = 0; i < value.length; i++) { if (value[i] == null || value[i].isNull()) { unsafeArrayWriter.setNull(i); } else { value[i].writeArray(unsafeArrayWriter, i); } } long currentOffset = unsafeRowWriter.holder().cursor; unsafeRowWriter.setOffsetAndSize(ordinal, bh.cursor - 16); unsafeRowWriter.holder().grow(bh.cursor - 16); Platform.copyMemory(bh.buffer, 16, unsafeRowWriter.holder().buffer, currentOffset, bh.cursor - 16); } }
From source file:com.splicemachine.db.iapi.types.SQLTime.java
License:Apache License
/** * * Write to a Project Tungsten Format (UnsafeRow). We encode Time as * 2 ints./*from www . ja v a2 s. c o m*/ * * @param unsafeRowWriter * @param ordinal */ @Override public void write(UnsafeRowWriter unsafeRowWriter, int ordinal) { if (isNull()) unsafeRowWriter.setNullAt(ordinal); else { BufferHolder holder = unsafeRowWriter.holder(); holder.grow(8); Platform.putInt(holder.buffer, holder.cursor, encodedTime); Platform.putInt(holder.buffer, holder.cursor + 4, encodedTimeFraction); unsafeRowWriter.setOffsetAndSize(ordinal, 8); holder.cursor = 8; } }
From source file:com.splicemachine.db.iapi.types.SQLTimestamp.java
License:Apache License
/** * * Write to Project Tungsten format (UnsafeRow). Timestamp is * written as 3 ints.//from w w w.ja v a2 s . c om * * * @param unsafeRowWriter * @param ordinal */ @Override public void write(UnsafeRowWriter unsafeRowWriter, int ordinal) { if (isNull()) unsafeRowWriter.setNullAt(ordinal); else { BufferHolder holder = unsafeRowWriter.holder(); holder.grow(12); Platform.putInt(holder.buffer, holder.cursor, encodedDate); Platform.putInt(holder.buffer, holder.cursor + 4, encodedTime); Platform.putInt(holder.buffer, holder.cursor + 8, nanos); unsafeRowWriter.setOffsetAndSize(ordinal, 12); holder.cursor = 12; } }