@Override Datum next() throws IOException { super.next(); if (valuePresent) { int len = (int) lengths.next(); byte[] buf = new byte[len]; int offset = 0; while (len > 0) { int written = stream.read(buf, offset, len); if (written < 0) { throw new EOFException("Can't finish byte read from " + stream); } len -= written; offset += written; } return DatumFactory.createBlob(buf); } else { return NullDatum.get(); } }
@Override Datum next() throws IOException { super.next(); if (valuePresent) { int len = (int) lengths.next(); byte[] buf = new byte[len]; int offset = 0; while (len > 0) { int written = stream.read(buf, offset, len); if (written < 0) { throw new EOFException("Can't finish byte read from " + stream); } len -= written; offset += written; } return DatumFactory.createBlob(buf); } else { return NullDatum.get(); } }
sb.append(DatumFactory.createFloat8(271.9f)).append('|'); sb.append(DatumFactory.createText("str2")).append('|'); sb.append(DatumFactory.createBlob("jinho")).append('|'); sb.append(new String(nullbytes)).append('|'); sb.append(NullDatum.get());
public Datum toDatum(int i) { if (keys[i] == null) { return NullDatum.get(); } switch (keyTypes[i]) { case NULL_TYPE: return NullDatum.get(); case BOOLEAN: return DatumFactory.createBool((Boolean) keys[i]); case BIT: return DatumFactory.createBit((Byte)keys[i]); case INT1: case INT2: return DatumFactory.createInt2((Short) keys[i]); case INT4: return DatumFactory.createInt4((Integer) keys[i]); case DATE: return DatumFactory.createDate((Integer) keys[i]); case INT8: return DatumFactory.createInt8((Long) keys[i]); case TIME: return DatumFactory.createTime((Long) keys[i]); case TIMESTAMP: return DatumFactory.createTimestamp((Long) keys[i]); case FLOAT4: return DatumFactory.createFloat4((Float) keys[i]); case FLOAT8: return DatumFactory.createFloat8((Double) keys[i]); case TEXT: return DatumFactory.createText((byte[]) keys[i]); case CHAR: return DatumFactory.createChar((byte[]) keys[i]); case BLOB: return DatumFactory.createBlob((byte[]) keys[i]); case DATUM: return (Datum)keys[i]; default: throw new IllegalArgumentException(); } } }
public Datum toDatum(int i) { if (keys[i] == null) { return NullDatum.get(); } switch (keyTypes[i]) { case NULL_TYPE: return NullDatum.get(); case BOOLEAN: return DatumFactory.createBool((Boolean) keys[i]); case BIT: return DatumFactory.createBit((Byte)keys[i]); case INT1: case INT2: return DatumFactory.createInt2((Short) keys[i]); case INT4: return DatumFactory.createInt4((Integer) keys[i]); case DATE: return DatumFactory.createDate((Integer) keys[i]); case INET4: return DatumFactory.createInet4((Integer) keys[i]); case INT8: return DatumFactory.createInt8((Long) keys[i]); case TIME: return DatumFactory.createTime((Long) keys[i]); case TIMESTAMP: return DatumFactory.createTimestamp((Long) keys[i]); case FLOAT4: return DatumFactory.createFloat4((Float) keys[i]); case FLOAT8: return DatumFactory.createFloat8((Double) keys[i]); case TEXT: return DatumFactory.createText((byte[]) keys[i]); case CHAR: return DatumFactory.createChar((byte[]) keys[i]); case BLOB: return DatumFactory.createBlob((byte[]) keys[i]); case DATUM: return (Datum)keys[i]; default: throw new IllegalArgumentException(); } } }
return createInterval(value); case BLOB: return createBlob(value); default: throw new TajoRuntimeException(new UnsupportedDataTypeException(dataType.toString()));
return createInterval(value); case BLOB: return createBlob(value); case INET4: return createInet4(value);
@Before public void setUp() throws Exception { tuple1 = new VTuple(new Datum[] { DatumFactory.createBool(true), DatumFactory.createBit((byte) 0x99), DatumFactory.createChar('9'), DatumFactory.createInt2((short) 17), DatumFactory.createInt4(59), DatumFactory.createInt8(23L), DatumFactory.createFloat4(77.9f), DatumFactory.createFloat8(271.9f), DatumFactory.createText("hyunsik"), DatumFactory.createBlob("hyunsik".getBytes()), }); tuple2 = new VTuple(new Datum[] { DatumFactory.createBool(true), DatumFactory.createBit((byte) 0x99), DatumFactory.createChar('9'), DatumFactory.createInt2((short) 17), DatumFactory.createInt4(59), DatumFactory.createInt8(23L), DatumFactory.createFloat4(77.9f), DatumFactory.createFloat8(271.9f), DatumFactory.createText("hyunsik"), DatumFactory.createBlob("hyunsik".getBytes()), }); }
@Test public void testVarioutType() throws IOException { TajoConf conf = new TajoConf(); TableMeta meta = CatalogUtil.newTableMeta(BuiltinStorages.JSON, conf); Path tablePath = new Path(getResourcePath("dataset", "TestJsonSerDe"), "testVariousType.json"); FileSystem fs = FileSystem.getLocal(conf); FileStatus status = fs.getFileStatus(tablePath); FileFragment fragment = new FileFragment("table", tablePath, 0, status.getLen()); Scanner scanner = TablespaceManager.getLocalFs().getScanner(meta, schema, fragment, null); scanner.init(); Tuple tuple = scanner.next(); assertNotNull(tuple); assertNull(scanner.next()); scanner.close(); Tuple baseTuple = new VTuple(new Datum[] { DatumFactory.createBool(true), // 0 DatumFactory.createChar("hyunsik"), // 1 DatumFactory.createInt2((short) 17), // 2 DatumFactory.createInt4(59), // 3 DatumFactory.createInt8(23L), // 4 DatumFactory.createFloat4(77.9f), // 5 DatumFactory.createFloat8(271.9d), // 6 DatumFactory.createText("hyunsik"), // 7 DatumFactory.createBlob("hyunsik".getBytes()), // 8 NullDatum.get(), // 9 }); assertEquals(baseTuple, tuple); }
case BINARY: case BLOB: return DatumFactory.createBlob(datum.getBlob().toByteArray()); case INTERVAL: return new IntervalDatum(datum.getInterval().getMonth(), datum.getInterval().getMsec());
case BINARY: case BLOB: return DatumFactory.createBlob(datum.getBlob().toByteArray()); case INTERVAL: return new IntervalDatum(datum.getInterval().getMonth(), datum.getInterval().getMsec());
tuple.put(6, DatumFactory.createFloat8(4.1)); tuple.put(7, DatumFactory.createText(HELLO)); tuple.put(8, DatumFactory.createBlob(HELLO.getBytes(Charsets.UTF_8))); tuple.put(9, NullDatum.get());
return createBit(bytes[0]); case BLOB: return createBlob(bytes); case PROTOBUF: try {
return createBit(bytes[0]); case BLOB: return createBlob(bytes); case INET4: return createInet4(bytes);
DatumFactory.createFloat8(271.9f), DatumFactory.createText("hyunsik"), DatumFactory.createBlob("hyunsik".getBytes()), });
@Test public void testGetDatum() { LazyTuple t1 = new LazyTuple(schema, textRow, -1, nullbytes, serde); assertEquals(DatumFactory.createBool(true), t1.get(0)); assertEquals(DatumFactory.createChar("str"), t1.get(1)); assertEquals(DatumFactory.createInt2((short) 17), t1.get(2)); assertEquals(DatumFactory.createInt4(59), t1.get(3)); assertEquals(DatumFactory.createInt8(23l), t1.get(4)); assertEquals(DatumFactory.createFloat4(77.9f), t1.get(5)); assertEquals(DatumFactory.createFloat8(271.9f), t1.get(6)); assertEquals(DatumFactory.createText("str2"), t1.get(7)); assertEquals(DatumFactory.createBlob("jinho".getBytes()), t1.get(8)); assertEquals(NullDatum.get(), t1.get(9)); assertEquals(NullDatum.get(), t1.get(10)); }
return DatumFactory.createText(getBytes(fieldId)); case BLOB : return DatumFactory.createBlob(getBytes(fieldId)); case TIMESTAMP: return DatumFactory.createTimestamp(getInt8(fieldId));
return DatumFactory.createText(getBytes(fieldId)); case BLOB: return DatumFactory.createBlob(getBytes(fieldId)); case TIMESTAMP: return DatumFactory.createTimestamp(getInt8(fieldId));
return DatumFactory.createText(getBytes(fieldId)); case BLOB: return DatumFactory.createBlob(getBytes(fieldId)); case TIMESTAMP: return DatumFactory.createTimestamp(getInt8(fieldId));
return DatumFactory.createText(getBytes(fieldId)); case BLOB : return DatumFactory.createBlob(getBytes(fieldId)); case TIMESTAMP: return DatumFactory.createTimestamp(getInt8(fieldId));