[
https://issues.apache.org/jira/browse/DRILL-5116?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15791668#comment-15791668
]
ASF GitHub Bot commented on DRILL-5116:
---------------------------------------
GitHub user paul-rogers opened a pull request:
https://github.com/apache/drill/pull/716
DRILL-5116: Enable generated code debugging in each Drill operator
DRILL-5052 added the ability to debug generated code. The reviewer
suggested permitting the technique to be used for all Drill operators. This PR
provides the required fixes. Most were small changes, others dealt with the
rather clever way that the existing byte-code merge converted static nested
classes to non-static inner classes, with the way that constructors were
inserted at the byte-code level and so on. See the JIRA for the details.
This code passed the unit tests twice: once with the traditional byte-code
manipulations, a second time using "plain-old Java" code compilation. Plain-old
Java is turned off by default, but can be turned on for all operators with a
single config change: see the JIRA for info. Consider the plain-old Java option
to be experimental: very handy for debugging, perhaps not quite tested enough
for production use.
One or two operators were not converted as they appear to not be used at
present, so no tests exercise them. See the JIRA for details.
This fix required visiting all operators. All generated methods declare
exceptions. For plain-old Java, the based class methods must also declare
exceptions. That afforded the opportunity to fix compiler warnings about
resources (our over-use of {{AutoCloseable}}), missing type parameters, unused
variables, and so on.
You can merge this pull request into a Git repository by running:
$ git pull https://github.com/paul-rogers/drill DRILL-5116
Alternatively you can review and apply these changes as the patch at:
https://github.com/apache/drill/pull/716.patch
To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:
This closes #716
----
commit 020e75cc5a538a0271dc78b361622b64ca6c2c65
Author: Paul Rogers <[email protected]>
Date: 2016-12-13T01:30:56Z
DRILL-5116: Enable generated code debugging in each Drill operator
DRILL-5052 added the ability to debug generated code. The reviewer suggested
permitting the technique to be used for all Drill operators. This PR
provides
the required fixes. Most were small changes, others dealt with the rather
clever way that the existing byte-code merge converted static nested classes
to non-static inner classes, with the way that constructors were inserted
at the byte-code level and so on. See the JIRA for the details.
This code passed the unit tests twice: once with the traditional byte-code
manipulations, a second time using "plain-old Java" code compilation.
Plain-old Java is turned off by default, but can be turned on for all
operators with a single config change: see the JIRA for info. Consider
the plain-old Java option to be experimental: very handy for debugging,
perhaps not quite tested enough for production use.
----
> Enable generated code debugging in each Drill operator
> ------------------------------------------------------
>
> Key: DRILL-5116
> URL: https://issues.apache.org/jira/browse/DRILL-5116
> Project: Apache Drill
> Issue Type: Improvement
> Affects Versions: 1.9.0
> Reporter: Paul Rogers
> Assignee: Paul Rogers
> Priority: Minor
>
> DRILL-5052 adds the ability to debug generated code. Some of the code
> generated by Drill's operators has minor problems when compiled directly
> using the new technique. These issues are ignore by the byte-code-merge
> technique uses in production. This ticket asks to try the DRILL-5052 feature
> in each operator, clean up any minor problems, and ensure each operator
> generates code suitable for debugging. Use the new
> {{CodeGenerator.plainOldJavaCapable()}} method to mark each generated class
> as ready for "plain-old Java" code gen.
> The advantages of this feature are two:
> 1. Ability to step through the generated code to increase understanding of
> existing operators and to ease development of improvements to existing
> operators and of any new operators we choose to create.
> 2. Open the door to experimenting with how to improve performance of the
> generated code.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)