[
https://issues.apache.org/jira/browse/IMPALA-7881?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16707959#comment-16707959
]
ASF subversion and git services commented on IMPALA-7881:
---------------------------------------------------------
Commit 971adb2f8f5614473d115ac1d775a8fc3ccee201 in impala's branch
refs/heads/master from [~paul-rogers]
[ https://git-wip-us.apache.org/repos/asf?p=impala.git;h=971adb2 ]
IMPALA-7881 (Part 2): Visualize AST for easier debugging
The AST visualizer has turned out to be very handy for debugging
analyzer issues. This patch contains another set of enhancements to make
it easier to use, including an easy way to visualize a node (and a few
of its descendents) or an entire tree from a debug session in Eclipse.
Testing: This is a test-only feature, it is not used from any production
code.
Change-Id: I409cabad9ec8c4dcf16c7e863dada58754d5eac1
Reviewed-on: http://gerrit.cloudera.org:8080/12015
Reviewed-by: Impala Public Jenkins <[email protected]>
Tested-by: Impala Public Jenkins <[email protected]>
> 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: [email protected]
For additional commands, e-mail: [email protected]