[ 
https://issues.apache.org/jira/browse/DRILL-5457?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16027220#comment-16027220
 ] 

ASF GitHub Bot commented on DRILL-5457:
---------------------------------------

Github user paul-rogers commented on a diff in the pull request:

    https://github.com/apache/drill/pull/822#discussion_r118812194
  
    --- Diff: 
exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/aggregate/HashAggTemplate.java
 ---
    @@ -230,15 +452,35 @@ public void setup(HashAggregate hashAggrConfig, 
HashTableConfig htConfig, Fragme
           throw new IllegalArgumentException("Wrong number of workspace 
variables.");
         }
     
    -//    this.context = context;
    +    this.context = context;
         this.stats = stats;
    -    this.allocator = allocator;
    +    this.allocator = oContext.getAllocator();
    +    this.oContext = oContext;
         this.incoming = incoming;
    -//    this.schema = incoming.getSchema();
         this.outgoing = outgoing;
         this.outContainer = outContainer;
    +    this.operatorId = hashAggrConfig.getOperatorId();
    +
    +    is2ndPhase = hashAggrConfig.getAggPhase() == 
AggPrelBase.OperatorPhase.PHASE_2of2;
    +    isTwoPhase = hashAggrConfig.getAggPhase() != 
AggPrelBase.OperatorPhase.PHASE_1of1;
    +    canSpill = isTwoPhase; // single phase can not spill
    --- End diff --
    
    Here we have three related booleans, or 2^8 cases. Consider using an enum 
to identify the (likely much smaller) number of actual cases. Maybe `ONE_PASS, 
FIRST_PHASE, SECOND_PHASE`?
    
    Then if the code does lots of "if this phase do that" kind of logic, it may 
be handy to have a single base class with common logic, then three (or 
whatever) base classes that define the phase-specific logic. Much easier to 
test and understand.


> Support Spill to Disk for the Hash Aggregate Operator
> -----------------------------------------------------
>
>                 Key: DRILL-5457
>                 URL: https://issues.apache.org/jira/browse/DRILL-5457
>             Project: Apache Drill
>          Issue Type: Improvement
>          Components: Execution - Relational Operators
>    Affects Versions: 1.10.0
>            Reporter: Boaz Ben-Zvi
>            Assignee: Boaz Ben-Zvi
>             Fix For: 1.11.0
>
>
> Support gradual spilling memory to disk as the available memory gets too 
> small to allow in memory work for the Hash Aggregate Operator.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Reply via email to