Alex Behm has posted comments on this change. ( http://gerrit.cloudera.org:8080/8317 )
Change subject: IMPALA-5976: Remove equivalence class computation in FE ...................................................................... Patch Set 3: (3 comments) Responding to comments, taking another pass now. http://gerrit.cloudera.org:8080/#/c/8317/3/fe/src/main/java/org/apache/impala/analysis/Analyzer.java File fe/src/main/java/org/apache/impala/analysis/Analyzer.java: http://gerrit.cloudera.org:8080/#/c/8317/3/fe/src/main/java/org/apache/impala/analysis/Analyzer.java@91 PS3, Line 91: * Slot A has value transfer to slot B if a predicate on A can be applied to B in most > "containing both slots" only covers join. Slot A and slot B may be in the same tuple. Still I think the formulation is correct because the value transfer is established at the point the corresponding equality condition is evaluated. Example: select * from A join B on a.id=b.id We can say that a.id and b.id are definitely equal after the join, but they are independent before the join. http://gerrit.cloudera.org:8080/#/c/8317/4/fe/src/main/java/org/apache/impala/analysis/Analyzer.java File fe/src/main/java/org/apache/impala/analysis/Analyzer.java: http://gerrit.cloudera.org:8080/#/c/8317/4/fe/src/main/java/org/apache/impala/analysis/Analyzer.java@1527 PS4, Line 1527: // same as the one that makes destTid nullable > Do you mean "v.b is null"? I mean that the "is null" condition should be on a column that does not participate in the "A.a=B.b" condition to show that the NULL-checking predicate is unrelated to the slots participating in the equivalence. For example this complete query: select * from (select A.a a, A.b b, B.c c from A left join B on A.a=B.b) v where v.c is null http://gerrit.cloudera.org:8080/#/c/8317/3/fe/src/main/java/org/apache/impala/planner/DistributedPlanner.java File fe/src/main/java/org/apache/impala/planner/DistributedPlanner.java: http://gerrit.cloudera.org:8080/#/c/8317/3/fe/src/main/java/org/apache/impala/planner/DistributedPlanner.java@399 PS3, Line 399: boolean partitionedByRight = node.getJoinOp() == RIGHT_OUTER_JOIN || > Done. I just realized that full outer joins should have random output parti Good call, I just realized that too. -- To view, visit http://gerrit.cloudera.org:8080/8317 To unsubscribe, visit http://gerrit.cloudera.org:8080/settings Gerrit-Project: Impala-ASF Gerrit-Branch: master Gerrit-MessageType: comment Gerrit-Change-Id: If4cb1d8be46efa8fd61a97048cc79dabe2ffa51a Gerrit-Change-Number: 8317 Gerrit-PatchSet: 3 Gerrit-Owner: Tianyi Wang <tw...@cloudera.com> Gerrit-Reviewer: Alex Behm <alex.b...@cloudera.com> Gerrit-Reviewer: Tianyi Wang <tw...@cloudera.com> Gerrit-Comment-Date: Fri, 17 Nov 2017 00:46:46 +0000 Gerrit-HasComments: Yes