You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nifi.apache.org by jo...@apache.org on 2021/12/13 18:43:05 UTC
[nifi] 01/22: NIFI-9471 Corrected PutKudu usage of DataTypeUtils.toString()
This is an automated email from the ASF dual-hosted git repository.
joewitt pushed a commit to branch support/nifi-1.15
in repository https://gitbox.apache.org/repos/asf/nifi.git
commit d61a747ec1552fc6147a9823e66f273e4e72fb60
Author: exceptionfactory <ex...@apache.org>
AuthorDate: Thu Dec 9 15:00:24 2021 -0600
NIFI-9471 Corrected PutKudu usage of DataTypeUtils.toString()
---
.../nifi/processors/kudu/AbstractKuduProcessor.java | 15 ++++++++-------
.../org/apache/nifi/processors/kudu/TestPutKudu.java | 16 +++++++++++++---
2 files changed, 21 insertions(+), 10 deletions(-)
diff --git a/nifi-nar-bundles/nifi-kudu-bundle/nifi-kudu-processors/src/main/java/org/apache/nifi/processors/kudu/AbstractKuduProcessor.java b/nifi-nar-bundles/nifi-kudu-bundle/nifi-kudu-processors/src/main/java/org/apache/nifi/processors/kudu/AbstractKuduProcessor.java
index e188323..3d02055 100644
--- a/nifi-nar-bundles/nifi-kudu-bundle/nifi-kudu-processors/src/main/java/org/apache/nifi/processors/kudu/AbstractKuduProcessor.java
+++ b/nifi-nar-bundles/nifi-kudu-bundle/nifi-kudu-processors/src/main/java/org/apache/nifi/processors/kudu/AbstractKuduProcessor.java
@@ -398,6 +398,8 @@ public abstract class AbstractKuduProcessor extends AbstractProcessor {
}
} else {
Object value = record.getValue(recordFieldName);
+ final Optional<DataType> fieldDataType = record.getSchema().getDataType(recordFieldName);
+ final String dataTypeFormat = fieldDataType.map(DataType::getFormat).orElse(null);
switch (colType) {
case BOOL:
row.addBoolean(columnIndex, DataTypeUtils.toBoolean(value, recordFieldName));
@@ -421,10 +423,10 @@ public abstract class AbstractKuduProcessor extends AbstractProcessor {
row.addTimestamp(columnIndex, timestamp);
break;
case STRING:
- row.addString(columnIndex, DataTypeUtils.toString(value, recordFieldName));
+ row.addString(columnIndex, DataTypeUtils.toString(value, dataTypeFormat));
break;
case BINARY:
- row.addBinary(columnIndex, DataTypeUtils.toString(value, recordFieldName).getBytes());
+ row.addBinary(columnIndex, DataTypeUtils.toString(value, dataTypeFormat).getBytes());
break;
case FLOAT:
row.addFloat(columnIndex, DataTypeUtils.toFloat(value, recordFieldName));
@@ -433,15 +435,14 @@ public abstract class AbstractKuduProcessor extends AbstractProcessor {
row.addDouble(columnIndex, DataTypeUtils.toDouble(value, recordFieldName));
break;
case DECIMAL:
- row.addDecimal(columnIndex, new BigDecimal(DataTypeUtils.toString(value, recordFieldName)));
+ row.addDecimal(columnIndex, new BigDecimal(DataTypeUtils.toString(value, dataTypeFormat)));
break;
case VARCHAR:
- row.addVarchar(columnIndex, DataTypeUtils.toString(value, recordFieldName));
+ row.addVarchar(columnIndex, DataTypeUtils.toString(value, dataTypeFormat));
break;
case DATE:
- final Optional<DataType> fieldDataType = record.getSchema().getDataType(recordFieldName);
- final String format = fieldDataType.isPresent() ? fieldDataType.get().getFormat() : RecordFieldType.DATE.getDefaultFormat();
- row.addDate(columnIndex, getDate(value, recordFieldName, format));
+ final String dateFormat = dataTypeFormat == null ? RecordFieldType.DATE.getDefaultFormat() : dataTypeFormat;
+ row.addDate(columnIndex, getDate(value, recordFieldName, dateFormat));
break;
default:
throw new IllegalStateException(String.format("unknown column type %s", colType));
diff --git a/nifi-nar-bundles/nifi-kudu-bundle/nifi-kudu-processors/src/test/java/org/apache/nifi/processors/kudu/TestPutKudu.java b/nifi-nar-bundles/nifi-kudu-bundle/nifi-kudu-processors/src/test/java/org/apache/nifi/processors/kudu/TestPutKudu.java
index 73913cf..126ca6e 100644
--- a/nifi-nar-bundles/nifi-kudu-bundle/nifi-kudu-processors/src/test/java/org/apache/nifi/processors/kudu/TestPutKudu.java
+++ b/nifi-nar-bundles/nifi-kudu-bundle/nifi-kudu-processors/src/test/java/org/apache/nifi/processors/kudu/TestPutKudu.java
@@ -511,19 +511,29 @@ public class TestPutKudu {
}
@Test
+ public void testBuildPartialRowWithDateToString() throws ParseException {
+ final SimpleDateFormat dateFormat = new SimpleDateFormat(ISO_8601_YEAR_MONTH_DAY_PATTERN);
+ final java.util.Date dateFieldValue = dateFormat.parse(ISO_8601_YEAR_MONTH_DAY);
+
+ final PartialRow row = buildPartialRowDateField(dateFieldValue, Type.STRING);
+ final String column = row.getString(DATE_FIELD);
+ assertEquals("Partial Row Field not matched", ISO_8601_YEAR_MONTH_DAY, column);
+ }
+
+ @Test
public void testBuildPartialRowWithDateString() {
assertPartialRowDateFieldEquals(ISO_8601_YEAR_MONTH_DAY);
}
private void assertPartialRowDateFieldEquals(final Object dateFieldValue) {
- final PartialRow row = buildPartialRowDateField(dateFieldValue);
+ final PartialRow row = buildPartialRowDateField(dateFieldValue, Type.DATE);
final java.sql.Date rowDate = row.getDate(DATE_FIELD);
assertEquals("Partial Row Date Field not matched", ISO_8601_YEAR_MONTH_DAY, rowDate.toString());
}
- private PartialRow buildPartialRowDateField(final Object dateFieldValue) {
+ private PartialRow buildPartialRowDateField(final Object dateFieldValue, final Type columnType) {
final Schema kuduSchema = new Schema(Collections.singletonList(
- new ColumnSchema.ColumnSchemaBuilder(DATE_FIELD, Type.DATE).nullable(true).build()
+ new ColumnSchema.ColumnSchemaBuilder(DATE_FIELD, columnType).nullable(true).build()
));
final RecordSchema schema = new SimpleRecordSchema(Collections.singletonList(