Types.NestedField.required(0, "id", Types.LongType.get()), Types.NestedField.optional(3, "location", Types.StructType.of( Types.NestedField.required(1, "lat", Types.FloatType.get()), Types.NestedField.required(2, "long", Types.FloatType.get()) )) ); Types.NestedField.required(1, "lat", Types.FloatType.get()) )) ); Types.NestedField.required(2, "long", Types.FloatType.get()) )) );
Types.NestedField.required(0, "id", Types.LongType.get()), Types.NestedField.optional(3, "location", Types.StructType.of( Types.NestedField.required(1, "lat", Types.FloatType.get()), Types.NestedField.required(2, "long", Types.FloatType.get()) )) ); Types.NestedField.required(1, "lat", Types.FloatType.get()) )) ); Types.NestedField.required(2, "long", Types.FloatType.get()) )) );
return Types.LongType.get(); case FLOAT: return Types.FloatType.get(); case DOUBLE: return Types.DoubleType.get();
return Types.LongType.get(); case FLOAT: return Types.FloatType.get(); case DOUBLE: return Types.DoubleType.get();
return Types.LongType.get(); case FLOAT: return Types.FloatType.get(); case DOUBLE: return Types.DoubleType.get();
@Test @SuppressWarnings("unchecked") public void testDoubleToFloatConversion() { StructType struct = StructType.of(required(18, "f", Types.FloatType.get()));
Types.StructType.of( required(12, "latitude", Types.DoubleType.get()), optional(25, "alt", Types.FloatType.get()) ))), optional(5, "points", Types.ListType.ofOptional(14, .addColumn("locations", "alt", Types.FloatType.get()) // map of structs .addColumn("points", "z", Types.LongType.get()) // list of structs .addColumn("points", "t.t", Types.LongType.get()) // name with '.'
Types.NestedField.required(0, "id", Types.LongType.get()), Types.NestedField.optional(3, "location", Types.StructType.of( Types.NestedField.required(1, "lat", Types.FloatType.get()), Types.NestedField.required(2, "long", Types.FloatType.get()) )) ); Types.NestedField.required(1, "lat", Types.FloatType.get()) )) ); Types.NestedField.required(2, "long", Types.FloatType.get()) )) );
Types.NestedField.required(0, "id", Types.LongType.get()), Types.NestedField.optional(3, "location", Types.StructType.of( Types.NestedField.required(1, "lat", Types.FloatType.get()), Types.NestedField.required(2, "long", Types.FloatType.get()) )) ); Types.NestedField.required(1, "lat", Types.FloatType.get()) )) ); Types.NestedField.required(2, "long", Types.FloatType.get()) )) );
), Types.StructType.of( required(12, "lat", Types.FloatType.get()), required(13, "long", Types.FloatType.get()), optional(25, "alt", Types.FloatType.get()) ))), optional(5, "points", Types.ListType.ofOptional(14, .addColumn("locations", "alt", Types.FloatType.get()) // map of structs .addColumn("points", "z", Types.LongType.get()) // list of structs .addColumn("points", "t.t", Types.LongType.get()) // name with '.'
Types.IntegerType.get(), Types.LongType.get(), Types.FloatType.get(), Types.DoubleType.get(), Types.DateType.get(),
optional(21, "int", Types.IntegerType.get()), optional(22, "long", Types.LongType.get()), optional(23, "float", Types.FloatType.get()), optional(24, "double", Types.DoubleType.get()), optional(25, "date", Types.DateType.get()),
return Types.FloatType.get();
Set<Pair<Type.PrimitiveType, Type.PrimitiveType>> allowedUpdates = Sets.newHashSet( Pair.of(Types.IntegerType.get(), Types.LongType.get()), Pair.of(Types.FloatType.get(), Types.DoubleType.get()), Pair.of(Types.DecimalType.of(9, 2), Types.DecimalType.of(18, 2)) ); Types.FloatType.get(), Types.DoubleType.get(), Types.DateType.get(), Types.TimeType.get(), Types.TimestampType.withZone(), Types.TimestampType.withoutZone(), Types.StringType.get(), Types.UUIDType.get(), Types.BinaryType.get(),
@Test public void testIdentityConversions() { List<Pair<Literal<?>, Type>> pairs = Arrays.asList( Pair.of(Literal.of(true), Types.BooleanType.get()), Pair.of(Literal.of(34), Types.IntegerType.get()), Pair.of(Literal.of(34L), Types.LongType.get()), Pair.of(Literal.of(34.11F), Types.FloatType.get()), Pair.of(Literal.of(34.55D), Types.DoubleType.get()), Pair.of(Literal.of("34.55"), Types.DecimalType.of(9, 2)), Pair.of(Literal.of("2017-08-18"), Types.DateType.get()), Pair.of(Literal.of("14:21:01.919"), Types.TimeType.get()), Pair.of(Literal.of("2017-08-18T14:21:01.919"), Types.TimestampType.withoutZone()), Pair.of(Literal.of("abc"), Types.StringType.get()), Pair.of(Literal.of(UUID.randomUUID()), Types.UUIDType.get()), Pair.of(Literal.of(new byte[] {0, 1, 2}), Types.FixedType.ofLength(3)), Pair.of(Literal.of(ByteBuffer.wrap(new byte[] {0, 1, 2})), Types.BinaryType.get()) ); for (Pair<Literal<?>, Type> pair : pairs) { Literal<?> lit = pair.first(); Type type = pair.second(); // first, convert the literal to the target type (date/times start as strings) Literal<?> expected = lit.to(type); // then check that converting again to the same type results in an identical literal Assert.assertSame("Converting twice should produce identical values", expected, expected.to(type)); } }