HAWQ-964. Fix issues where only one filter is present
Project: http://git-wip-us.apache.org/repos/asf/incubator-hawq/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-hawq/commit/8f73c2b9 Tree: http://git-wip-us.apache.org/repos/asf/incubator-hawq/tree/8f73c2b9 Diff: http://git-wip-us.apache.org/repos/asf/incubator-hawq/diff/8f73c2b9 Branch: refs/heads/HAWQ-964 Commit: 8f73c2b9295e93be68958b0c6b35a53143e5f7a7 Parents: 93052b9 Author: Kavinder Dhaliwal <[email protected]> Authored: Thu Sep 22 11:34:11 2016 -0700 Committer: Kavinder Dhaliwal <[email protected]> Committed: Thu Sep 22 11:34:11 2016 -0700 ---------------------------------------------------------------------- .../apache/hawq/pxf/plugins/hive/HiveAccessor.java | 2 +- .../apache/hawq/pxf/plugins/hive/HiveORCAccessor.java | 14 +++++++++++++- 2 files changed, 14 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/8f73c2b9/pxf/pxf-hive/src/main/java/org/apache/hawq/pxf/plugins/hive/HiveAccessor.java ---------------------------------------------------------------------- diff --git a/pxf/pxf-hive/src/main/java/org/apache/hawq/pxf/plugins/hive/HiveAccessor.java b/pxf/pxf-hive/src/main/java/org/apache/hawq/pxf/plugins/hive/HiveAccessor.java index 2f1c26e..b2b3e4b 100644 --- a/pxf/pxf-hive/src/main/java/org/apache/hawq/pxf/plugins/hive/HiveAccessor.java +++ b/pxf/pxf-hive/src/main/java/org/apache/hawq/pxf/plugins/hive/HiveAccessor.java @@ -276,7 +276,7 @@ public class HiveAccessor extends HdfsSplittableDataAccessor { Object filter, InputData input) { // Let's look first at the filter and escape if there are any OR or NOT ops if (!testForUnsupportedOperators(Arrays.asList(filter))) - return false; + return true; return testForPartitionEquality(partitionFields, Arrays.asList(filter), input); } http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/8f73c2b9/pxf/pxf-hive/src/main/java/org/apache/hawq/pxf/plugins/hive/HiveORCAccessor.java ---------------------------------------------------------------------- diff --git a/pxf/pxf-hive/src/main/java/org/apache/hawq/pxf/plugins/hive/HiveORCAccessor.java b/pxf/pxf-hive/src/main/java/org/apache/hawq/pxf/plugins/hive/HiveORCAccessor.java index 195382a..ab2f96e 100644 --- a/pxf/pxf-hive/src/main/java/org/apache/hawq/pxf/plugins/hive/HiveORCAccessor.java +++ b/pxf/pxf-hive/src/main/java/org/apache/hawq/pxf/plugins/hive/HiveORCAccessor.java @@ -100,7 +100,19 @@ public class HiveORCAccessor extends HiveAccessor { HiveFilterBuilder eval = new HiveFilterBuilder(inputData); Object filter = eval.getFilterObject(filterStr); SearchArgument.Builder filterBuilder = SearchArgumentFactory.newBuilder(); - buildExpression(filterBuilder, Arrays.asList(filter)); + + /* + * If there is only a single filter it will be of type Basic Filter + * need special case logic to make sure to still wrap the filter in a + * startAnd() & end() block + */ + if (filter instanceof LogicalFilter) + buildExpression(filterBuilder, Arrays.asList(filter)); + else { + filterBuilder.startAnd(); + buildArgument(filterBuilder, filter); + filterBuilder.end(); + } SearchArgument sarg = filterBuilder.build(); jobConf.set(SARG_PUSHDOWN, sarg.toKryo()); }
