Search in sources :

Example 1 with TimeZoneKey

use of com.facebook.presto.spi.type.TimeZoneKey in project presto by prestodb.

the class TestPrestoDriver method testSetTimeZoneId.

@Test
public void testSetTimeZoneId() throws Exception {
    TimeZoneKey defaultZoneKey = TimeZoneKey.getTimeZoneKey(TimeZone.getDefault().getID());
    DateTimeZone defaultZone = DateTimeZone.forTimeZone(TimeZone.getDefault());
    String sql = "SELECT current_timezone() zone, TIMESTAMP '2001-02-03 3:04:05' ts";
    try (Connection connection = createConnection()) {
        try (Statement statement = connection.createStatement();
            ResultSet rs = statement.executeQuery(sql)) {
            assertTrue(rs.next());
            assertEquals(rs.getString("zone"), defaultZoneKey.getId());
            assertEquals(rs.getTimestamp("ts"), new Timestamp(new DateTime(2001, 2, 3, 3, 4, 5, defaultZone).getMillis()));
        }
        connection.unwrap(PrestoConnection.class).setTimeZoneId("UTC");
        try (Statement statement = connection.createStatement();
            ResultSet rs = statement.executeQuery(sql)) {
            assertTrue(rs.next());
            assertEquals(rs.getString("zone"), "UTC");
            assertEquals(rs.getTimestamp("ts"), new Timestamp(new DateTime(2001, 2, 3, 3, 4, 5, DateTimeZone.UTC).getMillis()));
        }
    }
}
Also used : Statement(java.sql.Statement) Connection(java.sql.Connection) ResultSet(java.sql.ResultSet) TimeZoneKey(com.facebook.presto.spi.type.TimeZoneKey) Timestamp(java.sql.Timestamp) DateTimeZone(org.joda.time.DateTimeZone) DateTime(org.joda.time.DateTime) Test(org.testng.annotations.Test)

Example 2 with TimeZoneKey

use of com.facebook.presto.spi.type.TimeZoneKey in project presto by prestodb.

the class TestDateTimeFunctions method testCurrentDateTimezone.

@Test
public void testCurrentDateTimezone() throws Exception {
    TimeZoneKey kievTimeZoneKey = getTimeZoneKey("Europe/Kiev");
    for (long instant = new DateTime(2000, 6, 15, 0, 0).getMillis(); instant < new DateTime(2016, 6, 15, 0, 0).getMillis(); instant += TimeUnit.HOURS.toMillis(1)) {
        assertCurrentDateAtInstant(kievTimeZoneKey, instant);
        assertCurrentDateAtInstant(TIME_ZONE_KEY, instant);
    }
}
Also used : TimeZoneKey.getTimeZoneKey(com.facebook.presto.spi.type.TimeZoneKey.getTimeZoneKey) TimeZoneKey(com.facebook.presto.spi.type.TimeZoneKey) DateTime(org.joda.time.DateTime) Test(org.testng.annotations.Test)

Example 3 with TimeZoneKey

use of com.facebook.presto.spi.type.TimeZoneKey in project presto by prestodb.

the class MaterializedResult method writeValue.

private static void writeValue(Type type, BlockBuilder blockBuilder, Object value) {
    if (value == null) {
        blockBuilder.appendNull();
    } else if (BIGINT.equals(type)) {
        type.writeLong(blockBuilder, ((Number) value).longValue());
    } else if (INTEGER.equals(type)) {
        type.writeLong(blockBuilder, ((Number) value).intValue());
    } else if (SMALLINT.equals(type)) {
        type.writeLong(blockBuilder, ((Number) value).shortValue());
    } else if (TINYINT.equals(type)) {
        type.writeLong(blockBuilder, ((Number) value).byteValue());
    } else if (REAL.equals(type)) {
        type.writeLong(blockBuilder, (long) floatToRawIntBits(((Number) value).floatValue()));
    } else if (DOUBLE.equals(type)) {
        type.writeDouble(blockBuilder, ((Number) value).doubleValue());
    } else if (BOOLEAN.equals(type)) {
        type.writeBoolean(blockBuilder, (Boolean) value);
    } else if (type instanceof VarcharType) {
        type.writeSlice(blockBuilder, Slices.utf8Slice((String) value));
    } else if (type instanceof CharType) {
        type.writeSlice(blockBuilder, Slices.utf8Slice((String) value));
    } else if (VARBINARY.equals(type)) {
        type.writeSlice(blockBuilder, Slices.wrappedBuffer((byte[]) value));
    } else if (DATE.equals(type)) {
        int days = ((SqlDate) value).getDays();
        type.writeLong(blockBuilder, days);
    } else if (TIME.equals(type)) {
        long millisUtc = ((SqlTime) value).getMillisUtc();
        type.writeLong(blockBuilder, millisUtc);
    } else if (TIME_WITH_TIME_ZONE.equals(type)) {
        long millisUtc = ((SqlTimeWithTimeZone) value).getMillisUtc();
        TimeZoneKey timeZoneKey = ((SqlTimeWithTimeZone) value).getTimeZoneKey();
        type.writeLong(blockBuilder, packDateTimeWithZone(millisUtc, timeZoneKey));
    } else if (TIMESTAMP.equals(type)) {
        long millisUtc = ((SqlTimestamp) value).getMillisUtc();
        type.writeLong(blockBuilder, millisUtc);
    } else if (TIMESTAMP_WITH_TIME_ZONE.equals(type)) {
        long millisUtc = ((SqlTimestampWithTimeZone) value).getMillisUtc();
        TimeZoneKey timeZoneKey = ((SqlTimestampWithTimeZone) value).getTimeZoneKey();
        type.writeLong(blockBuilder, packDateTimeWithZone(millisUtc, timeZoneKey));
    } else if (ARRAY.equals(type.getTypeSignature().getBase())) {
        List<Object> list = (List<Object>) value;
        Type elementType = ((ArrayType) type).getElementType();
        BlockBuilder arrayBlockBuilder = blockBuilder.beginBlockEntry();
        for (Object element : list) {
            writeValue(elementType, arrayBlockBuilder, element);
        }
        blockBuilder.closeEntry();
    } else if (MAP.equals(type.getTypeSignature().getBase())) {
        Map<Object, Object> map = (Map<Object, Object>) value;
        Type keyType = ((MapType) type).getKeyType();
        Type valueType = ((MapType) type).getValueType();
        BlockBuilder mapBlockBuilder = blockBuilder.beginBlockEntry();
        for (Entry<Object, Object> entry : map.entrySet()) {
            writeValue(keyType, mapBlockBuilder, entry.getKey());
            writeValue(valueType, mapBlockBuilder, entry.getValue());
        }
        blockBuilder.closeEntry();
    } else if (type instanceof RowType) {
        List<Object> row = (List<Object>) value;
        List<Type> fieldTypes = type.getTypeParameters();
        BlockBuilder rowBlockBuilder = blockBuilder.beginBlockEntry();
        for (int field = 0; field < row.size(); field++) {
            writeValue(fieldTypes.get(field), rowBlockBuilder, row.get(field));
        }
        blockBuilder.closeEntry();
    } else {
        throw new IllegalArgumentException("Unsupported type " + type);
    }
}
Also used : VarcharType(com.facebook.presto.spi.type.VarcharType) SqlTime(com.facebook.presto.spi.type.SqlTime) RowType(com.facebook.presto.type.RowType) SqlTimestamp(com.facebook.presto.spi.type.SqlTimestamp) ArrayType(com.facebook.presto.type.ArrayType) RowType(com.facebook.presto.type.RowType) ArrayType(com.facebook.presto.type.ArrayType) MapType(com.facebook.presto.type.MapType) Type(com.facebook.presto.spi.type.Type) CharType(com.facebook.presto.spi.type.CharType) VarcharType(com.facebook.presto.spi.type.VarcharType) Entry(java.util.Map.Entry) List(java.util.List) ArrayList(java.util.ArrayList) ImmutableList(com.google.common.collect.ImmutableList) CharType(com.facebook.presto.spi.type.CharType) TimeZoneKey(com.facebook.presto.spi.type.TimeZoneKey) Map(java.util.Map) ImmutableMap(com.google.common.collect.ImmutableMap) BlockBuilder(com.facebook.presto.spi.block.BlockBuilder)

Aggregations

TimeZoneKey (com.facebook.presto.spi.type.TimeZoneKey)3 DateTime (org.joda.time.DateTime)2 Test (org.testng.annotations.Test)2 BlockBuilder (com.facebook.presto.spi.block.BlockBuilder)1 CharType (com.facebook.presto.spi.type.CharType)1 SqlTime (com.facebook.presto.spi.type.SqlTime)1 SqlTimestamp (com.facebook.presto.spi.type.SqlTimestamp)1 TimeZoneKey.getTimeZoneKey (com.facebook.presto.spi.type.TimeZoneKey.getTimeZoneKey)1 Type (com.facebook.presto.spi.type.Type)1 VarcharType (com.facebook.presto.spi.type.VarcharType)1 ArrayType (com.facebook.presto.type.ArrayType)1 MapType (com.facebook.presto.type.MapType)1 RowType (com.facebook.presto.type.RowType)1 ImmutableList (com.google.common.collect.ImmutableList)1 ImmutableMap (com.google.common.collect.ImmutableMap)1 Connection (java.sql.Connection)1 ResultSet (java.sql.ResultSet)1 Statement (java.sql.Statement)1 Timestamp (java.sql.Timestamp)1 ArrayList (java.util.ArrayList)1