Skip to content

Commit 3d295de

Browse files
dalaroolim7t
authored andcommitted
Add V4+ features: DATE_TYPE and SMALLINT_AND_TINYINT_TYPES
This commit adds two DefaultProtocolFeature enum elements, supported from V4 onward: * SMALLINT_AND_TINYINT_TYPES * DATE_TYPE
1 parent 513d8be commit 3d295de

3 files changed

Lines changed: 40 additions & 1 deletion

File tree

core/src/main/java/com/datastax/oss/driver/internal/core/DefaultProtocolFeature.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,5 +35,19 @@ public enum DefaultProtocolFeature implements ProtocolFeature {
3535
* @see <a href="https://issues.apache.org/jira/browse/CASSANDRA-10145">CASSANDRA-10145</a>
3636
*/
3737
PER_REQUEST_KEYSPACE,
38+
39+
/**
40+
* Support for smallint and tinyint types.
41+
*
42+
* @see <a href="https://jira.apache.org/jira/browse/CASSANDRA-8951">CASSANDRA-8951</a>
43+
*/
44+
SMALLINT_AND_TINYINT_TYPES,
45+
46+
/**
47+
* Support for the date type.
48+
*
49+
* @see <a href="https://jira.apache.org/jira/browse/CASSANDRA-7523">CASSANDRA-7523</a>
50+
*/
51+
DATE_TYPE,
3852
;
3953
}

core/src/main/java/com/datastax/oss/driver/internal/core/DefaultProtocolVersionRegistry.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -230,7 +230,9 @@ private void removeHigherThan(
230230
@Override
231231
public boolean supports(ProtocolVersion version, ProtocolFeature feature) {
232232
int code = version.getCode();
233-
if (DefaultProtocolFeature.UNSET_BOUND_VALUES.equals(feature)) {
233+
if (DefaultProtocolFeature.SMALLINT_AND_TINYINT_TYPES.equals(feature)
234+
|| DefaultProtocolFeature.DATE_TYPE.equals(feature)
235+
|| DefaultProtocolFeature.UNSET_BOUND_VALUES.equals(feature)) {
234236
// All DSE versions and all OSS V4+
235237
return DefaultProtocolVersion.V4.getCode() <= code;
236238
} else if (DefaultProtocolFeature.PER_REQUEST_KEYSPACE.equals(feature)) {

core/src/test/java/com/datastax/oss/driver/internal/core/DefaultProtocolVersionRegistryTest.java

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,13 @@
1515
*/
1616
package com.datastax.oss.driver.internal.core;
1717

18+
import static com.datastax.dse.driver.api.core.DseProtocolVersion.DSE_V1;
19+
import static com.datastax.dse.driver.api.core.DseProtocolVersion.DSE_V2;
1820
import static com.datastax.oss.driver.api.core.ProtocolVersion.V3;
1921
import static com.datastax.oss.driver.api.core.ProtocolVersion.V4;
22+
import static com.datastax.oss.driver.api.core.ProtocolVersion.V5;
23+
import static com.datastax.oss.driver.internal.core.DefaultProtocolFeature.DATE_TYPE;
24+
import static com.datastax.oss.driver.internal.core.DefaultProtocolFeature.SMALLINT_AND_TINYINT_TYPES;
2025
import static org.assertj.core.api.Assertions.assertThat;
2126

2227
import com.datastax.dse.driver.api.core.DseProtocolVersion;
@@ -114,6 +119,24 @@ public void should_pick_oss_v3_as_highest_common_when_one_node_is_cassandra_2_1(
114119
.isEqualTo(ProtocolVersion.V3);
115120
}
116121

122+
@Test
123+
public void should_support_date_type_on_oss_v4_and_later() {
124+
assertThat(registry.supports(V3, DATE_TYPE)).isFalse();
125+
assertThat(registry.supports(V4, DATE_TYPE)).isTrue();
126+
assertThat(registry.supports(V5, DATE_TYPE)).isTrue();
127+
assertThat(registry.supports(DSE_V1, DATE_TYPE)).isTrue();
128+
assertThat(registry.supports(DSE_V2, DATE_TYPE)).isTrue();
129+
}
130+
131+
@Test
132+
public void should_support_smallint_and_tinyint_types_on_oss_v4_and_later() {
133+
assertThat(registry.supports(V3, SMALLINT_AND_TINYINT_TYPES)).isFalse();
134+
assertThat(registry.supports(V4, SMALLINT_AND_TINYINT_TYPES)).isTrue();
135+
assertThat(registry.supports(V5, SMALLINT_AND_TINYINT_TYPES)).isTrue();
136+
assertThat(registry.supports(DSE_V1, SMALLINT_AND_TINYINT_TYPES)).isTrue();
137+
assertThat(registry.supports(DSE_V2, SMALLINT_AND_TINYINT_TYPES)).isTrue();
138+
}
139+
117140
private Node mockCassandraNode(String rawVersion) {
118141
Node node = Mockito.mock(Node.class);
119142
if (rawVersion != null) {

0 commit comments

Comments
 (0)