Repository: nifi
Updated Branches:
  refs/heads/master 72662f0b2 -> 8a12307d1


NIFI-5855: Remove unnecessary ORDER BY clause in GenerateTableFetch when 
Partition Size is zero

Signed-off-by: Pierre Villard <[email protected]>

This closes #3191.


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

Branch: refs/heads/master
Commit: 8a12307d1a5269954cc64b6bab73590b15a67444
Parents: 72662f0
Author: Matthew Burgess <[email protected]>
Authored: Thu Nov 29 17:46:24 2018 -0500
Committer: Pierre Villard <[email protected]>
Committed: Fri Nov 30 10:54:23 2018 +0100

----------------------------------------------------------------------
 .../apache/nifi/processors/standard/GenerateTableFetch.java  | 8 +++++---
 .../nifi/processors/standard/TestGenerateTableFetch.java     | 2 +-
 2 files changed, 6 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/nifi/blob/8a12307d/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/GenerateTableFetch.java
----------------------------------------------------------------------
diff --git 
a/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/GenerateTableFetch.java
 
b/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/GenerateTableFetch.java
index b4ba9fe..4d6ccc8 100644
--- 
a/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/GenerateTableFetch.java
+++ 
b/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/GenerateTableFetch.java
@@ -315,8 +315,8 @@ public class GenerateTableFetch extends 
AbstractDatabaseFetchProcessor {
             String columnsClause = null;
             List<String> maxValueSelectColumns = new 
ArrayList<>(numMaxValueColumns + 1);
 
-            // replace unnecessary row count with -1 stub value when paging is 
used
-            if (useColumnValsForPaging) {
+            // replace unnecessary row count with -1 stub value when column 
values for paging is used, or when partition size is zero.
+            if (useColumnValsForPaging || partitionSize == 0) {
                 maxValueSelectColumns.add("-1");
             } else {
                 maxValueSelectColumns.add("COUNT(*)");
@@ -496,8 +496,10 @@ public class GenerateTableFetch extends 
AbstractDatabaseFetchProcessor {
                         //Update WHERE list to include new right hand 
boundaries
                         whereClause = maxValueClauses.isEmpty() ? "1=1" : 
StringUtils.join(maxValueClauses, " AND ");
                         Long offset = partitionSize == 0 ? null : i * 
partitionSize + (useColumnValsForPaging ? minValueForPartitioning : 0);
+                        // Don't use an ORDER BY clause if there's only one 
partition
+                        final String orderByClause = partitionSize == 0 ? null 
: maxColumnNames;
 
-                        final String query = 
dbAdapter.getSelectStatement(tableName, columnNames, whereClause, 
maxColumnNames, limit, offset, columnForPartitioning);
+                        final String query = 
dbAdapter.getSelectStatement(tableName, columnNames, whereClause, 
orderByClause, limit, offset, columnForPartitioning);
                         FlowFile sqlFlowFile = (fileToProcess == null) ? 
session.create() : session.create(fileToProcess);
                         sqlFlowFile = session.write(sqlFlowFile, out -> 
out.write(query.getBytes()));
                         Map<String,String> attributesToAdd = new HashMap<>();

http://git-wip-us.apache.org/repos/asf/nifi/blob/8a12307d/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/java/org/apache/nifi/processors/standard/TestGenerateTableFetch.java
----------------------------------------------------------------------
diff --git 
a/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/java/org/apache/nifi/processors/standard/TestGenerateTableFetch.java
 
b/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/java/org/apache/nifi/processors/standard/TestGenerateTableFetch.java
index 8ccca2c..25a5918 100644
--- 
a/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/java/org/apache/nifi/processors/standard/TestGenerateTableFetch.java
+++ 
b/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/java/org/apache/nifi/processors/standard/TestGenerateTableFetch.java
@@ -541,7 +541,7 @@ public class TestGenerateTableFetch {
         runner.run();
         runner.assertAllFlowFilesTransferred(GenerateTableFetch.REL_SUCCESS, 
1);
         MockFlowFile flowFile = 
runner.getFlowFilesForRelationship(GenerateTableFetch.REL_SUCCESS).get(0);
-        flowFile.assertContentEquals("SELECT * FROM TEST_QUERY_DB_TABLE WHERE 
ID <= 2 ORDER BY ID");
+        flowFile.assertContentEquals("SELECT * FROM TEST_QUERY_DB_TABLE WHERE 
ID <= 2");
         flowFile.assertAttributeExists("generatetablefetch.limit");
         flowFile.assertAttributeEquals("generatetablefetch.limit", null);
         runner.clearTransferState();

Reply via email to