You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hawq.apache.org by od...@apache.org on 2017/04/12 21:44:10 UTC

incubator-hawq git commit: HAWQ-1429. Do not use AggBridge when WHERE clause specified.

Repository: incubator-hawq
Updated Branches:
  refs/heads/master 0899c5343 -> 2d32de10f


HAWQ-1429. Do not use AggBridge when WHERE clause specified.


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

Branch: refs/heads/master
Commit: 2d32de10f132f1870ad7785640d9a57f711db89a
Parents: 0899c53
Author: Oleksandr Diachenko <od...@pivotal.io>
Authored: Wed Apr 12 14:43:03 2017 -0700
Committer: Oleksandr Diachenko <od...@pivotal.io>
Committed: Wed Apr 12 14:44:07 2017 -0700

----------------------------------------------------------------------
 .../java/org/apache/hawq/pxf/api/utilities/Utilities.java |  5 ++++-
 .../org/apache/hawq/pxf/api/utilities/UtilitiesTest.java  | 10 ++++++++++
 2 files changed, 14 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/2d32de10/pxf/pxf-api/src/main/java/org/apache/hawq/pxf/api/utilities/Utilities.java
----------------------------------------------------------------------
diff --git a/pxf/pxf-api/src/main/java/org/apache/hawq/pxf/api/utilities/Utilities.java b/pxf/pxf-api/src/main/java/org/apache/hawq/pxf/api/utilities/Utilities.java
index 29d9c52..6dd0044 100644
--- a/pxf/pxf-api/src/main/java/org/apache/hawq/pxf/api/utilities/Utilities.java
+++ b/pxf/pxf-api/src/main/java/org/apache/hawq/pxf/api/utilities/Utilities.java
@@ -209,7 +209,9 @@ public class Utilities {
             LOG.error("Unable to load accessor class: " + e.getMessage());
             return false;
         }
-        return (inputData != null) && (inputData.getAggType() != null)
+        /* Make sure filter is not present, aggregate operation supports optimization and accessor implements StatsAccessor interface */
+        return (inputData != null) && !inputData.hasFilter()
+                && (inputData.getAggType() != null)
                 && inputData.getAggType().isOptimizationSupported()
                 && isStatsAccessor;
     }
@@ -223,6 +225,7 @@ public class Utilities {
      */
     public static boolean useStats(ReadAccessor accessor, InputData inputData) {
         if (accessor instanceof StatsAccessor) {
+            /* Make sure filter is not present and aggregate operation supports optimization */
             if (inputData != null && !inputData.hasFilter()
                     && inputData.getAggType() != null
                     && inputData.getAggType().isOptimizationSupported()) {

http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/2d32de10/pxf/pxf-api/src/test/java/org/apache/hawq/pxf/api/utilities/UtilitiesTest.java
----------------------------------------------------------------------
diff --git a/pxf/pxf-api/src/test/java/org/apache/hawq/pxf/api/utilities/UtilitiesTest.java b/pxf/pxf-api/src/test/java/org/apache/hawq/pxf/api/utilities/UtilitiesTest.java
index 6fe896a..12ba3d1 100644
--- a/pxf/pxf-api/src/test/java/org/apache/hawq/pxf/api/utilities/UtilitiesTest.java
+++ b/pxf/pxf-api/src/test/java/org/apache/hawq/pxf/api/utilities/UtilitiesTest.java
@@ -194,6 +194,12 @@ public class UtilitiesTest {
         when(metaData.getAccessor()).thenReturn(UtilitiesTest.class.getName());
         when(metaData.getAggType()).thenReturn(EnumAggregationType.COUNT);
         assertFalse(Utilities.useAggBridge(metaData));
+
+        //Do not use AggBridge when input data has filter
+        when(metaData.getAccessor()).thenReturn(StatsAccessorImpl.class.getName());
+        when(metaData.getAggType()).thenReturn(EnumAggregationType.COUNT);
+        when(metaData.hasFilter()).thenReturn(true);
+        assertFalse(Utilities.useAggBridge(metaData));
     }
 
     @Test
@@ -204,5 +210,9 @@ public class UtilitiesTest {
         assertTrue(Utilities.useStats(accessor, metaData));
         ReadAccessor nonStatusAccessor = new NonStatsAccessorImpl();
         assertFalse(Utilities.useStats(nonStatusAccessor, metaData));
+
+        //Do not use stats when input data has filter
+        when(metaData.hasFilter()).thenReturn(true);
+        assertFalse(Utilities.useStats(accessor, metaData));
     }
 }