[ https://issues.apache.org/jira/browse/HIVE-11398?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14680536#comment-14680536 ]
Gopal V commented on HIVE-11398: -------------------------------- Patch LGTM - +1 The last test-failure seems to be an expected OR rotation due to the traversal order. groupby_multi_single_reducer3.q.out {code} > <<<<<<< HEAD > predicate: ((((key + key) = 400) or (((key - 100) = 500) > and value is not null)) or ((((key + key) = 200) or ((key - 100) = 100)) or > ((key = 300) and value is not null))) (type: boolean) > ======= > predicate: ((((key + key) = 200) or ((key - 100) = 100) > or ((key = 300) and value is not null)) or (((key + key) = 400) or (((key - > 100) = 500) and value is not null))) (type: boolean) {code} > Parse wide OR and wide AND trees to flat OR/AND trees > ----------------------------------------------------- > > Key: HIVE-11398 > URL: https://issues.apache.org/jira/browse/HIVE-11398 > Project: Hive > Issue Type: New Feature > Components: Logical Optimizer, UDF > Affects Versions: 1.3.0, 2.0.0 > Reporter: Gopal V > Assignee: Jesus Camacho Rodriguez > Attachments: HIVE-11398.2.patch, HIVE-11398.3.patch, > HIVE-11398.4.patch, HIVE-11398.5.patch, HIVE-11398.patch > > > Deep trees of AND/OR are hard to traverse particularly when they are merely > the same structure in nested form as a version of the operator that takes an > arbitrary number of args. > One potential way to convert the DFS searches into a simpler BFS search is to > introduce a new Operator pair named ALL and ANY. > ALL(A, B, C, D, E) represents AND(AND(AND(AND(E, D), C), B), A) > ANY(A, B, C, D, E) represents OR(OR(OR(OR(E, D), C),B),A) > The SemanticAnalyser would be responsible for generating these operators and > this would mean that the depth and complexity of traversals for the simplest > case of wide AND/OR trees would be trivial. -- This message was sent by Atlassian JIRA (v6.3.4#6332)