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

Reply via email to