You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nifi.apache.org by pv...@apache.org on 2017/02/07 16:14:53 UTC
nifi git commit: NIFI-3372 Adding capability for PutSQL to handle BIT
fields generated by ConvertJSONToSQL.
Repository: nifi
Updated Branches:
refs/heads/master 46fa6a167 -> ea0f5690c
NIFI-3372 Adding capability for PutSQL to handle BIT fields generated by ConvertJSONToSQL.
This closes #1432.
Project: http://git-wip-us.apache.org/repos/asf/nifi/repo
Commit: http://git-wip-us.apache.org/repos/asf/nifi/commit/ea0f5690
Tree: http://git-wip-us.apache.org/repos/asf/nifi/tree/ea0f5690
Diff: http://git-wip-us.apache.org/repos/asf/nifi/diff/ea0f5690
Branch: refs/heads/master
Commit: ea0f5690cc62ac8b73394e076dcac218f2edb37b
Parents: 46fa6a1
Author: Ryan Persaud <ry...@gmail.com>
Authored: Wed Jan 18 20:15:16 2017 -0700
Committer: Pierre Villard <pi...@gmail.com>
Committed: Tue Feb 7 17:14:37 2017 +0100
----------------------------------------------------------------------
.../apache/nifi/processors/standard/PutSQL.java | 2 +
.../nifi/processors/standard/TestPutSQL.java | 117 +++++++++++++++++++
2 files changed, 119 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/nifi/blob/ea0f5690/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/PutSQL.java
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/PutSQL.java b/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/PutSQL.java
index 3efe20e..6d7c504 100644
--- a/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/PutSQL.java
+++ b/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/PutSQL.java
@@ -761,6 +761,8 @@ public class PutSQL extends AbstractProcessor {
} else {
switch (jdbcType) {
case Types.BIT:
+ stmt.setBoolean(parameterIndex, "1".equals(parameterValue) || "t".equalsIgnoreCase(parameterValue) || Boolean.parseBoolean(parameterValue));
+ break;
case Types.BOOLEAN:
stmt.setBoolean(parameterIndex, Boolean.parseBoolean(parameterValue));
break;
http://git-wip-us.apache.org/repos/asf/nifi/blob/ea0f5690/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/java/org/apache/nifi/processors/standard/TestPutSQL.java
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/java/org/apache/nifi/processors/standard/TestPutSQL.java b/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/java/org/apache/nifi/processors/standard/TestPutSQL.java
index 25ec476..5e9ab58 100644
--- a/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/java/org/apache/nifi/processors/standard/TestPutSQL.java
+++ b/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/java/org/apache/nifi/processors/standard/TestPutSQL.java
@@ -352,6 +352,123 @@ public class TestPutSQL {
}
@Test
+ public void testBitType() throws SQLException, InitializationException {
+ final TestRunner runner = TestRunners.newTestRunner(PutSQL.class);
+ try (final Connection conn = service.getConnection()) {
+ try (final Statement stmt = conn.createStatement()) {
+ stmt.executeUpdate("CREATE TABLE BITTESTS (id integer primary key, bt1 BOOLEAN)");
+ }
+ }
+
+ runner.addControllerService("dbcp", service);
+ runner.enableControllerService(service);
+ runner.setProperty(PutSQL.CONNECTION_POOL, "dbcp");
+
+ final byte[] insertStatement = "INSERT INTO BITTESTS (ID, bt1) VALUES (?, ?)".getBytes();
+
+ Map<String, String> attributes = new HashMap<>();
+ attributes.put("sql.args.1.type", String.valueOf(Types.INTEGER));
+ attributes.put("sql.args.1.value", "1");
+ attributes.put("sql.args.2.type", String.valueOf(Types.BIT));
+ attributes.put("sql.args.2.value", "1");
+ runner.enqueue(insertStatement, attributes);
+
+ attributes.put("sql.args.1.type", String.valueOf(Types.INTEGER));
+ attributes.put("sql.args.1.value", "2");
+ attributes.put("sql.args.2.type", String.valueOf(Types.BIT));
+ attributes.put("sql.args.2.value", "0");
+ runner.enqueue(insertStatement, attributes);
+
+ attributes.put("sql.args.1.type", String.valueOf(Types.INTEGER));
+ attributes.put("sql.args.1.value", "3");
+ attributes.put("sql.args.2.type", String.valueOf(Types.BIT));
+ attributes.put("sql.args.2.value", "-5");
+ runner.enqueue(insertStatement, attributes);
+
+ attributes.put("sql.args.1.type", String.valueOf(Types.INTEGER));
+ attributes.put("sql.args.1.value", "4");
+ attributes.put("sql.args.2.type", String.valueOf(Types.BIT));
+ attributes.put("sql.args.2.value", "t");
+ runner.enqueue(insertStatement, attributes);
+
+ attributes.put("sql.args.1.type", String.valueOf(Types.INTEGER));
+ attributes.put("sql.args.1.value", "5");
+ attributes.put("sql.args.2.type", String.valueOf(Types.BIT));
+ attributes.put("sql.args.2.value", "f");
+ runner.enqueue(insertStatement, attributes);
+
+ attributes.put("sql.args.1.type", String.valueOf(Types.INTEGER));
+ attributes.put("sql.args.1.value", "6");
+ attributes.put("sql.args.2.type", String.valueOf(Types.BIT));
+ attributes.put("sql.args.2.value", "T");
+ runner.enqueue(insertStatement, attributes);
+
+ attributes.put("sql.args.1.type", String.valueOf(Types.INTEGER));
+ attributes.put("sql.args.1.value", "7");
+ attributes.put("sql.args.2.type", String.valueOf(Types.BIT));
+ attributes.put("sql.args.2.value", "true");
+ runner.enqueue(insertStatement, attributes);
+
+ attributes.put("sql.args.1.type", String.valueOf(Types.INTEGER));
+ attributes.put("sql.args.1.value", "8");
+ attributes.put("sql.args.2.type", String.valueOf(Types.BIT));
+ attributes.put("sql.args.2.value", "false");
+ runner.enqueue(insertStatement, attributes);
+
+ runner.run();
+ runner.assertAllFlowFilesTransferred(PutSQL.REL_SUCCESS, 8);
+
+ try (final Connection conn = service.getConnection()) {
+ try (final Statement stmt = conn.createStatement()) {
+ final ResultSet rs = stmt.executeQuery("SELECT * FROM BITTESTS");
+
+ //First test (true)
+ assertTrue(rs.next());
+ assertEquals(1, rs.getInt(1));
+ assertTrue(rs.getBoolean(2));
+
+ //Second test (false)
+ assertTrue(rs.next());
+ assertEquals(2, rs.getInt(1));
+ assertFalse(rs.getBoolean(2));
+
+ //Third test (false)
+ assertTrue(rs.next());
+ assertEquals(3, rs.getInt(1));
+ assertFalse(rs.getBoolean(2));
+
+ //Fourth test (true)
+ assertTrue(rs.next());
+ assertEquals(4, rs.getInt(1));
+ assertTrue(rs.getBoolean(2));
+
+ //Fifth test (false)
+ assertTrue(rs.next());
+ assertEquals(5, rs.getInt(1));
+ assertFalse(rs.getBoolean(2));
+
+ //Sixth test (true)
+ assertTrue(rs.next());
+ assertEquals(6, rs.getInt(1));
+ assertTrue(rs.getBoolean(2));
+
+ //Seventh test (true)
+ assertTrue(rs.next());
+ assertEquals(7, rs.getInt(1));
+ assertTrue(rs.getBoolean(2));
+
+ //Eighth test (false)
+ assertTrue(rs.next());
+ assertEquals(8, rs.getInt(1));
+ assertFalse(rs.getBoolean(2));
+
+ assertFalse(rs.next());
+ }
+ }
+
+ }
+
+ @Test
public void testBinaryColumnTypes() throws InitializationException, ProcessException, SQLException, IOException, ParseException {
final TestRunner runner = TestRunners.newTestRunner(PutSQL.class);
try (final Connection conn = service.getConnection()) {