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]