drill-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Paul Rogers (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (DRILL-5116) Enable generated code debugging in each Drill operator
Date Sat, 31 Dec 2016 06:54:58 GMT

    [ 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}}:

public abstract class HashAggTemplate implements HashAggregator {
    public enum Metric implements MetricDef {

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:

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()) {

> 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

View raw message