[ 
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)

Reply via email to