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));
}
}