protected static String getPrimitiveAvroTypeFromCassandraType(DataType dataType) { // Map types from Cassandra to Avro where possible if (dataType.equals(DataType.ascii()) || dataType.equals(DataType.text()) || dataType.equals(DataType.varchar()) // Nonstandard types represented by this processor as a string || dataType.equals(DataType.timestamp()) || dataType.equals(DataType.timeuuid()) || dataType.equals(DataType.uuid()) || dataType.equals(DataType.inet()) || dataType.equals(DataType.varint())) { return "string"; } else if (dataType.equals(DataType.cboolean())) { return "boolean"; } else if (dataType.equals(DataType.cint())) { return "int"; } else if (dataType.equals(DataType.bigint()) || dataType.equals(DataType.counter())) { return "long"; } else if (dataType.equals(DataType.cfloat())) { return "float"; } else if (dataType.equals(DataType.cdouble())) { return "double"; } else if (dataType.equals(DataType.blob())) { return "bytes"; } else { throw new IllegalArgumentException("createSchema: Unknown Cassandra data type " + dataType.getName() + " cannot be converted to Avro type"); } }
|| mainType.equals(DataType.text()) || mainType.equals(DataType.varchar()) || mainType.equals(DataType.timeuuid()) || mainType.equals(DataType.uuid()) || mainType.equals(DataType.inet())
private TimeUUIDCodec() { super(timeuuid()); }
.put(DataType.date(), LocalDate.fromDaysSinceEpoch(16071)) .put(DataType.time(), 54012123450000L) .put(DataType.timeuuid(), UUID.fromString("FE2B4360-28C6-11E2-81C1-0800200C9A66")) .put(DataType.uuid(), UUID.fromString("067e6162-3b6f-4ae2-a171-2470b63dff00")) .put(DataType.varint(), new BigInteger(Integer.toString(Integer.MAX_VALUE) + "000"))
/** * Ensures that {@link TypeCodec#timeUUID()} is resolved for all UUIDs and throws an {@link * InvalidTypeException} when attempting to serialize or format a non-type 1 UUID. * * @jira_ticket JAVA-965 */ @Test(groups = "unit") public void should_resolve_timeuuid_codec_for_all_uuids_and_fail_to_serialize_non_type1_uuid() { UUID type4UUID = UUID.randomUUID(); TypeCodec<UUID> codec = codecRegistry.codecFor(DataType.timeuuid(), type4UUID); // Should resolve the TimeUUIDCodec, but not serialize/format a type4 uuid with it. assertThat(codec) .isSameAs(TypeCodec.timeUUID()) .accepts(UUID.class) .cannotSerialize(type4UUID) .cannotFormat(type4UUID); }
@Test(groups = "short") public void should_ignore_whitespace() { assertThat(parse(" int ", cluster(), null, null, null, false, false)).isEqualTo(cint()); assertThat(parse(" set < bigint > ", cluster(), null, null, null, false, false)) .isEqualTo(set(bigint())); assertThat(parse(" map < date , timeuuid > ", cluster(), null, null, null, false, false)) .isEqualTo(map(date(), timeuuid())); }
@Test(groups = "short") public void should_parse_frozen_collection_types() { assertThat(parse("frozen<list<int>>", cluster(), null, null, null, false, false)) .isEqualTo(list(cint(), true)); assertThat(parse("frozen<set<bigint>>", cluster(), null, null, null, false, false)) .isEqualTo(set(bigint(), true)); assertThat(parse("frozen<map<date,timeuuid>>", cluster(), null, null, null, false, false)) .isEqualTo(map(date(), timeuuid(), true)); }
@DataProvider public static Object[][] cqlAndValue() { return new Object[][] { {DataType.blob(), ByteBuffer.allocate(0), TypeCodec.blob()}, {DataType.cboolean(), true, TypeCodec.cboolean()}, {DataType.smallint(), (short) 42, TypeCodec.smallInt()}, {DataType.tinyint(), (byte) 42, TypeCodec.tinyInt()}, {DataType.cint(), 42, TypeCodec.cint()}, {DataType.bigint(), 42L, TypeCodec.bigint()}, {DataType.counter(), 42L, TypeCodec.counter()}, {DataType.cdouble(), 42D, TypeCodec.cdouble()}, {DataType.cfloat(), 42F, TypeCodec.cfloat()}, {DataType.varint(), new BigInteger("1234"), TypeCodec.varint()}, {DataType.decimal(), new BigDecimal("123.45"), TypeCodec.decimal()}, {DataType.varchar(), "foo", TypeCodec.varchar()}, {DataType.ascii(), "foo", TypeCodec.ascii()}, {DataType.timestamp(), new Date(42), TypeCodec.timestamp()}, {DataType.date(), LocalDate.fromDaysSinceEpoch(42), TypeCodec.date()}, {DataType.time(), 42L, TypeCodec.time()}, {DataType.uuid(), UUID.randomUUID(), TypeCodec.uuid()}, {DataType.timeuuid(), UUID.randomUUID(), TypeCodec.timeUUID()}, {DataType.inet(), mock(InetAddress.class), TypeCodec.inet()}, {DataType.duration(), Duration.from("1mo2d3h"), TypeCodec.duration()} }; }
@Test(groups = "short") public void should_parse_collection_types() { assertThat(parse("list<int>", cluster(), null, null, null, false, false)) .isEqualTo(list(cint())); assertThat(parse("set<bigint>", cluster(), null, null, null, false, false)) .isEqualTo(set(bigint())); assertThat(parse("map<date,timeuuid>", cluster(), null, null, null, false, false)) .isEqualTo(map(date(), timeuuid())); }
@Test(groups = "short") public void should_ignore_case() { assertThat(parse("INT", cluster(), null, null, null, false, false)).isEqualTo(cint()); assertThat(parse("SET<BIGint>", cluster(), null, null, null, false, false)) .isEqualTo(set(bigint())); assertThat( parse("FROZEN<mAp<Date,Tuple<timeUUID>>>", cluster(), null, null, null, false, false)) .isEqualTo(map(date(), cluster().getMetadata().newTupleType(timeuuid()), true)); }
.hasName("v") .isRegularColumn() .hasType(timeuuid());
.hasName("t") .isRegularColumn() .hasType(timeuuid()); assertThat(table.getColumns().get(3)) .isNotNull()
.hasName("m") .isRegularColumn() .hasType(map(text(), timeuuid())); assertThat(table.getColumns().get(3)) .isNotNull()
.hasName("v") .isRegularColumn() .hasType(timeuuid());
@DataProvider public static Object[][] cql() { return new Object[][] { {DataType.blob(), TypeCodec.blob()}, {DataType.cboolean(), TypeCodec.cboolean()}, {DataType.smallint(), TypeCodec.smallInt()}, {DataType.tinyint(), TypeCodec.tinyInt()}, {DataType.cint(), TypeCodec.cint()}, {DataType.bigint(), TypeCodec.bigint()}, {DataType.counter(), TypeCodec.counter()}, {DataType.cdouble(), TypeCodec.cdouble()}, {DataType.cfloat(), TypeCodec.cfloat()}, {DataType.varint(), TypeCodec.varint()}, {DataType.decimal(), TypeCodec.decimal()}, {DataType.varchar(), TypeCodec.varchar()}, {DataType.ascii(), TypeCodec.ascii()}, {DataType.timestamp(), TypeCodec.timestamp()}, {DataType.date(), TypeCodec.date()}, {DataType.time(), TypeCodec.time()}, {DataType.uuid(), TypeCodec.uuid()}, {DataType.timeuuid(), TypeCodec.timeUUID()}, {DataType.inet(), TypeCodec.inet()}, {DataType.duration(), TypeCodec.duration()} }; }
@DataProvider public static Object[][] cqlAndJava() { return new Object[][] { {DataType.blob(), ByteBuffer.class, TypeCodec.blob()}, {DataType.cboolean(), Boolean.class, TypeCodec.cboolean()}, {DataType.smallint(), Short.class, TypeCodec.smallInt()}, {DataType.tinyint(), Byte.class, TypeCodec.tinyInt()}, {DataType.cint(), Integer.class, TypeCodec.cint()}, {DataType.bigint(), Long.class, TypeCodec.bigint()}, {DataType.counter(), Long.class, TypeCodec.counter()}, {DataType.cdouble(), Double.class, TypeCodec.cdouble()}, {DataType.cfloat(), Float.class, TypeCodec.cfloat()}, {DataType.varint(), BigInteger.class, TypeCodec.varint()}, {DataType.decimal(), BigDecimal.class, TypeCodec.decimal()}, {DataType.varchar(), String.class, TypeCodec.varchar()}, {DataType.ascii(), String.class, TypeCodec.ascii()}, {DataType.timestamp(), Date.class, TypeCodec.timestamp()}, {DataType.date(), LocalDate.class, TypeCodec.date()}, {DataType.time(), Long.class, TypeCodec.time()}, {DataType.uuid(), UUID.class, TypeCodec.uuid()}, {DataType.timeuuid(), UUID.class, TypeCodec.timeUUID()}, {DataType.inet(), InetAddress.class, TypeCodec.inet()}, {DataType.duration(), Duration.class, TypeCodec.duration()} }; }
@Test(groups = "short") public void should_parse_native_types() { assertThat(parse("ascii", cluster(), null, null, null, false, false)).isEqualTo(ascii()); assertThat(parse("bigint", cluster(), null, null, null, false, false)).isEqualTo(bigint()); assertThat(parse("blob", cluster(), null, null, null, false, false)).isEqualTo(blob()); assertThat(parse("boolean", cluster(), null, null, null, false, false)).isEqualTo(cboolean()); assertThat(parse("counter", cluster(), null, null, null, false, false)).isEqualTo(counter()); assertThat(parse("decimal", cluster(), null, null, null, false, false)).isEqualTo(decimal()); assertThat(parse("double", cluster(), null, null, null, false, false)).isEqualTo(cdouble()); assertThat(parse("float", cluster(), null, null, null, false, false)).isEqualTo(cfloat()); assertThat(parse("inet", cluster(), null, null, null, false, false)).isEqualTo(inet()); assertThat(parse("int", cluster(), null, null, null, false, false)).isEqualTo(cint()); assertThat(parse("text", cluster(), null, null, null, false, false)).isEqualTo(text()); assertThat(parse("varchar", cluster(), null, null, null, false, false)).isEqualTo(varchar()); assertThat(parse("timestamp", cluster(), null, null, null, false, false)) .isEqualTo(timestamp()); assertThat(parse("date", cluster(), null, null, null, false, false)).isEqualTo(date()); assertThat(parse("time", cluster(), null, null, null, false, false)).isEqualTo(time()); assertThat(parse("uuid", cluster(), null, null, null, false, false)).isEqualTo(uuid()); assertThat(parse("varint", cluster(), null, null, null, false, false)).isEqualTo(varint()); assertThat(parse("timeuuid", cluster(), null, null, null, false, false)).isEqualTo(timeuuid()); assertThat(parse("tinyint", cluster(), null, null, null, false, false)).isEqualTo(tinyint()); assertThat(parse("smallint", cluster(), null, null, null, false, false)).isEqualTo(smallint()); }
@Test(groups = "short") public void should_parse_collection_types() { assertThat(parse("list<int>", cluster(), null, null, null, false, false)) .isEqualTo(list(cint())); assertThat(parse("set<bigint>", cluster(), null, null, null, false, false)) .isEqualTo(set(bigint())); assertThat(parse("map<date,timeuuid>", cluster(), null, null, null, false, false)) .isEqualTo(map(date(), timeuuid())); }
@Test(groups = "short") public void should_parse_frozen_collection_types() { assertThat(parse("frozen<list<int>>", cluster(), null, null, null, false, false)) .isEqualTo(list(cint(), true)); assertThat(parse("frozen<set<bigint>>", cluster(), null, null, null, false, false)) .isEqualTo(set(bigint(), true)); assertThat(parse("frozen<map<date,timeuuid>>", cluster(), null, null, null, false, false)) .isEqualTo(map(date(), timeuuid(), true)); }
@Test(groups = "short") public void should_ignore_case() { assertThat(parse("INT", cluster(), null, null, null, false, false)).isEqualTo(cint()); assertThat(parse("SET<BIGint>", cluster(), null, null, null, false, false)) .isEqualTo(set(bigint())); assertThat( parse("FROZEN<mAp<Date,Tuple<timeUUID>>>", cluster(), null, null, null, false, false)) .isEqualTo(map(date(), cluster().getMetadata().newTupleType(timeuuid()), true)); }