Github user davies commented on the pull request:

    https://github.com/apache/spark/pull/10944#issuecomment-175895315
  
    Here is the generated code for `sqlContext.range(values).filter("(id & 1) = 
1").count()`
    
    ```
    /* 001 */
    /* 002 */ public Object generate(Object[] references) {
    /* 003 */   return new GeneratedIterator(references);
    /* 004 */ }
    /* 005 */
    /* 006 */ class GeneratedIterator extends 
org.apache.spark.sql.execution.BufferedRowIterator {
    /* 007 */
    /* 008 */   private Object[] references;
    /* 009 */   private boolean TungstenAggregate_initAgg0;
    /* 010 */   private boolean TungstenAggregate_bufIsNull1;
    /* 011 */   private long TungstenAggregate_bufValue2;
    /* 012 */   private boolean Range_initRange6;
    /* 013 */   private long Range_partitionEnd7;
    /* 014 */   private long Range_number8;
    /* 015 */   private boolean Range_overflow9;
    /* 016 */   private UnsafeRow TungstenAggregate_result29;
    /* 017 */   private 
org.apache.spark.sql.catalyst.expressions.codegen.BufferHolder 
TungstenAggregate_holder30;
    /* 018 */   private 
org.apache.spark.sql.catalyst.expressions.codegen.UnsafeRowWriter 
TungstenAggregate_rowWriter31;
    /* 019 */
    /* 020 */   private void initRange(int idx) {
    /* 021 */     java.math.BigInteger index = 
java.math.BigInteger.valueOf(idx);
    /* 022 */     java.math.BigInteger numSlice = 
java.math.BigInteger.valueOf(1L);
    /* 023 */     java.math.BigInteger numElement = 
java.math.BigInteger.valueOf(209715200L);
    /* 024 */     java.math.BigInteger step = java.math.BigInteger.valueOf(1L);
    /* 025 */     java.math.BigInteger start = java.math.BigInteger.valueOf(0L);
    /* 026 */
    /* 027 */     java.math.BigInteger st = 
index.multiply(numElement).divide(numSlice).multiply(step).add(start);
    /* 028 */     if 
(st.compareTo(java.math.BigInteger.valueOf(Long.MAX_VALUE)) > 0) {
    /* 029 */       Range_number8 = Long.MAX_VALUE;
    /* 030 */     } else if 
(st.compareTo(java.math.BigInteger.valueOf(Long.MIN_VALUE)) < 0) {
    /* 031 */       Range_number8 = Long.MIN_VALUE;
    /* 032 */     } else {
    /* 033 */       Range_number8 = st.longValue();
    /* 034 */     }
    /* 035 */
    /* 036 */     java.math.BigInteger end = 
index.add(java.math.BigInteger.ONE).multiply(numElement).divide(numSlice)
    /* 037 */     .multiply(step).add(start);
    /* 038 */     if 
(end.compareTo(java.math.BigInteger.valueOf(Long.MAX_VALUE)) > 0) {
    /* 039 */       Range_partitionEnd7 = Long.MAX_VALUE;
    /* 040 */     } else if 
(end.compareTo(java.math.BigInteger.valueOf(Long.MIN_VALUE)) < 0) {
    /* 041 */       Range_partitionEnd7 = Long.MIN_VALUE;
    /* 042 */     } else {
    /* 043 */       Range_partitionEnd7 = end.longValue();
    /* 044 */     }
    /* 045 */   }
    /* 046 */
    /* 047 */
    /* 048 */   private void TungstenAggregate_doAgg5() {
    /* 049 */     // initialize aggregation buffer
    /* 050 */     /* 0 */
    /* 051 */
    /* 052 */     TungstenAggregate_bufIsNull1 = false;
    /* 053 */     TungstenAggregate_bufValue2 = 0L;
    /* 054 */
    /* 055 */
    /* 056 */
    /* 057 */     // initialize Range
    /* 058 */     if (!Range_initRange6) {
    /* 059 */       Range_initRange6 = true;
    /* 060 */       if (input.hasNext()) {
    /* 061 */         initRange(((InternalRow) input.next()).getInt(0));
    /* 062 */       } else {
    /* 063 */         return;
    /* 064 */       }
    /* 065 */     }
    /* 066 */
    /* 067 */     while (!Range_overflow9 && Range_number8 < 
Range_partitionEnd7) {
    /* 068 */       long Range_value10 = Range_number8;
    /* 069 */       Range_number8 += 1L;
    /* 070 */       if (Range_number8 < Range_value10 ^ 1L < 0) {
    /* 071 */         Range_overflow9 = true;
    /* 072 */       }
    /* 073 */
    /* 074 */       /* ((input[0, bigint] & 1) = 1) */
    /* 075 */       /* (input[0, bigint] & 1) */
    /* 076 */       /* input[0, bigint] */
    /* 077 */
    /* 078 */       /* 1 */
    /* 079 */
    /* 080 */       long Filter_value14 = -1L;
    /* 081 */       Filter_value14 = Range_value10 & 1L;
    /* 082 */       /* 1 */
    /* 083 */
    /* 084 */       boolean Filter_value12 = false;
    /* 085 */       Filter_value12 = Filter_value14 == 1L;
    /* 086 */       if (!false && Filter_value12) {
    /* 087 */
    /* 088 */
    /* 089 */
    /* 090 */
    /* 091 */         // do aggregate and update aggregation buffer
    /* 092 */
    /* 093 */         /* (input[0, bigint] + 1) */
    /* 094 */         /* input[0, bigint] */
    /* 095 */
    /* 096 */         /* 1 */
    /* 097 */
    /* 098 */         long TungstenAggregate_value22 = -1L;
    /* 099 */         TungstenAggregate_value22 = TungstenAggregate_bufValue2 + 
1L;
    /* 100 */         TungstenAggregate_bufIsNull1 = false;
    /* 101 */         TungstenAggregate_bufValue2 = TungstenAggregate_value22;
    /* 102 */
    /* 103 */
    /* 104 */
    /* 105 */       }
    /* 106 */
    /* 107 */     }
    /* 108 */
    /* 109 */   }
    /* 110 */
    /* 111 */
    /* 112 */   public GeneratedIterator(Object[] references) {
    /* 113 */     this.references = references;
    /* 114 */     TungstenAggregate_initAgg0 = false;
    /* 115 */
    /* 116 */
    /* 117 */     Range_initRange6 = false;
    /* 118 */     Range_partitionEnd7 = 0L;
    /* 119 */     Range_number8 = 0L;
    /* 120 */     Range_overflow9 = false;
    /* 121 */     TungstenAggregate_result29 = new UnsafeRow(1);
    /* 122 */     this.TungstenAggregate_holder30 = new 
org.apache.spark.sql.catalyst.expressions.codegen.BufferHolder(TungstenAggregate_result29,
 0);
    /* 123 */     this.TungstenAggregate_rowWriter31 = new 
org.apache.spark.sql.catalyst.expressions.codegen.UnsafeRowWriter(TungstenAggregate_holder30,
 1);
    /* 124 */   }
    /* 125 */
    /* 126 */   protected void processNext() throws java.io.IOException {
    /* 127 */
    /* 128 */     if (!TungstenAggregate_initAgg0) {
    /* 129 */       TungstenAggregate_initAgg0 = true;
    /* 130 */       TungstenAggregate_doAgg5();
    /* 131 */
    /* 132 */       // output the result
    /* 133 */
    /* 134 */
    /* 135 */
    /* 136 */       TungstenAggregate_rowWriter31.zeroOutNullBytes();
    /* 137 */
    /* 138 */       /* input[0, bigint] */
    /* 139 */
    /* 140 */       if (TungstenAggregate_bufIsNull1) {
    /* 141 */         TungstenAggregate_rowWriter31.setNullAt(0);
    /* 142 */       } else {
    /* 143 */         TungstenAggregate_rowWriter31.write(0, 
TungstenAggregate_bufValue2);
    /* 144 */       }
    /* 145 */       currentRow = TungstenAggregate_result29;
    /* 146 */       return;
    /* 147 */
    /* 148 */     }
    /* 149 */
    /* 150 */   }
    /* 151 */ }
    /* 152 */
    ```


---
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 infrastruct...@apache.org or file a JIRA ticket
with INFRA.
---

---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscr...@spark.apache.org
For additional commands, e-mail: reviews-h...@spark.apache.org

Reply via email to