return row.getDate(i); } else if (dataType.equals(DataType.time())) { return row.getTime(i);
private TimeCodec() { super(DataType.time()); }
.put(DataType.timestamp(), new Date(872835240000L)) .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"))
@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()} }; }
private TimeCodec() { super(DataType.time()); }
@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()} }; }
private TimeCodec() { super(DataType.time()); }
@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()} }; }
private TimeCodec() { super(DataType.time()); }
@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()); }
private LocalTimeCodec() { super(DataType.time(), LocalTime.class); }
private LocalTimeCodec() { super(DataType.time(), java.time.LocalTime.class); }
private StringTimeCodec() { super(DataType.time(), String.class); }
private JavaSqlTimeCodec() { super(DataType.time(), Time.class); }
@Test(groups = "short") @CassandraVersion("2.0.0") public void should_log_all_parameter_types_simple_statements() throws Exception { // given normal.setLevel(TRACE); queryLogger = QueryLogger.builder().withMaxParameterValueLength(Integer.MAX_VALUE).build(); cluster().register(queryLogger); // when String query = "UPDATE test SET " + assignments + " WHERE pk = 42"; SimpleStatement ss = new SimpleStatement(query, values.toArray()); session().execute(ss); // then String line = normalAppender.waitAndGet(10000); assertThat(line).contains("Query completed normally").contains(ipOfNode(1)).contains(query); CodecRegistry codecRegistry = cluster().getConfiguration().getCodecRegistry(); for (DataType type : dataTypes) { TypeCodec<Object> codec; if (type.equals(DataType.time())) { codec = codecRegistry.codecFor(DataType.bigint()); } else { codec = codecRegistry.codecFor(type); } assertThat(line).contains(codec.format(getFixedValue(type))); } }
DataTypeClassNameParser.parseOne( "org.apache.cassandra.db.marshal.TimeType", protocolVersion, codecRegistry), DataType.time()); assertEquals( DataTypeClassNameParser.parseOne(
/** * Resolve Cassandra {@link DataType} with conditional handling of {@code time} data type. * * @param propertyType * @param converted * @return */ @Nullable private DataType doGetDataType(Class<?> propertyType, Class<?> converted) { if (this.customConversions instanceof CassandraCustomConversions) { CassandraCustomConversions conversions = (CassandraCustomConversions) this.customConversions; if (conversions.isNativeTimeTypeMarker(converted) || (conversions.isNativeTimeTypeMarker(propertyType) && Long.class.equals(converted))) { return DataType.time(); } } return CassandraSimpleTypeHolder.getDataTypeFor(converted); }
@SuppressWarnings("unchecked") @Override public <P> Getter<GettableByIndexData, P> newGetter(Type target, DatastaxColumnKey key, Object... properties) { final Class<?> javaClass = key.getDataType() != null ? DataTypeHelper.asJavaClass(key.getDataType()) : null; if (key.getDataType() == DataType.time()) { return (Getter<GettableByIndexData, P>) new DatastaxTimeGetter(key.getIndex()); } else if (javaClass == null || javaClass.equals(Long.class)) { return (Getter<GettableByIndexData, P>) new DatastaxLongGetter(key.getIndex()); } else if (Number.class.isAssignableFrom(javaClass)) { return (Getter<GettableByIndexData, P>) new DatastaxGenericLongGetter(key.getIndex(), key.getDataType()); } return null; } });
@SuppressWarnings("unchecked") @Override public <P> Setter<SettableByIndexData, P> getSetter(PropertyMapping<?, ?, DatastaxColumnKey> arg) { if (arg.getColumnKey().getDataType() == DataType.time()) { return (Setter<SettableByIndexData, P>)new TimeSettableDataSetter(arg.getColumnKey().getIndex()); } return (Setter<SettableByIndexData, P>) new LongSettableDataSetter(arg.getColumnKey().getIndex()); } });
@Test(groups = "short") @CassandraVersion("2.0.0") public void should_log_all_parameter_types_simple_statements() throws Exception { // given normal.setLevel(TRACE); queryLogger = QueryLogger.builder().withMaxParameterValueLength(Integer.MAX_VALUE).build(); cluster().register(queryLogger); // when String query = "UPDATE test SET " + assignments + " WHERE pk = 42"; SimpleStatement ss = new SimpleStatement(query, values.toArray()); session().execute(ss); // then String line = normalAppender.waitAndGet(10000); assertThat(line).contains("Query completed normally").contains(ipOfNode(1)).contains(query); CodecRegistry codecRegistry = cluster().getConfiguration().getCodecRegistry(); for (DataType type : dataTypes) { TypeCodec<Object> codec; if (type.equals(DataType.time())) { codec = codecRegistry.codecFor(DataType.bigint()); } else { codec = codecRegistry.codecFor(type); } assertThat(line).contains(codec.format(getFixedValue(type))); } }