[ 
https://issues.apache.org/jira/browse/IMPALA-7881?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Paul Rogers resolved IMPALA-7881.
---------------------------------
    Resolution: Fixed

> Visualize AST for easier debugging
> ----------------------------------
>
>                 Key: IMPALA-7881
>                 URL: https://issues.apache.org/jira/browse/IMPALA-7881
>             Project: IMPALA
>          Issue Type: Improvement
>          Components: Frontend
>    Affects Versions: Impala 3.0
>            Reporter: Paul Rogers
>            Assignee: Paul Rogers
>            Priority: Minor
>
> The parser creates a "raw" AST (abstract syntax tree), which is then 
> "decorated" by the analyzer. Often, when debugging the analyzer, one wants to 
> see the state of the tree. At present, doing so using an IDE's debugger is 
> tedious as one has to slowly navigate within the tree.
>  Provide a debug tool that visualizes the tree. For example:
> {noformat}
> <root> (SelectStmt): {
> . isExplain: false
> . analyzer: <Skip Analyzer>
> . withClause: <null>
> . orderByElements: [
> . . 0 (OrderByElement): {
> . . . expr (SlotRef): {
> ...
> . selectList (SelectList): {
> . . planHints: []
> . . isDistinct: false
> . . items: [
> . . . 0 (SelectListItem): {
> . . . . expr (SlotRef): {
> ...
> . . . . . rawPath: [
> . . . . . . 0: "id"
> . . . . . ]
> . . . . . label: "id"
> {noformat}
> Many improvements can be made. (Format as JSON, export to a nice JSON 
> visualizer, etc.) The purpose here is to just get started.
> To avoid the need to write code for every AST node class (of which there are 
> many), use Java introspection to walk fields directly. The result may be 
> overly verbose, but it is a quick way to get started.
> The idea is to use the visualizer in conjunction with a unit test:
> {code:java}
>   @Test
>   public void test() {
>     String stmt =
>         "SELECT id, int_col + 10 AS c" +
>         " FROM functional.alltypestiny" +
>         " WHERE id > 10" +
>         " ORDER BY c";
>     ParseNode root = AnalyzesOk(stmt);
>     AstPrinter.printTree(root);
>   }
> {code}
> When debugging an issue, create a test. If things are not working, 
> temporarily insert a call to the visualizer to see what's what. Remove the 
> call when done.
> Poking at the AST from outside a unit test (perhaps from the Impala shell) is 
> a larger project, beyond the scope of this ticket.



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

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

Reply via email to