@Override public String getText(int fieldId) { return new String(getBytes(fieldId), TextDatum.DEFAULT_CHARSET); }
private int checkNullAndGetOffset(int fieldId) { int offset = getFieldOffset(fieldId); if (offset == MemoryRowBlock.NULL_FIELD_OFFSET) { throw new RuntimeException("Invalid Field Access: " + fieldId); } return offset + getRelativePos(); }
@Override public Datum asDatum(int fieldId) { if (isBlankOrNull(fieldId)) { return NullDatum.get(); return DatumFactory.createBool(getBool(fieldId)); case BIT: return DatumFactory.createBit(getByte(fieldId)); case INT1: case INT2: return DatumFactory.createInt2(getInt2(fieldId)); case INT4: return DatumFactory.createInt4(getInt4(fieldId)); case INT8: return DatumFactory.createInt8(getInt8(fieldId)); case FLOAT4: return DatumFactory.createFloat4(getFloat4(fieldId)); case FLOAT8: return DatumFactory.createFloat8(getFloat8(fieldId)); case CHAR: return DatumFactory.createChar(getBytes(fieldId)); case TEXT: return DatumFactory.createText(getBytes(fieldId)); case BLOB : return DatumFactory.createBlob(getBytes(fieldId)); case TIMESTAMP: return DatumFactory.createTimestamp(getInt8(fieldId)); case DATE: return DatumFactory.createDate(getInt4(fieldId)); case TIME:
@Override public int getInt4(int fieldId) { return buffer.getInt(checkNullAndGetOffset(fieldId)); }
@Override protected Tuple nextTuple() throws IOException { if (curRow < totalRow) { HeapTuple heapTuple = new HeapTuple(); if (reader.next(heapTuple)) { cur = heapTuple; } else { cur = null; } return cur; } else { return null; } }
@Override public boolean contains(int fieldid) { return getFieldOffset(fieldid) > MemoryRowBlock.NULL_FIELD_OFFSET; }
@Override public TimeMeta getTimeDate(int fieldId) { return asDatum(fieldId).asTimeMeta(); }
@Override public Datum asDatum(int fieldId) { if (isBlankOrNull(fieldId)) { return NullDatum.get(); return DatumFactory.createBool(getBool(fieldId)); case BIT: return DatumFactory.createBit(getByte(fieldId)); case INT1: case INT2: return DatumFactory.createInt2(getInt2(fieldId)); case INT4: return DatumFactory.createInt4(getInt4(fieldId)); case INT8: return DatumFactory.createInt8(getInt8(fieldId)); case FLOAT4: return DatumFactory.createFloat4(getFloat4(fieldId)); case FLOAT8: return DatumFactory.createFloat8(getFloat8(fieldId)); case CHAR: return DatumFactory.createChar(getBytes(fieldId)); case TEXT: return DatumFactory.createText(getBytes(fieldId)); case BLOB : return DatumFactory.createBlob(getBytes(fieldId)); case TIMESTAMP: return DatumFactory.createTimestamp(getInt8(fieldId)); case DATE: return DatumFactory.createDate(getInt4(fieldId)); case TIME:
@Override public boolean getBool(int fieldId) { return buffer.getByte(checkNullAndGetOffset(fieldId)) == 0x01; }
@Override protected Tuple nextTuple() throws IOException { if (curRow < totalRow) { HeapTuple heapTuple = new HeapTuple(); if (reader.next(heapTuple)) { cur = heapTuple; } else { cur = null; } return cur; } else { return null; } }
@Override public boolean isBlank(int fieldid) { return getFieldOffset(fieldid) == MemoryRowBlock.NULL_FIELD_OFFSET; }
@Override public byte[] getTextBytes(int fieldId) { return asDatum(fieldId).asTextBytes(); }
@Override public float getFloat4(int fieldId) { return buffer.getFloat(checkNullAndGetOffset(fieldId)); }
public static List<Tuple> sort(MemoryRowBlock rowBlock, Comparator<Tuple> comparator) { List<Tuple> tupleList = Lists.newArrayList(); ZeroCopyTuple zcTuple; if(rowBlock.getMemory().hasAddress()) { zcTuple = new UnSafeTuple(); } else { zcTuple = new HeapTuple(); } RowBlockReader reader = rowBlock.getReader(); while(reader.next(zcTuple)) { tupleList.add(zcTuple); if(rowBlock.getMemory().hasAddress()) { zcTuple = new UnSafeTuple(); } else { zcTuple = new HeapTuple(); } } Collections.sort(tupleList, comparator); return tupleList; }
private int checkNullAndGetOffset(int fieldId) { int offset = getFieldOffset(fieldId); if (offset == MemoryRowBlock.NULL_FIELD_OFFSET) { throw new RuntimeException("Invalid Field Access: " + fieldId); } return offset + getRelativePos(); }
@Override public boolean contains(int fieldid) { return getFieldOffset(fieldid) > MemoryRowBlock.NULL_FIELD_OFFSET; }