in tajo-storage/src/main/java/org/apache/tajo/storage/RowFile.java [369:451]
public void addTuple(Tuple t) throws IOException {
checkAndWriteSync();
Column col;
buffer.clear();
nullFlags.clear();
for (int i = 0; i < schema.size(); i++) {
if (enabledStats) {
stats.analyzeField(i, t.get(i));
}
if (t.isNull(i)) {
nullFlags.set(i);
} else {
col = schema.getColumn(i);
switch (col.getDataType().getType()) {
case BOOLEAN:
buffer.put(t.get(i).asByte());
break;
case BIT:
buffer.put(t.get(i).asByte());
break;
case CHAR:
byte[] src = t.get(i).asByteArray();
byte[] dst = Arrays.copyOf(src, col.getDataType().getLength());
buffer.putInt(src.length);
buffer.put(dst);
break;
case TEXT:
byte [] strbytes = t.get(i).asByteArray();
buffer.putShort((short)strbytes.length);
buffer.put(strbytes, 0, strbytes.length);
break;
case INT2:
buffer.putShort(t.get(i).asInt2());
break;
case INT4:
buffer.putInt(t.get(i).asInt4());
break;
case INT8:
buffer.putLong(t.get(i).asInt8());
break;
case FLOAT4:
buffer.putFloat(t.get(i).asFloat4());
break;
case FLOAT8:
buffer.putDouble(t.get(i).asFloat8());
break;
case BLOB:
byte [] bytes = t.get(i).asByteArray();
buffer.putShort((short)bytes.length);
buffer.put(bytes);
break;
case INET4:
buffer.put(t.get(i).asByteArray());
break;
case INET6:
buffer.put(t.get(i).asByteArray());
break;
case NULL_TYPE:
nullFlags.set(i);
break;
default:
break;
}
}
}
byte[] bytes = nullFlags.toArray();
out.writeShort(bytes.length);
out.write(bytes);
bytes = buffer.array();
int dataLen = buffer.position();
out.writeShort(dataLen);
out.write(bytes, 0, dataLen);
// Statistical section
if (enabledStats) {
stats.incrementRow();
}
}