From 9f57a55151e09967068920bee848e21e214fea0a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?An=C3=ADbal=20V=C3=A1squez?= <50120087+avasquezkudaw@users.noreply.github.com> Date: Fri, 3 Nov 2023 16:33:31 -0300 Subject: [PATCH 1/3] Update PutDatabaseRecord.java add property use database table column datatype --- .../nifi/processors/standard/PutDatabaseRecord.java | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/PutDatabaseRecord.java b/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/PutDatabaseRecord.java index b12d2c869f46..5d8326d28720 100644 --- a/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/PutDatabaseRecord.java +++ b/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/PutDatabaseRecord.java @@ -345,6 +345,14 @@ public class PutDatabaseRecord extends AbstractProcessor { .expressionLanguageSupported(FLOWFILE_ATTRIBUTES) .build(); + static final PropertyDescriptor USE_DATABASE_TABLE_COLUMN_DATATYPE = new Builder() + .name("put-db-record-use-database-table-column-datatype") + .displayName("Use database table column data types") + .description("Enabling this option will cause all column values to be formatted using database table column data types.") + .allowableValues("true", "false") + .defaultValue("true") + .build(); + static final PropertyDescriptor DB_TYPE; protected static final Map dbAdapters; @@ -399,6 +407,7 @@ public class PutDatabaseRecord extends AbstractProcessor { pds.add(RollbackOnFailure.ROLLBACK_ON_FAILURE); pds.add(TABLE_SCHEMA_CACHE_SIZE); pds.add(MAX_BATCH_SIZE); + pds.add(USE_DATABASE_TABLE_COLUMN_DATATYPE); propDescriptors = Collections.unmodifiableList(pds); } @@ -739,8 +748,10 @@ private void executeDML(final ProcessContext context, final ProcessSession sessi } } + final boolean use_database_table_column_datatype = context.getProperty(USE_DATABASE_TABLE_COLUMN_DATATYPE).asBoolean(); + // Convert (if necessary) from field data type to column data type - if (fieldSqlType != sqlType) { + if ((fieldSqlType != sqlType) && use_database_table_column_datatype) { try { DataType targetDataType = DataTypeUtils.getDataTypeFromSQLTypeValue(sqlType); // If sqlType is unsupported, fall back to the fieldSqlType instead From b03a273022a1511ad5a9ce2c1df5d4a0e7400b36 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?An=C3=ADbal=20V=C3=A1squez?= <50120087+avasquezkudaw@users.noreply.github.com> Date: Mon, 6 Nov 2023 17:05:40 -0300 Subject: [PATCH 2/3] NIFI-12313 - Change property name to Title Clase and variable name --- .../apache/nifi/processors/standard/PutDatabaseRecord.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/PutDatabaseRecord.java b/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/PutDatabaseRecord.java index 5d8326d28720..2547c46b8229 100644 --- a/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/PutDatabaseRecord.java +++ b/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/PutDatabaseRecord.java @@ -347,7 +347,7 @@ public class PutDatabaseRecord extends AbstractProcessor { static final PropertyDescriptor USE_DATABASE_TABLE_COLUMN_DATATYPE = new Builder() .name("put-db-record-use-database-table-column-datatype") - .displayName("Use database table column data types") + .displayName("Use Database Table Column Data Types") .description("Enabling this option will cause all column values to be formatted using database table column data types.") .allowableValues("true", "false") .defaultValue("true") @@ -748,10 +748,10 @@ private void executeDML(final ProcessContext context, final ProcessSession sessi } } - final boolean use_database_table_column_datatype = context.getProperty(USE_DATABASE_TABLE_COLUMN_DATATYPE).asBoolean(); + final boolean useDatabaseTableColumnDatatype = context.getProperty(USE_DATABASE_TABLE_COLUMN_DATATYPE).asBoolean(); // Convert (if necessary) from field data type to column data type - if ((fieldSqlType != sqlType) && use_database_table_column_datatype) { + if ((fieldSqlType != sqlType) && useDatabaseTableColumnDatatype) { try { DataType targetDataType = DataTypeUtils.getDataTypeFromSQLTypeValue(sqlType); // If sqlType is unsupported, fall back to the fieldSqlType instead From 2ecaa100e4dd52f044fa05990341856b69ccc0c4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?An=C3=ADbal=20V=C3=A1squez?= <50120087+avasquezkudaw@users.noreply.github.com> Date: Tue, 7 Nov 2023 09:51:28 -0300 Subject: [PATCH 3/3] NIFI-12313 - Change variable location --- .../org/apache/nifi/processors/standard/PutDatabaseRecord.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/PutDatabaseRecord.java b/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/PutDatabaseRecord.java index 2547c46b8229..21d44bab3c95 100644 --- a/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/PutDatabaseRecord.java +++ b/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/PutDatabaseRecord.java @@ -613,6 +613,7 @@ private void executeDML(final ProcessContext context, final ProcessSession sessi final String updateKeys = context.getProperty(UPDATE_KEYS).evaluateAttributeExpressions(flowFile).getValue(); final int maxBatchSize = context.getProperty(MAX_BATCH_SIZE).evaluateAttributeExpressions(flowFile).asInteger(); final int timeoutMillis = context.getProperty(QUERY_TIMEOUT).evaluateAttributeExpressions().asTimePeriod(TimeUnit.MILLISECONDS).intValue(); + final boolean useDatabaseTableColumnDatatype = context.getProperty(USE_DATABASE_TABLE_COLUMN_DATATYPE).asBoolean(); // Ensure the table name has been set, the generated SQL statements (and TableSchema cache) will need it if (StringUtils.isEmpty(tableName)) { @@ -748,8 +749,6 @@ private void executeDML(final ProcessContext context, final ProcessSession sessi } } - final boolean useDatabaseTableColumnDatatype = context.getProperty(USE_DATABASE_TABLE_COLUMN_DATATYPE).asBoolean(); - // Convert (if necessary) from field data type to column data type if ((fieldSqlType != sqlType) && useDatabaseTableColumnDatatype) { try {