Github user yucai commented on the issue:

    https://github.com/apache/spark/pull/14481
  
    Generated code example, **not for code view yet**.
    ```
    scala> Seq(("a", "10"), ("b", "1"), ("b", "2"), ("c", "5"), ("c", "3")).
         |       toDF("k", "v").groupBy("k").agg(max("v")).debugCodegen()
    Found 2 WholeStageCodegen subtrees.
    == Subtree 1 / 2 ==
    *SortAggregate(key=[k#24], functions=[partial_max(v#25)], 
output=[k#24,max#38])
    +- *Sort [k#24 ASC], false, 0
       +- LocalTableScan [k#24, v#25]
    
    Generated code:
    /* 001 */ public Object generate(Object[] references) {
    /* 002 */   return new GeneratedIterator(references);
    /* 003 */ }
    /* 004 */
    /* 005 */ final class GeneratedIterator extends 
org.apache.spark.sql.execution.BufferedRowIterator {
    /* 006 */   private Object[] references;
    /* 007 */   private boolean sagg_bufIsNull;
    /* 008 */   private UTF8String sagg_bufValue;
    /* 009 */   private UnsafeRow sagg_currentGroupingKey;
    /* 010 */   private boolean sagg_lastAgg;
    /* 011 */   private org.apache.spark.sql.execution.metric.SQLMetric 
sagg_numOutputRows;
    /* 012 */   private boolean sort_needToSort;
    /* 013 */   private org.apache.spark.sql.execution.SortExec sort_plan;
    /* 014 */   private org.apache.spark.sql.execution.UnsafeExternalRowSorter 
sort_sorter;
    /* 015 */   private org.apache.spark.executor.TaskMetrics sort_metrics;
    /* 016 */   private scala.collection.Iterator<UnsafeRow> sort_sortedIter;
    /* 017 */   private scala.collection.Iterator inputadapter_input;
    /* 018 */   private org.apache.spark.sql.execution.metric.SQLMetric 
sort_peakMemory;
    /* 019 */   private org.apache.spark.sql.execution.metric.SQLMetric 
sort_spillSize;
    /* 020 */   private org.apache.spark.sql.execution.metric.SQLMetric 
sort_sortTime;
    /* 021 */   private UnsafeRow sagg_result;
    /* 022 */   private 
org.apache.spark.sql.catalyst.expressions.codegen.BufferHolder sagg_holder;
    /* 023 */   private 
org.apache.spark.sql.catalyst.expressions.codegen.UnsafeRowWriter 
sagg_rowWriter;
    /* 024 */   private UnsafeRow sagg_result1;
    /* 025 */   private 
org.apache.spark.sql.catalyst.expressions.codegen.BufferHolder sagg_holder1;
    /* 026 */   private 
org.apache.spark.sql.catalyst.expressions.codegen.UnsafeRowWriter 
sagg_rowWriter1;
    /* 027 */   private UnsafeRow wholestagecodegen_result;
    /* 028 */   private 
org.apache.spark.sql.catalyst.expressions.codegen.BufferHolder 
wholestagecodegen_holder;
    /* 029 */   private 
org.apache.spark.sql.catalyst.expressions.codegen.UnsafeRowWriter 
wholestagecodegen_rowWriter;
    /* 030 */
    /* 031 */   public GeneratedIterator(Object[] references) {
    /* 032 */     this.references = references;
    /* 033 */   }
    /* 034 */
    /* 035 */   public void init(int index, scala.collection.Iterator inputs[]) 
{
    /* 036 */     partitionIndex = index;
    /* 037 */
    /* 038 */     sagg_currentGroupingKey = null;
    /* 039 */     sagg_lastAgg = true;
    /* 040 */     this.sagg_numOutputRows = 
(org.apache.spark.sql.execution.metric.SQLMetric) references[0];
    /* 041 */     sort_needToSort = true;
    /* 042 */     this.sort_plan = (org.apache.spark.sql.execution.SortExec) 
references[1];
    /* 043 */     sort_sorter = sort_plan.createSorter();
    /* 044 */     sort_metrics = 
org.apache.spark.TaskContext.get().taskMetrics();
    /* 045 */
    /* 046 */     inputadapter_input = inputs[0];
    /* 047 */     this.sort_peakMemory = 
(org.apache.spark.sql.execution.metric.SQLMetric) references[2];
    /* 048 */     this.sort_spillSize = 
(org.apache.spark.sql.execution.metric.SQLMetric) references[3];
    /* 049 */     this.sort_sortTime = 
(org.apache.spark.sql.execution.metric.SQLMetric) references[4];
    /* 050 */     sagg_result = new UnsafeRow(1);
    /* 051 */     this.sagg_holder = new 
org.apache.spark.sql.catalyst.expressions.codegen.BufferHolder(sagg_result, 32);
    /* 052 */     this.sagg_rowWriter = new 
org.apache.spark.sql.catalyst.expressions.codegen.UnsafeRowWriter(sagg_holder, 
1);
    /* 053 */     sagg_result1 = new UnsafeRow(2);
    /* 054 */     this.sagg_holder1 = new 
org.apache.spark.sql.catalyst.expressions.codegen.BufferHolder(sagg_result1, 
64);
    /* 055 */     this.sagg_rowWriter1 = new 
org.apache.spark.sql.catalyst.expressions.codegen.UnsafeRowWriter(sagg_holder1, 
2);
    /* 056 */     wholestagecodegen_result = new UnsafeRow(2);
    /* 057 */     this.wholestagecodegen_holder = new 
org.apache.spark.sql.catalyst.expressions.codegen.BufferHolder(wholestagecodegen_result,
 64);
    /* 058 */     this.wholestagecodegen_rowWriter = new 
org.apache.spark.sql.catalyst.expressions.codegen.UnsafeRowWriter(wholestagecodegen_holder,
 2);
    /* 059 */   }
    /* 060 */
    /* 061 */   private void sort_addToSorter() throws java.io.IOException {
    /* 062 */     while (inputadapter_input.hasNext()) {
    /* 063 */       InternalRow inputadapter_row = (InternalRow) 
inputadapter_input.next();
    /* 064 */       sort_sorter.insertRow((UnsafeRow)inputadapter_row);
    /* 065 */       if (shouldStop()) return;
    /* 066 */     }
    /* 067 */
    /* 068 */   }
    /* 069 */
    /* 070 */   protected void processNext() throws java.io.IOException {
    /* 071 */     if (sort_needToSort) {
    /* 072 */       long sort_spillSizeBefore = 
sort_metrics.memoryBytesSpilled();
    /* 073 */       sort_addToSorter();
    /* 074 */       sort_sortedIter = sort_sorter.sort();
    /* 075 */       sort_sortTime.add(sort_sorter.getSortTimeNanos() / 1000000);
    /* 076 */       sort_peakMemory.add(sort_sorter.getPeakMemoryUsage());
    /* 077 */       sort_spillSize.add(sort_metrics.memoryBytesSpilled() - 
sort_spillSizeBefore);
    /* 078 */       
sort_metrics.incPeakExecutionMemory(sort_sorter.getPeakMemoryUsage());
    /* 079 */       sort_needToSort = false;
    /* 080 */     }
    /* 081 */
    /* 082 */     while (sort_sortedIter.hasNext()) {
    /* 083 */       UnsafeRow sort_outputRow = 
(UnsafeRow)sort_sortedIter.next();
    /* 084 */
    /* 085 */       boolean sort_isNull = sort_outputRow.isNullAt(0);
    /* 086 */       UTF8String sort_value = sort_isNull ? null : 
(sort_outputRow.getUTF8String(0));
    /* 087 */       boolean sort_isNull1 = sort_outputRow.isNullAt(1);
    /* 088 */       UTF8String sort_value1 = sort_isNull1 ? null : 
(sort_outputRow.getUTF8String(1));
    /* 089 */
    /* 090 */       // generate grouping key
    /* 091 */       sagg_holder.reset();
    /* 092 */
    /* 093 */       sagg_rowWriter.zeroOutNullBytes();
    /* 094 */
    /* 095 */       if (sort_isNull) {
    /* 096 */         sagg_rowWriter.setNullAt(0);
    /* 097 */       } else {
    /* 098 */         sagg_rowWriter.write(0, sort_value);
    /* 099 */       }
    /* 100 */       sagg_result.setTotalSize(sagg_holder.totalSize());
    /* 101 */
    /* 102 */       if (sagg_currentGroupingKey == null) {
    /* 103 */         sagg_currentGroupingKey = sagg_result.copy();
    /* 104 */         // init aggregation buffer vars
    /* 105 */         final UTF8String sagg_value = null;
    /* 106 */         sagg_bufIsNull = true;
    /* 107 */         sagg_bufValue = sagg_value;
    /* 108 */         // do aggregation
    /* 109 */         // common sub-expressions
    /* 110 */
    /* 111 */         // evaluate aggregate function
    /* 112 */         boolean sagg_isNull2 = sagg_bufIsNull;
    /* 113 */         UTF8String sagg_value2 = sagg_bufValue;
    /* 114 */
    /* 115 */         if (!sort_isNull1 && (sagg_isNull2 ||
    /* 116 */             (sort_value1.compare(sagg_value2)) > 0)) {
    /* 117 */           sagg_isNull2 = false;
    /* 118 */           sagg_value2 = sort_value1;
    /* 119 */         }
    /* 120 */         // update aggregation buffer
    /* 121 */         sagg_bufIsNull = sagg_isNull2;
    /* 122 */         if (sagg_bufValue != sagg_value2)
    /* 123 */         sagg_bufValue = sagg_value2 == null ? null : 
sagg_value2.clone();
    /* 124 */         continue;
    /* 125 */       } else {
    /* 126 */         if (sagg_currentGroupingKey.equals(sagg_result)) {
    /* 127 */           // do aggregation
    /* 128 */           // common sub-expressions
    /* 129 */
    /* 130 */           // evaluate aggregate function
    /* 131 */           boolean sagg_isNull2 = sagg_bufIsNull;
    /* 132 */           UTF8String sagg_value2 = sagg_bufValue;
    /* 133 */
    /* 134 */           if (!sort_isNull1 && (sagg_isNull2 ||
    /* 135 */               (sort_value1.compare(sagg_value2)) > 0)) {
    /* 136 */             sagg_isNull2 = false;
    /* 137 */             sagg_value2 = sort_value1;
    /* 138 */           }
    /* 139 */           // update aggregation buffer
    /* 140 */           sagg_bufIsNull = sagg_isNull2;
    /* 141 */           if (sagg_bufValue != sagg_value2)
    /* 142 */           sagg_bufValue = sagg_value2 == null ? null : 
sagg_value2.clone();
    /* 143 */           continue;
    /* 144 */         } else {
    /* 145 */           do {
    /* 146 */             sagg_numOutputRows.add(1);
    /* 147 */
    /* 148 */             sagg_holder1.reset();
    /* 149 */
    /* 150 */             sagg_rowWriter1.zeroOutNullBytes();
    /* 151 */
    /* 152 */             boolean sagg_isNull5 = 
sagg_currentGroupingKey.isNullAt(0);
    /* 153 */             UTF8String sagg_value5 = sagg_isNull5 ? null : 
(sagg_currentGroupingKey.getUTF8String(0));
    /* 154 */             if (sagg_isNull5) {
    /* 155 */               sagg_rowWriter1.setNullAt(0);
    /* 156 */             } else {
    /* 157 */               sagg_rowWriter1.write(0, sagg_value5);
    /* 158 */             }
    /* 159 */
    /* 160 */             if (sagg_bufIsNull) {
    /* 161 */               sagg_rowWriter1.setNullAt(1);
    /* 162 */             } else {
    /* 163 */               sagg_rowWriter1.write(1, sagg_bufValue);
    /* 164 */             }
    /* 165 */             sagg_result1.setTotalSize(sagg_holder1.totalSize());
    /* 166 */
    /* 167 */             append(sagg_result1);
    /* 168 */
    /* 169 */           } while (false);
    /* 170 */           // new grouping key
    /* 171 */           sagg_currentGroupingKey = sagg_result.copy();
    /* 172 */           final UTF8String sagg_value = null;
    /* 173 */           sagg_bufIsNull = true;
    /* 174 */           sagg_bufValue = sagg_value;
    /* 175 */           // common sub-expressions
    /* 176 */
    /* 177 */           // evaluate aggregate function
    /* 178 */           boolean sagg_isNull2 = sagg_bufIsNull;
    /* 179 */           UTF8String sagg_value2 = sagg_bufValue;
    /* 180 */
    /* 181 */           if (!sort_isNull1 && (sagg_isNull2 ||
    /* 182 */               (sort_value1.compare(sagg_value2)) > 0)) {
    /* 183 */             sagg_isNull2 = false;
    /* 184 */             sagg_value2 = sort_value1;
    /* 185 */           }
    /* 186 */           // update aggregation buffer
    /* 187 */           sagg_bufIsNull = sagg_isNull2;
    /* 188 */           if (sagg_bufValue != sagg_value2)
    /* 189 */           sagg_bufValue = sagg_value2 == null ? null : 
sagg_value2.clone();
    /* 190 */         }
    /* 191 */       }
    /* 192 */
    /* 193 */       if (shouldStop()) return;
    /* 194 */     }
    /* 195 */
    /* 196 */     while (sagg_lastAgg && sagg_currentGroupingKey != null) {
    /* 197 */       sagg_lastAgg = false;
    /* 198 */       sagg_numOutputRows.add(1);
    /* 199 */
    /* 200 */       wholestagecodegen_holder.reset();
    /* 201 */
    /* 202 */       wholestagecodegen_rowWriter.zeroOutNullBytes();
    /* 203 */
    /* 204 */       boolean wholestagecodegen_isNull = 
sagg_currentGroupingKey.isNullAt(0);
    /* 205 */       UTF8String wholestagecodegen_value = 
wholestagecodegen_isNull ? null : (sagg_currentGroupingKey.getUTF8String(0));
    /* 206 */       if (wholestagecodegen_isNull) {
    /* 207 */         wholestagecodegen_rowWriter.setNullAt(0);
    /* 208 */       } else {
    /* 209 */         wholestagecodegen_rowWriter.write(0, 
wholestagecodegen_value);
    /* 210 */       }
    /* 211 */
    /* 212 */       if (sagg_bufIsNull) {
    /* 213 */         wholestagecodegen_rowWriter.setNullAt(1);
    /* 214 */       } else {
    /* 215 */         wholestagecodegen_rowWriter.write(1, sagg_bufValue);
    /* 216 */       }
    /* 217 */       
wholestagecodegen_result.setTotalSize(wholestagecodegen_holder.totalSize());
    /* 218 */
    /* 219 */       append(wholestagecodegen_result);
    /* 220 */
    /* 221 */     }
    /* 222 */   }
    /* 223 */ }
    
    == Subtree 2 / 2 ==
    *SortAggregate(key=[k#24], functions=[max(v#25)], output=[k#24,max(v)#33])
    +- *Sort [k#24 ASC], false, 0
       +- Exchange hashpartitioning(k#24, 200)
          +- *SortAggregate(key=[k#24], functions=[partial_max(v#25)], 
output=[k#24,max#38])
             +- *Sort [k#24 ASC], false, 0
                +- LocalTableScan [k#24, v#25]
    
    Generated code:
    /* 001 */ public Object generate(Object[] references) {
    /* 002 */   return new GeneratedIterator(references);
    /* 003 */ }
    /* 004 */
    /* 005 */ final class GeneratedIterator extends 
org.apache.spark.sql.execution.BufferedRowIterator {
    /* 006 */   private Object[] references;
    /* 007 */   private boolean sagg_bufIsNull;
    /* 008 */   private UTF8String sagg_bufValue;
    /* 009 */   private UnsafeRow sagg_currentGroupingKey;
    /* 010 */   private boolean sagg_lastAgg;
    /* 011 */   private org.apache.spark.sql.execution.metric.SQLMetric 
sagg_numOutputRows;
    /* 012 */   private boolean sort_needToSort;
    /* 013 */   private org.apache.spark.sql.execution.SortExec sort_plan;
    /* 014 */   private org.apache.spark.sql.execution.UnsafeExternalRowSorter 
sort_sorter;
    /* 015 */   private org.apache.spark.executor.TaskMetrics sort_metrics;
    /* 016 */   private scala.collection.Iterator<UnsafeRow> sort_sortedIter;
    /* 017 */   private scala.collection.Iterator inputadapter_input;
    /* 018 */   private org.apache.spark.sql.execution.metric.SQLMetric 
sort_peakMemory;
    /* 019 */   private org.apache.spark.sql.execution.metric.SQLMetric 
sort_spillSize;
    /* 020 */   private org.apache.spark.sql.execution.metric.SQLMetric 
sort_sortTime;
    /* 021 */   private UnsafeRow sagg_result;
    /* 022 */   private 
org.apache.spark.sql.catalyst.expressions.codegen.BufferHolder sagg_holder;
    /* 023 */   private 
org.apache.spark.sql.catalyst.expressions.codegen.UnsafeRowWriter 
sagg_rowWriter;
    /* 024 */   private UnsafeRow sagg_result1;
    /* 025 */   private 
org.apache.spark.sql.catalyst.expressions.codegen.BufferHolder sagg_holder1;
    /* 026 */   private 
org.apache.spark.sql.catalyst.expressions.codegen.UnsafeRowWriter 
sagg_rowWriter1;
    /* 027 */   private UnsafeRow wholestagecodegen_result;
    /* 028 */   private 
org.apache.spark.sql.catalyst.expressions.codegen.BufferHolder 
wholestagecodegen_holder;
    /* 029 */   private 
org.apache.spark.sql.catalyst.expressions.codegen.UnsafeRowWriter 
wholestagecodegen_rowWriter;
    /* 030 */
    /* 031 */   public GeneratedIterator(Object[] references) {
    /* 032 */     this.references = references;
    /* 033 */   }
    /* 034 */
    /* 035 */   public void init(int index, scala.collection.Iterator inputs[]) 
{
    /* 036 */     partitionIndex = index;
    /* 037 */
    /* 038 */     sagg_currentGroupingKey = null;
    /* 039 */     sagg_lastAgg = true;
    /* 040 */     this.sagg_numOutputRows = 
(org.apache.spark.sql.execution.metric.SQLMetric) references[0];
    /* 041 */     sort_needToSort = true;
    /* 042 */     this.sort_plan = (org.apache.spark.sql.execution.SortExec) 
references[1];
    /* 043 */     sort_sorter = sort_plan.createSorter();
    /* 044 */     sort_metrics = 
org.apache.spark.TaskContext.get().taskMetrics();
    /* 045 */
    /* 046 */     inputadapter_input = inputs[0];
    /* 047 */     this.sort_peakMemory = 
(org.apache.spark.sql.execution.metric.SQLMetric) references[2];
    /* 048 */     this.sort_spillSize = 
(org.apache.spark.sql.execution.metric.SQLMetric) references[3];
    /* 049 */     this.sort_sortTime = 
(org.apache.spark.sql.execution.metric.SQLMetric) references[4];
    /* 050 */     sagg_result = new UnsafeRow(1);
    /* 051 */     this.sagg_holder = new 
org.apache.spark.sql.catalyst.expressions.codegen.BufferHolder(sagg_result, 32);
    /* 052 */     this.sagg_rowWriter = new 
org.apache.spark.sql.catalyst.expressions.codegen.UnsafeRowWriter(sagg_holder, 
1);
    /* 053 */     sagg_result1 = new UnsafeRow(2);
    /* 054 */     this.sagg_holder1 = new 
org.apache.spark.sql.catalyst.expressions.codegen.BufferHolder(sagg_result1, 
64);
    /* 055 */     this.sagg_rowWriter1 = new 
org.apache.spark.sql.catalyst.expressions.codegen.UnsafeRowWriter(sagg_holder1, 
2);
    /* 056 */     wholestagecodegen_result = new UnsafeRow(2);
    /* 057 */     this.wholestagecodegen_holder = new 
org.apache.spark.sql.catalyst.expressions.codegen.BufferHolder(wholestagecodegen_result,
 64);
    /* 058 */     this.wholestagecodegen_rowWriter = new 
org.apache.spark.sql.catalyst.expressions.codegen.UnsafeRowWriter(wholestagecodegen_holder,
 2);
    /* 059 */   }
    /* 060 */
    /* 061 */   private void sort_addToSorter() throws java.io.IOException {
    /* 062 */     while (inputadapter_input.hasNext()) {
    /* 063 */       InternalRow inputadapter_row = (InternalRow) 
inputadapter_input.next();
    /* 064 */       sort_sorter.insertRow((UnsafeRow)inputadapter_row);
    /* 065 */       if (shouldStop()) return;
    /* 066 */     }
    /* 067 */
    /* 068 */   }
    /* 069 */
    /* 070 */   protected void processNext() throws java.io.IOException {
    /* 071 */     if (sort_needToSort) {
    /* 072 */       long sort_spillSizeBefore = 
sort_metrics.memoryBytesSpilled();
    /* 073 */       sort_addToSorter();
    /* 074 */       sort_sortedIter = sort_sorter.sort();
    /* 075 */       sort_sortTime.add(sort_sorter.getSortTimeNanos() / 1000000);
    /* 076 */       sort_peakMemory.add(sort_sorter.getPeakMemoryUsage());
    /* 077 */       sort_spillSize.add(sort_metrics.memoryBytesSpilled() - 
sort_spillSizeBefore);
    /* 078 */       
sort_metrics.incPeakExecutionMemory(sort_sorter.getPeakMemoryUsage());
    /* 079 */       sort_needToSort = false;
    /* 080 */     }
    /* 081 */
    /* 082 */     while (sort_sortedIter.hasNext()) {
    /* 083 */       UnsafeRow sort_outputRow = 
(UnsafeRow)sort_sortedIter.next();
    /* 084 */
    /* 085 */       boolean sort_isNull = sort_outputRow.isNullAt(0);
    /* 086 */       UTF8String sort_value = sort_isNull ? null : 
(sort_outputRow.getUTF8String(0));
    /* 087 */       boolean sort_isNull1 = sort_outputRow.isNullAt(1);
    /* 088 */       UTF8String sort_value1 = sort_isNull1 ? null : 
(sort_outputRow.getUTF8String(1));
    /* 089 */
    /* 090 */       // generate grouping key
    /* 091 */       sagg_holder.reset();
    /* 092 */
    /* 093 */       sagg_rowWriter.zeroOutNullBytes();
    /* 094 */
    /* 095 */       if (sort_isNull) {
    /* 096 */         sagg_rowWriter.setNullAt(0);
    /* 097 */       } else {
    /* 098 */         sagg_rowWriter.write(0, sort_value);
    /* 099 */       }
    /* 100 */       sagg_result.setTotalSize(sagg_holder.totalSize());
    /* 101 */
    /* 102 */       if (sagg_currentGroupingKey == null) {
    /* 103 */         sagg_currentGroupingKey = sagg_result.copy();
    /* 104 */         // init aggregation buffer vars
    /* 105 */         final UTF8String sagg_value = null;
    /* 106 */         sagg_bufIsNull = true;
    /* 107 */         sagg_bufValue = sagg_value;
    /* 108 */         // do aggregation
    /* 109 */         // common sub-expressions
    /* 110 */
    /* 111 */         // evaluate aggregate function
    /* 112 */         boolean sagg_isNull2 = sagg_bufIsNull;
    /* 113 */         UTF8String sagg_value2 = sagg_bufValue;
    /* 114 */
    /* 115 */         if (!sort_isNull1 && (sagg_isNull2 ||
    /* 116 */             (sort_value1.compare(sagg_value2)) > 0)) {
    /* 117 */           sagg_isNull2 = false;
    /* 118 */           sagg_value2 = sort_value1;
    /* 119 */         }
    /* 120 */         // update aggregation buffer
    /* 121 */         sagg_bufIsNull = sagg_isNull2;
    /* 122 */         if (sagg_bufValue != sagg_value2)
    /* 123 */         sagg_bufValue = sagg_value2 == null ? null : 
sagg_value2.clone();
    /* 124 */         continue;
    /* 125 */       } else {
    /* 126 */         if (sagg_currentGroupingKey.equals(sagg_result)) {
    /* 127 */           // do aggregation
    /* 128 */           // common sub-expressions
    /* 129 */
    /* 130 */           // evaluate aggregate function
    /* 131 */           boolean sagg_isNull2 = sagg_bufIsNull;
    /* 132 */           UTF8String sagg_value2 = sagg_bufValue;
    /* 133 */
    /* 134 */           if (!sort_isNull1 && (sagg_isNull2 ||
    /* 135 */               (sort_value1.compare(sagg_value2)) > 0)) {
    /* 136 */             sagg_isNull2 = false;
    /* 137 */             sagg_value2 = sort_value1;
    /* 138 */           }
    /* 139 */           // update aggregation buffer
    /* 140 */           sagg_bufIsNull = sagg_isNull2;
    /* 141 */           if (sagg_bufValue != sagg_value2)
    /* 142 */           sagg_bufValue = sagg_value2 == null ? null : 
sagg_value2.clone();
    /* 143 */           continue;
    /* 144 */         } else {
    /* 145 */           do {
    /* 146 */             sagg_numOutputRows.add(1);
    /* 147 */
    /* 148 */             boolean sagg_isNull5 = 
sagg_currentGroupingKey.isNullAt(0);
    /* 149 */             UTF8String sagg_value5 = sagg_isNull5 ? null : 
(sagg_currentGroupingKey.getUTF8String(0));
    /* 150 */
    /* 151 */             sagg_holder1.reset();
    /* 152 */
    /* 153 */             sagg_rowWriter1.zeroOutNullBytes();
    /* 154 */
    /* 155 */             if (sagg_isNull5) {
    /* 156 */               sagg_rowWriter1.setNullAt(0);
    /* 157 */             } else {
    /* 158 */               sagg_rowWriter1.write(0, sagg_value5);
    /* 159 */             }
    /* 160 */
    /* 161 */             if (sagg_bufIsNull) {
    /* 162 */               sagg_rowWriter1.setNullAt(1);
    /* 163 */             } else {
    /* 164 */               sagg_rowWriter1.write(1, sagg_bufValue);
    /* 165 */             }
    /* 166 */             sagg_result1.setTotalSize(sagg_holder1.totalSize());
    /* 167 */             append(sagg_result1);
    /* 168 */
    /* 169 */           } while (false);
    /* 170 */           // new grouping key
    /* 171 */           sagg_currentGroupingKey = sagg_result.copy();
    /* 172 */           final UTF8String sagg_value = null;
    /* 173 */           sagg_bufIsNull = true;
    /* 174 */           sagg_bufValue = sagg_value;
    /* 175 */           // common sub-expressions
    /* 176 */
    /* 177 */           // evaluate aggregate function
    /* 178 */           boolean sagg_isNull2 = sagg_bufIsNull;
    /* 179 */           UTF8String sagg_value2 = sagg_bufValue;
    /* 180 */
    /* 181 */           if (!sort_isNull1 && (sagg_isNull2 ||
    /* 182 */               (sort_value1.compare(sagg_value2)) > 0)) {
    /* 183 */             sagg_isNull2 = false;
    /* 184 */             sagg_value2 = sort_value1;
    /* 185 */           }
    /* 186 */           // update aggregation buffer
    /* 187 */           sagg_bufIsNull = sagg_isNull2;
    /* 188 */           if (sagg_bufValue != sagg_value2)
    /* 189 */           sagg_bufValue = sagg_value2 == null ? null : 
sagg_value2.clone();
    /* 190 */         }
    /* 191 */       }
    /* 192 */
    /* 193 */       if (shouldStop()) return;
    /* 194 */     }
    /* 195 */
    /* 196 */     while (sagg_lastAgg && sagg_currentGroupingKey != null) {
    /* 197 */       sagg_lastAgg = false;
    /* 198 */       sagg_numOutputRows.add(1);
    /* 199 */
    /* 200 */       boolean wholestagecodegen_isNull = 
sagg_currentGroupingKey.isNullAt(0);
    /* 201 */       UTF8String wholestagecodegen_value = 
wholestagecodegen_isNull ? null : (sagg_currentGroupingKey.getUTF8String(0));
    /* 202 */
    /* 203 */       wholestagecodegen_holder.reset();
    /* 204 */
    /* 205 */       wholestagecodegen_rowWriter.zeroOutNullBytes();
    /* 206 */
    /* 207 */       if (wholestagecodegen_isNull) {
    /* 208 */         wholestagecodegen_rowWriter.setNullAt(0);
    /* 209 */       } else {
    /* 210 */         wholestagecodegen_rowWriter.write(0, 
wholestagecodegen_value);
    /* 211 */       }
    /* 212 */
    /* 213 */       if (sagg_bufIsNull) {
    /* 214 */         wholestagecodegen_rowWriter.setNullAt(1);
    /* 215 */       } else {
    /* 216 */         wholestagecodegen_rowWriter.write(1, sagg_bufValue);
    /* 217 */       }
    /* 218 */       
wholestagecodegen_result.setTotalSize(wholestagecodegen_holder.totalSize());
    /* 219 */       append(wholestagecodegen_result);
    /* 220 */
    /* 221 */     }
    /* 222 */   }
    /* 223 */ }
    ```


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at [email protected] or file a JIRA ticket
with INFRA.
---

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to