This is an automated email from the ASF dual-hosted git repository.
ycai pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/cassandra-analytics.git
The following commit(s) were added to refs/heads/trunk by this push:
new 555e849 CASSANDRA-19836: Fix NPE when writing UDT values (#74)
555e849 is described below
commit 555e8494d3ca27a7b35aebabb1f669eede20cc53
Author: Yifan Cai <[email protected]>
AuthorDate: Tue Aug 20 17:33:35 2024 -0700
CASSANDRA-19836: Fix NPE when writing UDT values (#74)
When UDT field values are set to null, the bulk writer throws NPE
Patch by Yifan Cai; Reviewed by Dinesh Joshi, Doug Rohrer for
CASSANDRA-19836
---
CHANGES.txt | 1 +
.../bulkwriter/CassandraBulkWriterContext.java | 2 +-
.../spark/bulkwriter/RecordWriterTest.java | 2 +-
.../cassandra/analytics/BulkWriteUdtTest.java | 12 ++++++--
.../cassandra/analytics/DataGenerationUtils.java | 35 ++++++++++++----------
.../org/apache/cassandra/spark/data/CqlType.java | 29 ++++++++++++++++--
.../cassandra/spark/data/complex/CqlFrozen.java | 2 +-
.../cassandra/spark/data/complex/CqlList.java | 2 +-
.../cassandra/spark/data/complex/CqlMap.java | 2 +-
.../cassandra/spark/data/complex/CqlSet.java | 2 +-
.../cassandra/spark/data/complex/CqlTuple.java | 4 +--
.../cassandra/spark/data/complex/CqlUdt.java | 22 +++++++-------
.../apache/cassandra/spark/data/types/BigInt.java | 2 +-
.../apache/cassandra/spark/data/types/Blob.java | 2 +-
.../apache/cassandra/spark/data/types/Boolean.java | 2 +-
.../apache/cassandra/spark/data/types/Date.java | 2 +-
.../apache/cassandra/spark/data/types/Decimal.java | 2 +-
.../apache/cassandra/spark/data/types/Double.java | 2 +-
.../apache/cassandra/spark/data/types/Empty.java | 2 +-
.../apache/cassandra/spark/data/types/Float.java | 2 +-
.../apache/cassandra/spark/data/types/Inet.java | 2 +-
.../org/apache/cassandra/spark/data/types/Int.java | 2 +-
.../cassandra/spark/data/types/SmallInt.java | 2 +-
.../cassandra/spark/data/types/StringBased.java | 2 +-
.../apache/cassandra/spark/data/types/Time.java | 2 +-
.../cassandra/spark/data/types/Timestamp.java | 2 +-
.../apache/cassandra/spark/data/types/TinyInt.java | 2 +-
.../apache/cassandra/spark/data/types/UUID.java | 2 +-
.../apache/cassandra/spark/data/types/VarInt.java | 2 +-
29 files changed, 94 insertions(+), 55 deletions(-)
diff --git a/CHANGES.txt b/CHANGES.txt
index 108172a..cec6e0a 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
1.0.0
+ * Fix NPE when writing UDT values (CASSANDRA-19836)
* Add job_timeout_seconds writer option (CASSANDRA-19827)
* Prevent double closing sstable writer (CASSANDRA-19821)
* Stream sstable eagerly when bulk writing to reclaim local disk space sooner
(CASSANDRA-19806)
diff --git
a/cassandra-analytics-core/src/main/java/org/apache/cassandra/spark/bulkwriter/CassandraBulkWriterContext.java
b/cassandra-analytics-core/src/main/java/org/apache/cassandra/spark/bulkwriter/CassandraBulkWriterContext.java
index 89f2bb9..632b6c0 100644
---
a/cassandra-analytics-core/src/main/java/org/apache/cassandra/spark/bulkwriter/CassandraBulkWriterContext.java
+++
b/cassandra-analytics-core/src/main/java/org/apache/cassandra/spark/bulkwriter/CassandraBulkWriterContext.java
@@ -254,6 +254,6 @@ public class CassandraBulkWriterContext implements
BulkWriterContext, KryoSerial
conf.getTTLOptions(),
conf.getTimestampOptions(),
lowestCassandraVersion,
-
jobInfo.qualifiedTableName().quoteIdentifiers());
+ conf.quoteIdentifiers);
}
}
diff --git
a/cassandra-analytics-core/src/test/java/org/apache/cassandra/spark/bulkwriter/RecordWriterTest.java
b/cassandra-analytics-core/src/test/java/org/apache/cassandra/spark/bulkwriter/RecordWriterTest.java
index 6fcd366..bb2c4f9 100644
---
a/cassandra-analytics-core/src/test/java/org/apache/cassandra/spark/bulkwriter/RecordWriterTest.java
+++
b/cassandra-analytics-core/src/test/java/org/apache/cassandra/spark/bulkwriter/RecordWriterTest.java
@@ -22,8 +22,8 @@ package org.apache.cassandra.spark.bulkwriter;
import java.math.BigInteger;
import java.nio.file.Path;
import java.util.Arrays;
-import java.util.HashSet;
import java.util.Comparator;
+import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
diff --git
a/cassandra-analytics-integration-tests/src/test/java/org/apache/cassandra/analytics/BulkWriteUdtTest.java
b/cassandra-analytics-integration-tests/src/test/java/org/apache/cassandra/analytics/BulkWriteUdtTest.java
index 47ad6cf..abd8beb 100644
---
a/cassandra-analytics-integration-tests/src/test/java/org/apache/cassandra/analytics/BulkWriteUdtTest.java
+++
b/cassandra-analytics-integration-tests/src/test/java/org/apache/cassandra/analytics/BulkWriteUdtTest.java
@@ -19,6 +19,8 @@
package org.apache.cassandra.analytics;
+import java.util.function.Predicate;
+
import org.junit.jupiter.api.Test;
import org.apache.cassandra.distributed.api.ConsistencyLevel;
@@ -61,7 +63,8 @@ class BulkWriteUdtTest extends
SharedClusterSparkIntegrationTestBase
void testWriteWithUdt()
{
SparkSession spark = getOrCreateSparkSession();
- Dataset<Row> df = DataGenerationUtils.generateUdtData(spark,
ROW_COUNT);
+ Predicate<Integer> nullSetter = index -> index % 2 == 0;
+ Dataset<Row> df = DataGenerationUtils.generateUdtData(spark,
ROW_COUNT, nullSetter);
bulkWriterDataFrameWriter(df, UDT_TABLE_NAME).save();
@@ -76,7 +79,8 @@ class BulkWriteUdtTest extends
SharedClusterSparkIntegrationTestBase
void testWriteWithNestedUdt()
{
SparkSession spark = getOrCreateSparkSession();
- Dataset<Row> df = DataGenerationUtils.generateNestedUdtData(spark,
ROW_COUNT);
+ Predicate<Integer> nullSetter = index -> index % 2 == 0;
+ Dataset<Row> df = DataGenerationUtils.generateNestedUdtData(spark,
ROW_COUNT, nullSetter);
bulkWriterDataFrameWriter(df, NESTED_TABLE_NAME).save();
@@ -90,9 +94,11 @@ class BulkWriteUdtTest extends
SharedClusterSparkIntegrationTestBase
@NotNull
public static String defaultRowFormatter(com.datastax.driver.core.Row row)
{
+ // Formats as field:value with no whitespaces, and strings quoted
+ // Driver Codec writes "NULL" for null value. Spark DF writes "null".
return row.getLong(0) +
":" +
- row.getUDTValue(1); // Formats as field:value with no
whitespaces, and strings quoted
+ row.getUDTValue(1).toString().replace("NULL", "null");
}
@Override
diff --git
a/cassandra-analytics-integration-tests/src/test/java/org/apache/cassandra/analytics/DataGenerationUtils.java
b/cassandra-analytics-integration-tests/src/test/java/org/apache/cassandra/analytics/DataGenerationUtils.java
index 8ed742a..0503c03 100644
---
a/cassandra-analytics-integration-tests/src/test/java/org/apache/cassandra/analytics/DataGenerationUtils.java
+++
b/cassandra-analytics-integration-tests/src/test/java/org/apache/cassandra/analytics/DataGenerationUtils.java
@@ -23,6 +23,7 @@ import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
+import java.util.function.Predicate;
import java.util.stream.Collectors;
import java.util.stream.IntStream;
@@ -154,6 +155,7 @@ public final class DataGenerationUtils
public static Dataset<Row> generateCourseData(SparkSession spark, Integer
ttl, Long timestamp, int rowCount)
{
SQLContext sql = spark.sqlContext();
+ // Note: only primary key columns are required to be not nullable; All
columns are nullable only for test convenience
StructType schema = new StructType()
.add("id", IntegerType, false)
.add("course", StringType, false)
@@ -189,40 +191,43 @@ public final class DataGenerationUtils
return sql.createDataFrame(rows, schema);
}
- public static Dataset<Row> generateUdtData(SparkSession spark, int
rowCount)
+ public static Dataset<Row> generateUdtData(SparkSession spark, int
rowCount, Predicate<Integer> nullUdtFieldValuePredicate)
{
SQLContext sql = spark.sqlContext();
- StructType udtType = createStructType(new StructField[]{new
StructField("f1", StringType, false, Metadata.empty()),
- new
StructField("f2", IntegerType, false, Metadata.empty())});
+ StructType udtType = createStructType(new StructField[]{new
StructField("f1", StringType, true, Metadata.empty()),
+ new
StructField("f2", IntegerType, true, Metadata.empty())});
StructType schema = new StructType()
- .add("id", IntegerType, false)
- .add("udtfield", udtType, false);
+ .add("id", IntegerType, false) // pk is not
nullable
+ .add("udtfield", udtType, true); // value column
is nullable
List<Row> rows = IntStream.range(0, rowCount)
.mapToObj(id -> {
String course = "course" + id;
- Object[] values = {id,
RowFactory.create(course, id)};
+ Row udt = RowFactory.create(course,
nullUdtFieldValuePredicate.test(id) ? null : id);
+ Object[] values = {id, udt};
return RowFactory.create(values);
}).collect(Collectors.toList());
return sql.createDataFrame(rows, schema);
}
- public static Dataset<Row> generateNestedUdtData(SparkSession spark, int
rowCount)
+ public static Dataset<Row> generateNestedUdtData(SparkSession spark, int
rowCount, Predicate<Integer> nullUdtFieldValuePredicate)
{
SQLContext sql = spark.sqlContext();
- StructType udtType = createStructType(new StructField[]{new
StructField("f1", StringType, false, Metadata.empty()),
- new
StructField("f2", IntegerType, false, Metadata.empty())});
- StructType nestedType = createStructType(new StructField[] {new
StructField("n1", IntegerType, false, Metadata.empty()),
- new
StructField("n2", udtType, false, Metadata.empty())});
+ StructType udtType = createStructType(new StructField[]{new
StructField("f1", StringType, true, Metadata.empty()),
+ new
StructField("f2", IntegerType, true, Metadata.empty())});
+ StructType nestedType = createStructType(new StructField[] {new
StructField("n1", IntegerType, true, Metadata.empty()),
+ new
StructField("n2", udtType, true, Metadata.empty())});
StructType schema = new StructType()
- .add("id", IntegerType, false)
- .add("nested", nestedType, false);
+ .add("id", IntegerType, false) // pk is not
nullable
+ .add("nested", nestedType, true); // value column
is nullable
List<Row> rows = IntStream.range(0, rowCount)
.mapToObj(id -> {
String course = "course" + id;
- Row innerUdt = RowFactory.create(id,
RowFactory.create(course, id));
- Object[] values = {id, innerUdt};
+ Row outerUdt = RowFactory.create(id,
+ //
inner udt value
+
nullUdtFieldValuePredicate.test(id) ? null : RowFactory.create(course, id));
+ Object[] values = {id, outerUdt};
return RowFactory.create(values);
}).collect(Collectors.toList());
return sql.createDataFrame(rows, schema);
diff --git
a/cassandra-four-zero-types/src/main/java/org/apache/cassandra/spark/data/CqlType.java
b/cassandra-four-zero-types/src/main/java/org/apache/cassandra/spark/data/CqlType.java
index cbcd814..bc36a43 100644
---
a/cassandra-four-zero-types/src/main/java/org/apache/cassandra/spark/data/CqlType.java
+++
b/cassandra-four-zero-types/src/main/java/org/apache/cassandra/spark/data/CqlType.java
@@ -30,6 +30,8 @@ import org.apache.cassandra.db.marshal.AbstractType;
import org.apache.cassandra.serializers.TypeSerializer;
import org.apache.spark.sql.Row;
import org.apache.spark.sql.catalyst.expressions.GenericInternalRow;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
public abstract class CqlType implements CqlField.CqlType
{
@@ -106,12 +108,35 @@ public abstract class CqlType implements CqlField.CqlType
throw CqlField.notImplemented(this);
}
- // Set inner value for UDTs or Tuples
- public void setInnerValue(SettableByIndexData<?> udtValue, int position,
Object value)
+ /**
+ * Set inner value for UDTs or Tuples
+ * @param udtValue udtValue to update
+ * @param position position in the vdtValue to set
+ * @param value value to set; the value is guaranteed to not be null
+ */
+ protected void setInnerValueInternal(SettableByIndexData<?> udtValue, int
position, @NotNull Object value)
{
throw CqlField.notImplemented(this);
}
+ /**
+ * Set nullable inner value at the position for UDTs or Tuples
+ * @param udtValue udtValue to update
+ * @param position position in the vdtValue to set
+ * @param value nullable value to set
+ */
+ public final void setInnerValue(SettableByIndexData<?> udtValue, int
position, @Nullable Object value)
+ {
+ if (value == null)
+ {
+ udtValue.setToNull(position);
+ }
+ else
+ {
+ setInnerValueInternal(udtValue, position, value);
+ }
+ }
+
@Override
public String toString()
{
diff --git
a/cassandra-four-zero-types/src/main/java/org/apache/cassandra/spark/data/complex/CqlFrozen.java
b/cassandra-four-zero-types/src/main/java/org/apache/cassandra/spark/data/complex/CqlFrozen.java
index ca615ac..26ff6b9 100644
---
a/cassandra-four-zero-types/src/main/java/org/apache/cassandra/spark/data/complex/CqlFrozen.java
+++
b/cassandra-four-zero-types/src/main/java/org/apache/cassandra/spark/data/complex/CqlFrozen.java
@@ -163,7 +163,7 @@ public class CqlFrozen extends CqlType implements
CqlField.CqlFrozen
}
@Override
- public void setInnerValue(SettableByIndexData<?> udtValue, int position,
Object value)
+ protected void setInnerValueInternal(SettableByIndexData<?> udtValue, int
position, Object value)
{
((CqlType) inner()).setInnerValue(udtValue, position, value);
}
diff --git
a/cassandra-four-zero-types/src/main/java/org/apache/cassandra/spark/data/complex/CqlList.java
b/cassandra-four-zero-types/src/main/java/org/apache/cassandra/spark/data/complex/CqlList.java
index cd9b38b..c6f35a7 100644
---
a/cassandra-four-zero-types/src/main/java/org/apache/cassandra/spark/data/complex/CqlList.java
+++
b/cassandra-four-zero-types/src/main/java/org/apache/cassandra/spark/data/complex/CqlList.java
@@ -116,7 +116,7 @@ public class CqlList extends CqlCollection implements
CqlField.CqlList
}
@Override
- public void setInnerValue(SettableByIndexData<?> udtValue, int position,
Object value)
+ protected void setInnerValueInternal(SettableByIndexData<?> udtValue, int
position, Object value)
{
udtValue.setList(position, (List<?>) value);
}
diff --git
a/cassandra-four-zero-types/src/main/java/org/apache/cassandra/spark/data/complex/CqlMap.java
b/cassandra-four-zero-types/src/main/java/org/apache/cassandra/spark/data/complex/CqlMap.java
index 7098b9a..901a285 100644
---
a/cassandra-four-zero-types/src/main/java/org/apache/cassandra/spark/data/complex/CqlMap.java
+++
b/cassandra-four-zero-types/src/main/java/org/apache/cassandra/spark/data/complex/CqlMap.java
@@ -174,7 +174,7 @@ public class CqlMap extends CqlCollection implements
CqlField.CqlMap
}
@Override
- public void setInnerValue(SettableByIndexData<?> udtValue, int position,
Object value)
+ protected void setInnerValueInternal(SettableByIndexData<?> udtValue, int
position, Object value)
{
udtValue.setMap(position, (Map<?, ?>) value);
}
diff --git
a/cassandra-four-zero-types/src/main/java/org/apache/cassandra/spark/data/complex/CqlSet.java
b/cassandra-four-zero-types/src/main/java/org/apache/cassandra/spark/data/complex/CqlSet.java
index f6f7189..17a9ad0 100644
---
a/cassandra-four-zero-types/src/main/java/org/apache/cassandra/spark/data/complex/CqlSet.java
+++
b/cassandra-four-zero-types/src/main/java/org/apache/cassandra/spark/data/complex/CqlSet.java
@@ -94,7 +94,7 @@ public class CqlSet extends CqlList implements CqlField.CqlSet
}
@Override
- public void setInnerValue(SettableByIndexData<?> udtValue, int position,
Object value)
+ protected void setInnerValueInternal(SettableByIndexData<?> udtValue, int
position, Object value)
{
udtValue.setSet(position, (Set<?>) value);
}
diff --git
a/cassandra-four-zero-types/src/main/java/org/apache/cassandra/spark/data/complex/CqlTuple.java
b/cassandra-four-zero-types/src/main/java/org/apache/cassandra/spark/data/complex/CqlTuple.java
index 03e6ea4..5ede513 100644
---
a/cassandra-four-zero-types/src/main/java/org/apache/cassandra/spark/data/complex/CqlTuple.java
+++
b/cassandra-four-zero-types/src/main/java/org/apache/cassandra/spark/data/complex/CqlTuple.java
@@ -203,7 +203,7 @@ public class CqlTuple extends CqlCollection implements
CqlField.CqlTuple
}
@Override
- public void setInnerValue(SettableByIndexData<?> udtValue, int position,
Object value)
+ protected void setInnerValueInternal(SettableByIndexData<?> udtValue, int
position, Object value)
{
udtValue.setTupleValue(position,
toTupleValue(CassandraVersion.FOURZERO, this, value));
}
@@ -237,7 +237,7 @@ public class CqlTuple extends CqlCollection implements
CqlField.CqlTuple
Object[] array = (Object[]) value;
for (int position = 0; position < array.length; position++)
{
- CqlUdt.setInnerValue(version, tupleValue, (CqlType)
tuple.type(position), position, array[position]);
+ CqlUdt.setNullableInnerValue(version, tupleValue, (CqlType)
tuple.type(position), position, array[position]);
}
return tupleValue;
}
diff --git
a/cassandra-four-zero-types/src/main/java/org/apache/cassandra/spark/data/complex/CqlUdt.java
b/cassandra-four-zero-types/src/main/java/org/apache/cassandra/spark/data/complex/CqlUdt.java
index 5538ca6..90870dc 100644
---
a/cassandra-four-zero-types/src/main/java/org/apache/cassandra/spark/data/complex/CqlUdt.java
+++
b/cassandra-four-zero-types/src/main/java/org/apache/cassandra/spark/data/complex/CqlUdt.java
@@ -60,6 +60,8 @@ import
org.apache.spark.sql.catalyst.expressions.GenericRowWithSchema;
import org.apache.spark.sql.types.DataType;
import org.apache.spark.sql.types.DataTypes;
import org.apache.spark.sql.types.StructField;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
public class CqlUdt extends CqlType implements CqlField.CqlUdt
{
@@ -133,7 +135,7 @@ public class CqlUdt extends CqlType implements
CqlField.CqlUdt
}
@Override
- public void setInnerValue(SettableByIndexData<?> udtValue, int position,
Object value)
+ protected void setInnerValueInternal(SettableByIndexData<?> udtValue, int
position, Object value)
{
udtValue.setUDTValue(position, (UDTValue) value);
}
@@ -153,7 +155,7 @@ public class CqlUdt extends CqlType implements
CqlField.CqlUdt
}
@Override
- public Object convertForCqlWriter(Object value, CassandraVersion version)
+ public Object convertForCqlWriter(@NotNull Object value, CassandraVersion
version)
{
if (value instanceof UDTValue)
{
@@ -503,26 +505,26 @@ public class CqlUdt extends CqlType implements
CqlField.CqlUdt
}
@SuppressWarnings("unchecked")
- public static UDTValue toUserTypeValue(CassandraVersion version, CqlUdt
udt, Object value)
+ public static UDTValue toUserTypeValue(CassandraVersion version, CqlUdt
udt, @NotNull Object value)
{
Map<String, Object> values = (Map<String, Object>) value;
UDTValue udtValue = UserTypeHelper.newUDTValue(toUserType(udt));
int position = 0;
for (CqlField field : udt.fields())
{
- setInnerValue(version, udtValue, (CqlType) field.type(),
position++, values.get(field.name()));
+ setNullableInnerValue(version, udtValue, (CqlType) field.type(),
position++, values.get(field.name()));
}
return udtValue;
}
// Set inner value for UDTs or Tuples
- public static void setInnerValue(CassandraVersion version,
- SettableByIndexData<?> udtValue,
- CqlType type,
- int position,
- Object value)
+ public static void setNullableInnerValue(CassandraVersion version,
+ SettableByIndexData<?> udtValue,
+ CqlType type,
+ int position,
+ @Nullable Object value)
{
- type.setInnerValue(udtValue, position, type.convertForCqlWriter(value,
version));
+ type.setInnerValue(udtValue, position, value == null ? null :
type.convertForCqlWriter(value, version));
}
public static UserType toUserType(CqlUdt udt)
diff --git
a/cassandra-four-zero-types/src/main/java/org/apache/cassandra/spark/data/types/BigInt.java
b/cassandra-four-zero-types/src/main/java/org/apache/cassandra/spark/data/types/BigInt.java
index 86f998a..d7b67eb 100644
---
a/cassandra-four-zero-types/src/main/java/org/apache/cassandra/spark/data/types/BigInt.java
+++
b/cassandra-four-zero-types/src/main/java/org/apache/cassandra/spark/data/types/BigInt.java
@@ -41,7 +41,7 @@ public class BigInt extends LongBased
}
@Override
- public void setInnerValue(SettableByIndexData<?> udtValue, int position,
Object value)
+ protected void setInnerValueInternal(SettableByIndexData<?> udtValue, int
position, Object value)
{
udtValue.setLong(position, (long) value);
}
diff --git
a/cassandra-four-zero-types/src/main/java/org/apache/cassandra/spark/data/types/Blob.java
b/cassandra-four-zero-types/src/main/java/org/apache/cassandra/spark/data/types/Blob.java
index a74251c..e747822 100644
---
a/cassandra-four-zero-types/src/main/java/org/apache/cassandra/spark/data/types/Blob.java
+++
b/cassandra-four-zero-types/src/main/java/org/apache/cassandra/spark/data/types/Blob.java
@@ -63,7 +63,7 @@ public class Blob extends BinaryBased
}
@Override
- public void setInnerValue(SettableByIndexData<?> udtValue, int position,
Object value)
+ protected void setInnerValueInternal(SettableByIndexData<?> udtValue, int
position, Object value)
{
udtValue.setBytes(position, (ByteBuffer) value);
}
diff --git
a/cassandra-four-zero-types/src/main/java/org/apache/cassandra/spark/data/types/Boolean.java
b/cassandra-four-zero-types/src/main/java/org/apache/cassandra/spark/data/types/Boolean.java
index 062b3e6..7347197 100644
---
a/cassandra-four-zero-types/src/main/java/org/apache/cassandra/spark/data/types/Boolean.java
+++
b/cassandra-four-zero-types/src/main/java/org/apache/cassandra/spark/data/types/Boolean.java
@@ -84,7 +84,7 @@ public class Boolean extends NativeType
}
@Override
- public void setInnerValue(SettableByIndexData<?> udtValue, int position,
Object value)
+ protected void setInnerValueInternal(SettableByIndexData<?> udtValue, int
position, Object value)
{
udtValue.setBool(position, (boolean) value);
}
diff --git
a/cassandra-four-zero-types/src/main/java/org/apache/cassandra/spark/data/types/Date.java
b/cassandra-four-zero-types/src/main/java/org/apache/cassandra/spark/data/types/Date.java
index ccc6a9f..cade94e 100644
---
a/cassandra-four-zero-types/src/main/java/org/apache/cassandra/spark/data/types/Date.java
+++
b/cassandra-four-zero-types/src/main/java/org/apache/cassandra/spark/data/types/Date.java
@@ -105,7 +105,7 @@ public class Date extends NativeType
}
@Override
- public void setInnerValue(SettableByIndexData<?> udtValue, int position,
Object value)
+ protected void setInnerValueInternal(SettableByIndexData<?> udtValue, int
position, Object value)
{
udtValue.setDate(position, (LocalDate) value);
}
diff --git
a/cassandra-four-zero-types/src/main/java/org/apache/cassandra/spark/data/types/Decimal.java
b/cassandra-four-zero-types/src/main/java/org/apache/cassandra/spark/data/types/Decimal.java
index 670c934..c0aaf56 100644
---
a/cassandra-four-zero-types/src/main/java/org/apache/cassandra/spark/data/types/Decimal.java
+++
b/cassandra-four-zero-types/src/main/java/org/apache/cassandra/spark/data/types/Decimal.java
@@ -100,7 +100,7 @@ public class Decimal extends NativeType
}
@Override
- public void setInnerValue(SettableByIndexData<?> udtValue, int position,
Object value)
+ protected void setInnerValueInternal(SettableByIndexData<?> udtValue, int
position, Object value)
{
udtValue.setDecimal(position, (BigDecimal) value);
}
diff --git
a/cassandra-four-zero-types/src/main/java/org/apache/cassandra/spark/data/types/Double.java
b/cassandra-four-zero-types/src/main/java/org/apache/cassandra/spark/data/types/Double.java
index 8f4650b..c157874 100644
---
a/cassandra-four-zero-types/src/main/java/org/apache/cassandra/spark/data/types/Double.java
+++
b/cassandra-four-zero-types/src/main/java/org/apache/cassandra/spark/data/types/Double.java
@@ -78,7 +78,7 @@ public class Double extends NativeType
}
@Override
- public void setInnerValue(SettableByIndexData<?> udtValue, int position,
Object value)
+ protected void setInnerValueInternal(SettableByIndexData<?> udtValue, int
position, Object value)
{
udtValue.setDouble(position, (double) value);
}
diff --git
a/cassandra-four-zero-types/src/main/java/org/apache/cassandra/spark/data/types/Empty.java
b/cassandra-four-zero-types/src/main/java/org/apache/cassandra/spark/data/types/Empty.java
index cae82ce..93fdd52 100644
---
a/cassandra-four-zero-types/src/main/java/org/apache/cassandra/spark/data/types/Empty.java
+++
b/cassandra-four-zero-types/src/main/java/org/apache/cassandra/spark/data/types/Empty.java
@@ -89,7 +89,7 @@ public class Empty extends NativeType
}
@Override
- public void setInnerValue(SettableByIndexData<?> udtValue, int position,
Object value)
+ protected void setInnerValueInternal(SettableByIndexData<?> udtValue, int
position, Object value)
{
udtValue.setToNull(position);
}
diff --git
a/cassandra-four-zero-types/src/main/java/org/apache/cassandra/spark/data/types/Float.java
b/cassandra-four-zero-types/src/main/java/org/apache/cassandra/spark/data/types/Float.java
index 046fb74..1df6848 100644
---
a/cassandra-four-zero-types/src/main/java/org/apache/cassandra/spark/data/types/Float.java
+++
b/cassandra-four-zero-types/src/main/java/org/apache/cassandra/spark/data/types/Float.java
@@ -78,7 +78,7 @@ public class Float extends NativeType
}
@Override
- public void setInnerValue(SettableByIndexData<?> udtValue, int position,
Object value)
+ protected void setInnerValueInternal(SettableByIndexData<?> udtValue, int
position, Object value)
{
udtValue.setFloat(position, (float) value);
}
diff --git
a/cassandra-four-zero-types/src/main/java/org/apache/cassandra/spark/data/types/Inet.java
b/cassandra-four-zero-types/src/main/java/org/apache/cassandra/spark/data/types/Inet.java
index c684ca5..c2ba840 100644
---
a/cassandra-four-zero-types/src/main/java/org/apache/cassandra/spark/data/types/Inet.java
+++
b/cassandra-four-zero-types/src/main/java/org/apache/cassandra/spark/data/types/Inet.java
@@ -73,7 +73,7 @@ public class Inet extends BinaryBased
}
@Override
- public void setInnerValue(SettableByIndexData<?> udtValue, int position,
Object value)
+ protected void setInnerValueInternal(SettableByIndexData<?> udtValue, int
position, Object value)
{
udtValue.setInet(position, (InetAddress) value);
}
diff --git
a/cassandra-four-zero-types/src/main/java/org/apache/cassandra/spark/data/types/Int.java
b/cassandra-four-zero-types/src/main/java/org/apache/cassandra/spark/data/types/Int.java
index 3239e77..2797b5e 100644
---
a/cassandra-four-zero-types/src/main/java/org/apache/cassandra/spark/data/types/Int.java
+++
b/cassandra-four-zero-types/src/main/java/org/apache/cassandra/spark/data/types/Int.java
@@ -78,7 +78,7 @@ public class Int extends NativeType
}
@Override
- public void setInnerValue(SettableByIndexData<?> udtValue, int position,
Object value)
+ protected void setInnerValueInternal(SettableByIndexData<?> udtValue, int
position, Object value)
{
udtValue.setInt(position, (int) value);
}
diff --git
a/cassandra-four-zero-types/src/main/java/org/apache/cassandra/spark/data/types/SmallInt.java
b/cassandra-four-zero-types/src/main/java/org/apache/cassandra/spark/data/types/SmallInt.java
index 9101b5a..98eabf6 100644
---
a/cassandra-four-zero-types/src/main/java/org/apache/cassandra/spark/data/types/SmallInt.java
+++
b/cassandra-four-zero-types/src/main/java/org/apache/cassandra/spark/data/types/SmallInt.java
@@ -78,7 +78,7 @@ public class SmallInt extends NativeType
}
@Override
- public void setInnerValue(SettableByIndexData<?> udtValue, int position,
Object value)
+ protected void setInnerValueInternal(SettableByIndexData<?> udtValue, int
position, Object value)
{
udtValue.setShort(position, (short) value);
}
diff --git
a/cassandra-four-zero-types/src/main/java/org/apache/cassandra/spark/data/types/StringBased.java
b/cassandra-four-zero-types/src/main/java/org/apache/cassandra/spark/data/types/StringBased.java
index 5bb4d20..f60ac2f 100644
---
a/cassandra-four-zero-types/src/main/java/org/apache/cassandra/spark/data/types/StringBased.java
+++
b/cassandra-four-zero-types/src/main/java/org/apache/cassandra/spark/data/types/StringBased.java
@@ -93,7 +93,7 @@ public abstract class StringBased extends NativeType
}
@Override
- public void setInnerValue(SettableByIndexData<?> udtValue, int position,
Object value)
+ protected void setInnerValueInternal(SettableByIndexData<?> udtValue, int
position, Object value)
{
udtValue.setString(position, (String) value);
}
diff --git
a/cassandra-four-zero-types/src/main/java/org/apache/cassandra/spark/data/types/Time.java
b/cassandra-four-zero-types/src/main/java/org/apache/cassandra/spark/data/types/Time.java
index 39ce259..21a3867 100644
---
a/cassandra-four-zero-types/src/main/java/org/apache/cassandra/spark/data/types/Time.java
+++
b/cassandra-four-zero-types/src/main/java/org/apache/cassandra/spark/data/types/Time.java
@@ -41,7 +41,7 @@ public class Time extends LongBased
}
@Override
- public void setInnerValue(SettableByIndexData<?> udtValue, int position,
Object value)
+ protected void setInnerValueInternal(SettableByIndexData<?> udtValue, int
position, Object value)
{
udtValue.setTime(position, (long) value);
}
diff --git
a/cassandra-four-zero-types/src/main/java/org/apache/cassandra/spark/data/types/Timestamp.java
b/cassandra-four-zero-types/src/main/java/org/apache/cassandra/spark/data/types/Timestamp.java
index c232400..7359460 100644
---
a/cassandra-four-zero-types/src/main/java/org/apache/cassandra/spark/data/types/Timestamp.java
+++
b/cassandra-four-zero-types/src/main/java/org/apache/cassandra/spark/data/types/Timestamp.java
@@ -87,7 +87,7 @@ public class Timestamp extends NativeType
}
@Override
- public void setInnerValue(SettableByIndexData<?> udtValue, int position,
Object value)
+ protected void setInnerValueInternal(SettableByIndexData<?> udtValue, int
position, Object value)
{
udtValue.setTimestamp(position, (java.util.Date) value);
}
diff --git
a/cassandra-four-zero-types/src/main/java/org/apache/cassandra/spark/data/types/TinyInt.java
b/cassandra-four-zero-types/src/main/java/org/apache/cassandra/spark/data/types/TinyInt.java
index fe00e54..9e776c4 100644
---
a/cassandra-four-zero-types/src/main/java/org/apache/cassandra/spark/data/types/TinyInt.java
+++
b/cassandra-four-zero-types/src/main/java/org/apache/cassandra/spark/data/types/TinyInt.java
@@ -78,7 +78,7 @@ public class TinyInt extends NativeType
}
@Override
- public void setInnerValue(SettableByIndexData<?> udtValue, int position,
Object value)
+ protected void setInnerValueInternal(SettableByIndexData<?> udtValue, int
position, Object value)
{
udtValue.setByte(position, (byte) value);
}
diff --git
a/cassandra-four-zero-types/src/main/java/org/apache/cassandra/spark/data/types/UUID.java
b/cassandra-four-zero-types/src/main/java/org/apache/cassandra/spark/data/types/UUID.java
index 967db99..a10fb47 100644
---
a/cassandra-four-zero-types/src/main/java/org/apache/cassandra/spark/data/types/UUID.java
+++
b/cassandra-four-zero-types/src/main/java/org/apache/cassandra/spark/data/types/UUID.java
@@ -60,7 +60,7 @@ public class UUID extends StringBased
}
@Override
- public void setInnerValue(SettableByIndexData<?> udtValue, int position,
Object value)
+ protected void setInnerValueInternal(SettableByIndexData<?> udtValue, int
position, Object value)
{
udtValue.setUUID(position, (java.util.UUID) value);
}
diff --git
a/cassandra-four-zero-types/src/main/java/org/apache/cassandra/spark/data/types/VarInt.java
b/cassandra-four-zero-types/src/main/java/org/apache/cassandra/spark/data/types/VarInt.java
index 6635920..f2278f5 100644
---
a/cassandra-four-zero-types/src/main/java/org/apache/cassandra/spark/data/types/VarInt.java
+++
b/cassandra-four-zero-types/src/main/java/org/apache/cassandra/spark/data/types/VarInt.java
@@ -93,7 +93,7 @@ public class VarInt extends Decimal
}
@Override
- public void setInnerValue(SettableByIndexData<?> udtValue, int position,
Object value)
+ protected void setInnerValueInternal(SettableByIndexData<?> udtValue, int
position, Object value)
{
udtValue.setVarint(position, (BigInteger) value);
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]