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 <[email protected]> Authored: Wed Apr 12 14:43:03 2017 -0700 Committer: Oleksandr Diachenko <[email protected]> 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)); } }
