Qifan Chen has posted comments on this change. ( http://gerrit.cloudera.org:8080/16266 )
Change subject: IMPALA-5022: Outer join simplification ...................................................................... Patch Set 5: (14 comments) Thanks for the work. http://gerrit.cloudera.org:8080/#/c/16266/5/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/16266/5/fe/src/main/java/org/apache/impala/analysis/Analyzer.java@3233 PS5, Line 3233: where clause Suggest to remove to make the comment more precise. http://gerrit.cloudera.org:8080/#/c/16266/5/fe/src/main/java/org/apache/impala/analysis/Analyzer.java@3234 PS5, Line 3234: . Suggest to add additional comment here to describe the use of the method, such as: This method identifies null-rejecting predicates which are the requirements to convert an outer-join to an inner join. http://gerrit.cloudera.org:8080/#/c/16266/5/fe/src/main/java/org/apache/impala/analysis/Analyzer.java@3240 PS5, Line 3240: contains nit. containing http://gerrit.cloudera.org:8080/#/c/16266/5/fe/src/main/java/org/apache/impala/analysis/Analyzer.java@3242 PS5, Line 3242: t1.v1 you mean t2.v2? http://gerrit.cloudera.org:8080/#/c/16266/5/fe/src/main/java/org/apache/impala/analysis/Analyzer.java@3254 PS5, Line 3254: intersect.isEmpty() For any disConjunct, when "ids intersect disConjunct != disConjunct", then disConjuncts should be skipped. The test here seems not sufficient. http://gerrit.cloudera.org:8080/#/c/16266/5/fe/src/main/java/org/apache/impala/analysis/Analyzer.java@3264 PS5, Line 3264: ULL input, eg, ISNULL(), IFNULL(), ZEROIFNULL(). We may need to reject UDFs as these functions can maintain a state which could allow the function to return different outputs for a given input. That is, we can not guarantee that such a UDF would not produce a NULL given a NULL input. http://gerrit.cloudera.org:8080/#/c/16266/5/fe/src/main/java/org/apache/impala/analysis/Analyzer.java@3270 PS5, Line 3270: analyzeNoThrow For some common SQL functions, we probably can directly test their existence and bypass the evaluation logic, assuming the evaluation during compile time is relatively expensive. http://gerrit.cloudera.org:8080/#/c/16266/5/fe/src/main/java/org/apache/impala/analysis/Analyzer.java@3278 PS5, Line 3278: if (!isTr It is a good idea to add a comment here. http://gerrit.cloudera.org:8080/#/c/16266/5/fe/src/main/java/org/apache/impala/analysis/Analyzer.java@3289 PS5, Line 3289: ex); We probably should return false here. http://gerrit.cloudera.org:8080/#/c/16266/5/fe/src/main/java/org/apache/impala/analysis/Analyzer.java@3361 PS5, Line 3361: inner null-filling table http://gerrit.cloudera.org:8080/#/c/16266/5/fe/src/main/java/org/apache/impala/analysis/Analyzer.java@3362 PS5, Line 3362: inner null-filling http://gerrit.cloudera.org:8080/#/c/16266/5/fe/src/main/java/org/apache/impala/analysis/Analyzer.java@3364 PS5, Line 3364: inner null-filling http://gerrit.cloudera.org:8080/#/c/16266/5/fe/src/main/java/org/apache/impala/analysis/Analyzer.java@3365 PS5, Line 3365: null filtering null-rejecting http://gerrit.cloudera.org:8080/#/c/16266/5/fe/src/main/java/org/apache/impala/analysis/Analyzer.java@3375 PS5, Line 3375: case INNER_JOIN: { : break; Probably can be moved to the last 'default' section (of switch). -- To view, visit http://gerrit.cloudera.org:8080/16266 To unsubscribe, visit http://gerrit.cloudera.org:8080/settings Gerrit-Project: Impala-ASF Gerrit-Branch: master Gerrit-MessageType: comment Gerrit-Change-Id: Iaa7804033fac68e93f33c387dc68ef67f803e93e Gerrit-Change-Number: 16266 Gerrit-PatchSet: 5 Gerrit-Owner: Xianqing He <hexianqing...@126.com> Gerrit-Reviewer: Impala Public Jenkins <impala-public-jenk...@cloudera.com> Gerrit-Reviewer: Qifan Chen <qc...@cloudera.com> Gerrit-Reviewer: Xianqing He <hexianqing...@126.com> Gerrit-Comment-Date: Tue, 04 Aug 2020 15:10:27 +0000 Gerrit-HasComments: Yes