Uploaded image for project: 'Apache Drill'
  1. Apache Drill
  2. DRILL-5052

Option to debug generated Java code using an IDE

    XMLWordPrintableJSON

Details

    Description

      Drill makes extensive use of Java code generation to implement its operators. Drill uses sophisticated techniques to blend generated code with pre-compiled template code. An unfortunate side-effect of this behavior is that it is very difficult to visualize and debug the generated code.

      As it turns out, Drill's code-merge facility is, in essence, a do-it-yourself version of subclassing. The Drill "template" is the parent class, the generated code is the subclass. But, rather than using plain-old subclassing, Drill combines the code from the two classes into a single "artificial" packet of byte codes for which no source exists.

      Modify the code generation path to optionally allow "plain-old Java" compilation: the generated code is a subclass of the template. Compile the generated code as a plain-old Java class with no byte-code fix-up. Write the code to a known location that the IDE can search when looking for source files.

      With this change, developers can turn on the above feature, set a breakpoint in a template, then step directly into the generated Java code called from the template.

      This feature should be an option, enabled by developers when needed. The existing byte-code technique should be used for production code generation.

      Attachments

        Issue Links

          Activity

            People

              paul-rogers Paul Rogers
              paul-rogers Paul Rogers
              Jinfeng Ni Jinfeng Ni
              Votes:
              0 Vote for this issue
              Watchers:
              7 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: