From ae1d3e39456b364b776d73f46b39e87272e52865 Mon Sep 17 00:00:00 2001 From: Matthew Burgess Date: Wed, 4 Apr 2018 15:38:24 -0400 Subject: [PATCH] NIFI-4862: Keep incoming flowfile attributes in outgoing flowfiles from SelectHiveQL This closes #2605. Signed-off-by: Koji Kawamura --- .../org/apache/nifi/processors/hive/SelectHiveQL.java | 2 +- .../apache/nifi/processors/hive/TestSelectHiveQL.java | 10 +++++++--- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/nifi-nar-bundles/nifi-hive-bundle/nifi-hive-processors/src/main/java/org/apache/nifi/processors/hive/SelectHiveQL.java b/nifi-nar-bundles/nifi-hive-bundle/nifi-hive-processors/src/main/java/org/apache/nifi/processors/hive/SelectHiveQL.java index 0bbddf54b5..2526ef50b5 100644 --- a/nifi-nar-bundles/nifi-hive-bundle/nifi-hive-processors/src/main/java/org/apache/nifi/processors/hive/SelectHiveQL.java +++ b/nifi-nar-bundles/nifi-hive-bundle/nifi-hive-processors/src/main/java/org/apache/nifi/processors/hive/SelectHiveQL.java @@ -352,7 +352,7 @@ public class SelectHiveQL extends AbstractHiveQLProcessor { String baseFilename = (fileToProcess != null) ? fileToProcess.getAttribute(CoreAttributes.FILENAME.key()) : null; while (true) { final AtomicLong nrOfRows = new AtomicLong(0L); - flowfile = (flowfile == null) ? session.create() : session.create(flowfile); + flowfile = (fileToProcess == null) ? session.create() : session.create(fileToProcess); if (baseFilename == null) { baseFilename = flowfile.getAttribute(CoreAttributes.FILENAME.key()); } diff --git a/nifi-nar-bundles/nifi-hive-bundle/nifi-hive-processors/src/test/java/org/apache/nifi/processors/hive/TestSelectHiveQL.java b/nifi-nar-bundles/nifi-hive-bundle/nifi-hive-processors/src/test/java/org/apache/nifi/processors/hive/TestSelectHiveQL.java index bb919d83fc..43c47c8365 100644 --- a/nifi-nar-bundles/nifi-hive-bundle/nifi-hive-processors/src/test/java/org/apache/nifi/processors/hive/TestSelectHiveQL.java +++ b/nifi-nar-bundles/nifi-hive-bundle/nifi-hive-processors/src/test/java/org/apache/nifi/processors/hive/TestSelectHiveQL.java @@ -135,11 +135,11 @@ public class TestSelectHiveQL { assertEquals(2, provenanceEvents.size()); final ProvenanceEventRecord provenance0 = provenanceEvents.get(0); - assertEquals(ProvenanceEventType.FETCH, provenance0.getEventType()); - assertEquals("jdbc:derby:target/db;create=true", provenance0.getTransitUri()); + assertEquals(ProvenanceEventType.FORK, provenance0.getEventType()); final ProvenanceEventRecord provenance1 = provenanceEvents.get(1); - assertEquals(ProvenanceEventType.FORK, provenance1.getEventType()); + assertEquals(ProvenanceEventType.FETCH, provenance1.getEventType()); + assertEquals("jdbc:derby:target/db;create=true", provenance1.getTransitUri()); } @@ -405,6 +405,10 @@ public class TestSelectHiveQL { runner.run(); runner.assertAllFlowFilesTransferred(SelectHiveQL.REL_SUCCESS, 1); + MockFlowFile flowFile = runner.getFlowFilesForRelationship(SelectHiveQL.REL_SUCCESS).get(0); + // Assert the attributes from the incoming flow file are preserved in the outgoing flow file(s) + flowFile.assertAttributeEquals("hiveql.args.1.value", "1"); + flowFile.assertAttributeEquals("hiveql.args.1.type", String.valueOf(Types.INTEGER)); runner.clearTransferState(); }