Example usage for org.apache.spark.sql.catalyst.expressions.codegen UnsafeRowWriter setOffsetAndSize

List of usage examples for org.apache.spark.sql.catalyst.expressions.codegen UnsafeRowWriter setOffsetAndSize

Introduction

In this page you can find the example usage for org.apache.spark.sql.catalyst.expressions.codegen UnsafeRowWriter setOffsetAndSize.

Prototype

protected void setOffsetAndSize(int ordinal, int size) 

Source Link

Usage

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;
    }
}