Internal Jenkins has submitted this change and it was merged. Change subject: IMPALA-3861: Replace BetweenPredicates with their equivalent CompoundPredicate. ......................................................................
IMPALA-3861: Replace BetweenPredicates with their equivalent CompoundPredicate. The bug: Our BetweenPredicate has a complex object structure that is unlike most other Exprs because we generate an equivalent CompoundPredicate during analysis and replace the original children. Keeping the various members in sync and preserving the object structure during clone() and substitute() is very difficult and error prone. In particular, subquery rewriting is difficult because we extract and replace correlated BinaryPredicates. Substituting BinaryPredicates in a BetweenPredicate's children is not equivalent to a substitution on the BetweenPredicat's original children, so keeping the various redundant members in sync is quite difficult. The fix is to replace BetweenPredicates with their equivalent CompoundPredicates before performing subquery rewrites. We ultimately still want to fix clone() and substitute() for BetweenPredicates, but an elegant solution is likely to more involved. Change-Id: I0838b30444ed9704ce6a058d30718a24caa7444a Reviewed-on: http://gerrit.cloudera.org:8080/3804 Reviewed-by: Alex Behm <[email protected]> Tested-by: Internal Jenkins --- M fe/src/main/java/com/cloudera/impala/analysis/StmtRewriter.java M fe/src/test/java/com/cloudera/impala/analysis/AnalyzeSubqueriesTest.java M testdata/workloads/functional-planner/queries/PlannerTest/subquery-rewrite.test 3 files changed, 53 insertions(+), 10 deletions(-) Approvals: Internal Jenkins: Verified Alex Behm: Looks good to me, approved -- To view, visit http://gerrit.cloudera.org:8080/3804 To unsubscribe, visit http://gerrit.cloudera.org:8080/settings Gerrit-MessageType: merged Gerrit-Change-Id: I0838b30444ed9704ce6a058d30718a24caa7444a Gerrit-PatchSet: 7 Gerrit-Project: Impala-ASF Gerrit-Branch: master Gerrit-Owner: Alex Behm <[email protected]> Gerrit-Reviewer: Alex Behm <[email protected]> Gerrit-Reviewer: Bharath Vissapragada <[email protected]> Gerrit-Reviewer: Dimitris Tsirogiannis <[email protected]> Gerrit-Reviewer: Internal Jenkins
