You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@drill.apache.org by ppadma <gi...@git.apache.org> on 2017/11/16 06:17:11 UTC

[GitHub] drill pull request #1038: DRILL-5972: Slow performance for query on INFORMAT...

GitHub user ppadma opened a pull request:

    https://github.com/apache/drill/pull/1038

    DRILL-5972: Slow performance for query on INFORMATION_SCHEMA.TABLE

    Please see DRILL-5972.
    Problem is while evaluating "boolean and", we are returning as soon as expression result is not TRUE. We should go through all the expressions and if any of them is FALSE, return FALSE. If any of them is INCONCLUSIVE, return INCONCLUSIVE. 
    Tested the fix with lot of hive tables and verified that it fixes the performance problem.
    


You can merge this pull request into a Git repository by running:

    $ git pull https://github.com/ppadma/drill DRILL-5972

Alternatively you can review and apply these changes as the patch at:

    https://github.com/apache/drill/pull/1038.patch

To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:

    This closes #1038
    
----
commit 70f489098acc94d9e1af1aa05c35e2dfe01198c6
Author: Padma Penumarthy <pp...@yahoo.com>
Date:   2017-11-16T04:31:23Z

    DRILL-5972: Slow performance for query on INFORMATION_SCHEMA.TABLE

----


---

[GitHub] drill issue #1038: DRILL-5972: Slow performance for query on INFORMATION_SCH...

Posted by parthchandra <gi...@git.apache.org>.
Github user parthchandra commented on the issue:

    https://github.com/apache/drill/pull/1038
  
    +1. LGTM


---

[GitHub] drill pull request #1038: DRILL-5972: Slow performance for query on INFORMAT...

Posted by ppadma <gi...@git.apache.org>.
Github user ppadma commented on a diff in the pull request:

    https://github.com/apache/drill/pull/1038#discussion_r153661820
  
    --- Diff: exec/java-exec/src/main/java/org/apache/drill/exec/store/ischema/InfoSchemaFilter.java ---
    @@ -202,14 +202,19 @@ private Result evaluateHelperFunction(Map<String, String> recordValues, Function
             // If at least one arg returns FALSE, then the AND function value is FALSE
             // If at least one arg returns INCONCLUSIVE, then the AND function value is INCONCLUSIVE
             // If all args return TRUE, then the AND function value is TRUE
    +        Result result = Result.TRUE;
    +
             for(ExprNode arg : exprNode.args) {
               Result exprResult = evaluateHelper(recordValues, arg);
    -          if (exprResult != Result.TRUE) {
    +          if (exprResult == Result.FALSE) {
                 return exprResult;
               }
    +          if (exprResult == Result.INCONCLUSIVE) {
    --- End diff --
    
    @parthchandra yes, that is correct. 


---

[GitHub] drill issue #1038: DRILL-5972: Slow performance for query on INFORMATION_SCH...

Posted by priteshm <gi...@git.apache.org>.
Github user priteshm commented on the issue:

    https://github.com/apache/drill/pull/1038
  
    @parthchandra can you please review this?


---

[GitHub] drill pull request #1038: DRILL-5972: Slow performance for query on INFORMAT...

Posted by parthchandra <gi...@git.apache.org>.
Github user parthchandra commented on a diff in the pull request:

    https://github.com/apache/drill/pull/1038#discussion_r153658073
  
    --- Diff: exec/java-exec/src/main/java/org/apache/drill/exec/store/ischema/InfoSchemaFilter.java ---
    @@ -202,14 +202,19 @@ private Result evaluateHelperFunction(Map<String, String> recordValues, Function
             // If at least one arg returns FALSE, then the AND function value is FALSE
             // If at least one arg returns INCONCLUSIVE, then the AND function value is INCONCLUSIVE
             // If all args return TRUE, then the AND function value is TRUE
    +        Result result = Result.TRUE;
    +
             for(ExprNode arg : exprNode.args) {
               Result exprResult = evaluateHelper(recordValues, arg);
    -          if (exprResult != Result.TRUE) {
    +          if (exprResult == Result.FALSE) {
                 return exprResult;
               }
    +          if (exprResult == Result.INCONCLUSIVE) {
    --- End diff --
    
    Just to be clear. You want to return `Result.INCONCLUSIVE` if any one of the expressions is inconclusive  *and* there is no expression that is false.  Correct ?


---

[GitHub] drill pull request #1038: DRILL-5972: Slow performance for query on INFORMAT...

Posted by asfgit <gi...@git.apache.org>.
Github user asfgit closed the pull request at:

    https://github.com/apache/drill/pull/1038


---