NIFI-626: SQL timestamps were being added to Avro schema as string but value 
was being added as java.sql.Date object, which caused exceptions to be thrown. 
Now call toString() on the Date object to put to the record.


Project: http://git-wip-us.apache.org/repos/asf/incubator-nifi/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-nifi/commit/ec02e58d
Tree: http://git-wip-us.apache.org/repos/asf/incubator-nifi/tree/ec02e58d
Diff: http://git-wip-us.apache.org/repos/asf/incubator-nifi/diff/ec02e58d

Branch: refs/heads/develop
Commit: ec02e58d3c0a8162a32fb5c51651accf1d961d1b
Parents: ae9b40e
Author: Mark Payne <marka...@hotmail.com>
Authored: Wed Jun 17 12:32:57 2015 -0400
Committer: Mark Payne <marka...@hotmail.com>
Committed: Wed Jun 17 12:37:27 2015 -0400

----------------------------------------------------------------------
 .../nifi/processors/standard/util/JdbcCommon.java   | 16 +++++++++++++++-
 1 file changed, 15 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/ec02e58d/nifi/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/util/JdbcCommon.java
----------------------------------------------------------------------
diff --git 
a/nifi/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/util/JdbcCommon.java
 
b/nifi/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/util/JdbcCommon.java
index 8dff244..beca304 100644
--- 
a/nifi/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/util/JdbcCommon.java
+++ 
b/nifi/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/util/JdbcCommon.java
@@ -52,7 +52,21 @@ public class JdbcCommon {
             while (rs.next()) {
                 for (int i = 1; i <= nrOfColumns; i++) {
                     final Object value = rs.getObject(i);
-                    rec.put(i - 1, value);
+
+                    // The different types that we support are numbers (int,
+                    // long, double, float), as well
+                    // as boolean values and Strings. Since Avro doesn't 
provide
+                    // timestamp types, we want to
+                    // convert those to Strings. So we will cast anything other
+                    // than numbers or booleans to
+                    // strings by using to toString() method.
+                    if (value == null) {
+                        rec.put(i - 1, null);
+                    } else if (value instanceof Number || value instanceof 
Boolean) {
+                        rec.put(i - 1, value);
+                    } else {
+                        rec.put(i - 1, value.toString());
+                    }
                 }
                 dataFileWriter.append(rec);
                 nrOfRows += 1;

Reply via email to