@Override public Datum eval(Tuple params) { if (datum == null) { long julianTimestamp = DateTimeUtil.javaTimeToJulianTime(System.currentTimeMillis()); TimeMeta tm = new TimeMeta(); DateTimeUtil.toJulianTimeMeta(julianTimestamp, tm); DateTimeUtil.toUserTimezone(tm, getTimeZone()); datum = DatumFactory.createTime(DateTimeUtil.toTime(tm)); } return datum; } }
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(); } } }
private static Tuple makeRandomTuple(Tuple tuple) { tuple.put(new Datum[]{ DatumFactory.createInt8(random.nextLong()), DatumFactory.createInt4(random.nextInt()), DatumFactory.createInt2((short) random.nextInt(Short.MAX_VALUE)), DatumFactory.createDate(Math.abs(random.nextInt())), DatumFactory.createTimestamp(Math.abs(random.nextLong())), DatumFactory.createTime(Math.abs(random.nextLong())), DatumFactory.createFloat4(random.nextFloat()), DatumFactory.createFloat8(random.nextDouble()) }); for (int i = 0; i < 3; i++) { if (random.nextBoolean()) { tuple.put(i, tuple.asDatum(i).multiply(MINUS_ONE)); } } for (int i = 6; i < 8; i++) { if (random.nextBoolean()) { tuple.put(i, tuple.asDatum(i).multiply(MINUS_ONE)); } } return tuple; }
@Override public Datum eval(Tuple params) { if (datum == null) { long julianTimestamp = DateTimeUtil.javaTimeToJulianTime(System.currentTimeMillis()); TimeMeta tm = new TimeMeta(); DateTimeUtil.toJulianTimeMeta(julianTimestamp, tm); DateTimeUtil.toUserTimezone(tm, getTimeZone()); datum = DatumFactory.createTime(DateTimeUtil.toTime(tm)); } return datum; } }
private static Tuple makeMinTuple(Tuple tuple) { tuple.put(new Datum[]{ DatumFactory.createInt8(Long.MIN_VALUE), DatumFactory.createInt4(Integer.MIN_VALUE), DatumFactory.createInt2(Short.MIN_VALUE), DatumFactory.createDate(0), DatumFactory.createTimestamp(0), DatumFactory.createTime(0), DatumFactory.createFloat4(Float.MIN_VALUE), DatumFactory.createFloat8(Double.MIN_VALUE) }); return tuple; }
/** * This method uses the given calendar to construct an appropriate millisecond * value for the time if the underlying database does not store timezone information. */ private Time getTime(Tuple tuple, Calendar cal, int index) throws SQLException { if (handleNull(tuple, index)) return null; TimeZone tz = cal == null ? TimeZone.getDefault() : cal.getTimeZone(); long javaTime; switch (tuple.type(index)) { case DATE: case TIME: { TimeMeta tm = tuple.asDatum(index).asTimeMeta(); javaTime = DateTimeUtil.convertTimeZone(toTime(tm, null).getTime(), TimeZone.getDefault(), tz); break; } case TIMESTAMP: { return DateTimeUtil.convertToTime(getTimestamp(tuple, index), timezone); } case TEXT: { TimeMeta tm = DatumFactory.createTime(tuple.asDatum(index)).asTimeMeta(); javaTime = DateTimeUtil.convertTimeZone(toTime(tm, null).getTime(), TimeZone.getDefault(), tz); break; } default: throw new TajoSQLException(Errors.ResultCode.INVALID_VALUE_FOR_CAST, tuple.type(index).name(), "time"); } // remove date part return DateTimeUtil.convertToTime(javaTime, TimeZone.getDefault()); }
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(); } } }
public static Datum createFromInt8(DataType type, long val) { switch (type.getType()) { case INT8: return new Int8Datum(val); case TIMESTAMP: return new TimestampDatum(val); case TIME: return createTime(val); default: throw new TajoRuntimeException(new UnsupportedDataTypeException(type.getType().name())); } }
private static Tuple makeMaxTuple(Tuple tuple) { tuple.put(new Datum[]{ DatumFactory.createInt8(Long.MAX_VALUE), DatumFactory.createInt4(Integer.MAX_VALUE), DatumFactory.createInt2(Short.MAX_VALUE), DatumFactory.createDate(Integer.MAX_VALUE), DatumFactory.createTimestamp( // FIXME 'Out of Range of Time' //DateTimeUtil.toJulianDate(JULIAN_MAXYEAR, 1, 1) DateTimeUtil.toJulianTimestamp(DateTimeConstants.JULIAN_MAXYEAR / 20, 1, 1, 0, 0, 0, 0)), DatumFactory.createTime(Long.MAX_VALUE), DatumFactory.createFloat4(Float.MAX_VALUE), DatumFactory.createFloat8(Double.MAX_VALUE) }); return tuple; }
public static Datum createFromInt8(DataType type, long val) { switch (type.getType()) { case INT8: return new Int8Datum(val); case TIMESTAMP: return new TimestampDatum(val); case TIME: return createTime(val); default: throw new TajoRuntimeException(new UnsupportedDataTypeException(type.getType().name())); } }
return createDate(value); case TIME: return createTime(value); case TIMESTAMP: return createTimestamp(value);
private Time getTime(Tuple tuple, int index) throws SQLException { if (handleNull(tuple, index)) return null; switch (tuple.type(index)) { case DATE: case TIME: return toTime(tuple.asDatum(index).asTimeMeta(), null); case TIMESTAMP: return toTime(tuple.asDatum(index).asTimeMeta(), timezone); case TEXT: return toTime(DatumFactory.createTime(tuple.asDatum(index)).asTimeMeta(), null); default: throw new TajoSQLException(Errors.ResultCode.INVALID_VALUE_FOR_CAST, tuple.type(index).name(), "time"); } }
return createDate(value); case TIME: return createTime(value); case TIMESTAMP: return createTimestamp(value);
return DatumFactory.createDate(datum.getInt4()); case TIME: return DatumFactory.createTime(datum.getInt8()); case BINARY: case BLOB:
public static void fillRow(int i, RowWriter builder) { builder.startRow(); builder.putBool(i % 1 == 0 ? true : false); // 0 builder.putInt2((short) 1); // 1 builder.putInt4(i); // 2 builder.putInt8(i); // 3 builder.putFloat4(i); // 4 builder.putFloat8(i); // 5 builder.putText((UNICODE_FIELD_PREFIX + i).getBytes()); // 6 builder.putTimestamp(DatumFactory.createTimestamp("2014-04-16 08:48:00").asInt8() + i); // 7 builder.putDate(DatumFactory.createDate("2014-04-16").asInt4() + i); // 8 builder.putTime(DatumFactory.createTime("08:48:00").asInt8() + i); // 9 builder.putInterval(DatumFactory.createInterval((i + 1) + " hours")); // 10 builder.putProtoDatum(new ProtobufDatum(ProtoUtil.convertString(i + ""))); // 11 builder.endRow(); }
return DatumFactory.createDate(getInt4(fieldId)); case TIME: return DatumFactory.createTime(getInt8(fieldId)); case INTERVAL: return getInterval(fieldId);
return DatumFactory.createDate(getInt4(fieldId)); case TIME: return DatumFactory.createTime(getInt8(fieldId)); case INTERVAL: return getInterval(fieldId);
public static void validateTupleResult(int j, Tuple t) { assertTrue((j % 1 == 0) == t.getBool(0)); assertTrue(1 == t.getInt2(1)); assertEquals(j, t.getInt4(2)); assertEquals(j, t.getInt8(3)); assertTrue(j == t.getFloat4(4)); assertTrue(j == t.getFloat8(5)); assertEquals(new String(UNICODE_FIELD_PREFIX + j), t.getText(6)); assertEquals(DatumFactory.createTimestamp("2014-04-16 08:48:00").asInt8() + (long) j, t.getInt8(7)); assertEquals(DatumFactory.createDate("2014-04-16").asInt4() + j, t.getInt4(8)); assertEquals(DatumFactory.createTime("08:48:00").asInt8() + j, t.getInt8(9)); assertEquals(DatumFactory.createInterval((j + 1) + " hours"), t.getInterval(10)); assertEquals(new ProtobufDatum(ProtoUtil.convertString(j + "")), t.getProtobufDatum(11)); }
return DatumFactory.createDate(getInt4(fieldId)); case TIME: return DatumFactory.createTime(getInt8(fieldId)); case INTERVAL: return getInterval(fieldId);
return DatumFactory.createDate(getInt4(fieldId)); case TIME: return DatumFactory.createTime(getInt8(fieldId)); case INTERVAL: return getInterval(fieldId);