[
https://issues.apache.org/jira/browse/DRILL-5116?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15789058#comment-15789058
]
Paul Rogers commented on DRILL-5116:
------------------------------------
Another issue with nested classes is the enum nested inside {{HashAggTemplate}}:
{code}
public abstract class HashAggTemplate implements HashAggregator {
...
public enum Metric implements MetricDef {
...
{code}
An enum is a (special type of) class. The {{SignatureHolder}} happily generates
subclasses for every class nested inside a template, including the enum.
However, a class cannot extend an enum, resulting in invalid Java code.
The solution is to filter out enums when picking classes to subclass:
{code}
public class SignatureHolder implements Iterable<CodeGeneratorMethod> {
...
public static SignatureHolder getHolder(Class<?> signature) {
...
for (Class<?> inner : signature.getClasses()) {
// Do not generate classes for nested enums.
// (Occurs in HashAggTemplate.)
if (inner.isEnum()) {
continue;
}
...
{code}
> 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.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)