DRILL-5972: Slow performance for query on INFORMATION_SCHEMA.TABLE closes #1038
Project: http://git-wip-us.apache.org/repos/asf/drill/repo Commit: http://git-wip-us.apache.org/repos/asf/drill/commit/3d13b4f6 Tree: http://git-wip-us.apache.org/repos/asf/drill/tree/3d13b4f6 Diff: http://git-wip-us.apache.org/repos/asf/drill/diff/3d13b4f6 Branch: refs/heads/master Commit: 3d13b4f604852b959fe5ab0f21ec01d455553a2f Parents: 53d71df Author: Padma Penumarthy <ppenuma...@yahoo.com> Authored: Wed Nov 15 20:31:23 2017 -0800 Committer: Arina Ielchiieva <arina.yelchiy...@gmail.com> Committed: Wed Nov 29 12:22:32 2017 +0200 ---------------------------------------------------------------------- .../apache/drill/exec/store/ischema/InfoSchemaFilter.java | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/drill/blob/3d13b4f6/exec/java-exec/src/main/java/org/apache/drill/exec/store/ischema/InfoSchemaFilter.java ---------------------------------------------------------------------- diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/store/ischema/InfoSchemaFilter.java b/exec/java-exec/src/main/java/org/apache/drill/exec/store/ischema/InfoSchemaFilter.java index 6d4d8ce..92464e7 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/store/ischema/InfoSchemaFilter.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/store/ischema/InfoSchemaFilter.java @@ -202,14 +202,19 @@ public class InfoSchemaFilter { // 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) { + result = Result.INCONCLUSIVE; + } } - return Result.TRUE; + return result; } case "in": {