You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues-all@impala.apache.org by "Paul Rogers (JIRA)" <ji...@apache.org> on 2018/11/05 22:33:00 UTC

[jira] [Created] (IMPALA-7808) Refactor Analyzer for easier debugging

Paul Rogers created IMPALA-7808:
-----------------------------------

             Summary: Refactor Analyzer for easier debugging
                 Key: IMPALA-7808
                 URL: https://issues.apache.org/jira/browse/IMPALA-7808
             Project: IMPALA
          Issue Type: Improvement
          Components: Frontend
    Affects Versions: Impala 3.0
            Reporter: Paul Rogers
            Assignee: Paul Rogers


The analysis steps in {{Analyzer}} and {{AnalysisContext}} are large and cumbersome. There is ample evidence in the literature that simpler, smaller functions are easier to understand and debug than larger, more complex functions. This ticket requests breaking up the large functions in these two cases into smaller, easier-understood units in preparation for tracking down issues related to missing rewrites of the {{WHERE}} and {{GROUP BY}} clauses.

One might argue that large functions perform better by eliminating unnecessary function calls. However, the planner is not performance sensitive, and the dozen extra calls that this change introduce will not change performance given the thousands of calls already made.

Experience has shown that the JIT compiler in the JVM actually does a better job optimizing smaller functions, and gives up when functions get to large. So, by creating smaller functions, we may actually allow the JIT compiler to generate better code.

And, this refactoring is in support of a likely outcome that the planner can handle rewrites without making multiple passes through the analyzer: that savings will far outweigh the few extra calls this change introduces.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

---------------------------------------------------------------------
To unsubscribe, e-mail: issues-all-unsubscribe@impala.apache.org
For additional commands, e-mail: issues-all-help@impala.apache.org