You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by ha...@apache.org on 2013/06/03 23:29:46 UTC

svn commit: r1489186 - in /hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions: gen/ templates/

Author: hashutosh
Date: Mon Jun  3 21:29:45 2013
New Revision: 1489186

URL: http://svn.apache.org/r1489186
Log:
HIVE-4649 : Unit test failure in TestColumnScalarOperationVectorExpressionEvaluation (Jitendra Nath Pandey via Ashutosh Chauhan)

Modified:
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/DoubleColEqualDoubleScalar.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/DoubleColGreaterDoubleScalar.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/DoubleColGreaterEqualDoubleScalar.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/DoubleColLessDoubleScalar.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/DoubleColLessEqualDoubleScalar.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/DoubleColNotEqualDoubleScalar.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/LongColEqualDoubleScalar.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/LongColGreaterDoubleScalar.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/LongColGreaterEqualDoubleScalar.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/LongColLessDoubleScalar.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/LongColLessEqualDoubleScalar.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/LongColNotEqualDoubleScalar.java
    hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/templates/ColumnCompareScalar.txt

Modified: hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/DoubleColEqualDoubleScalar.java
URL: http://svn.apache.org/viewvc/hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/DoubleColEqualDoubleScalar.java?rev=1489186&r1=1489185&r2=1489186&view=diff
==============================================================================
--- hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/DoubleColEqualDoubleScalar.java (original)
+++ hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/DoubleColEqualDoubleScalar.java Mon Jun  3 21:29:45 2013
@@ -45,6 +45,7 @@ public class DoubleColEqualDoubleScalar 
     LongColumnVector outputColVector = (LongColumnVector) batch.cols[outputColumn];
     int[] sel = batch.selected;
     boolean[] nullPos = inputColVector.isNull;
+    boolean[] outNulls = outputColVector.isNull;
     int n = batch.size;
     double[] vector = inputColVector.vector;
     long[] outputVector = outputColVector.vector;
@@ -54,6 +55,8 @@ public class DoubleColEqualDoubleScalar 
       return;
     }
 
+    outputColVector.isRepeating = false;
+    outputColVector.noNulls = inputColVector.noNulls;
     if (inputColVector.noNulls) {
       if (inputColVector.isRepeating) {
         //All must be selected otherwise size would be zero
@@ -76,8 +79,9 @@ public class DoubleColEqualDoubleScalar 
         //Repeating property will not change.
         if (!nullPos[0]) {
           outputVector[0] = vector[0] == value ? 1 : 0;
+          outNulls[0] = false;
         } else {
-          outputVector[0] = 0;
+          outNulls[0] = true;
         }
         outputColVector.isRepeating = true;
       } else if (batch.selectedInUse) {
@@ -85,18 +89,18 @@ public class DoubleColEqualDoubleScalar 
           int i = sel[j];
           if (!nullPos[i]) {
             outputVector[i] = vector[i] == value ? 1 : 0;
+            outNulls[i] = false;
           } else {
-            //compare with null is false
-            outputVector[i] = 0;
+            //comparison with null is null
+            outNulls[i] = true;
           }
         }
       } else {
+        System.arraycopy(nullPos, 0, outNulls, 0, n);
         for(int i = 0; i != n; i++) {
           if (!nullPos[i]) {
             outputVector[i] = vector[i] == value ? 1 : 0;
-          } else {
-            outputVector[i] = 0;
-          }
+          } 
         }
       }
     }

Modified: hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/DoubleColGreaterDoubleScalar.java
URL: http://svn.apache.org/viewvc/hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/DoubleColGreaterDoubleScalar.java?rev=1489186&r1=1489185&r2=1489186&view=diff
==============================================================================
--- hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/DoubleColGreaterDoubleScalar.java (original)
+++ hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/DoubleColGreaterDoubleScalar.java Mon Jun  3 21:29:45 2013
@@ -45,6 +45,7 @@ public class DoubleColGreaterDoubleScala
     LongColumnVector outputColVector = (LongColumnVector) batch.cols[outputColumn];
     int[] sel = batch.selected;
     boolean[] nullPos = inputColVector.isNull;
+    boolean[] outNulls = outputColVector.isNull;
     int n = batch.size;
     double[] vector = inputColVector.vector;
     long[] outputVector = outputColVector.vector;
@@ -54,6 +55,8 @@ public class DoubleColGreaterDoubleScala
       return;
     }
 
+    outputColVector.isRepeating = false;
+    outputColVector.noNulls = inputColVector.noNulls;
     if (inputColVector.noNulls) {
       if (inputColVector.isRepeating) {
         //All must be selected otherwise size would be zero
@@ -76,8 +79,9 @@ public class DoubleColGreaterDoubleScala
         //Repeating property will not change.
         if (!nullPos[0]) {
           outputVector[0] = vector[0] > value ? 1 : 0;
+          outNulls[0] = false;
         } else {
-          outputVector[0] = 0;
+          outNulls[0] = true;
         }
         outputColVector.isRepeating = true;
       } else if (batch.selectedInUse) {
@@ -85,18 +89,18 @@ public class DoubleColGreaterDoubleScala
           int i = sel[j];
           if (!nullPos[i]) {
             outputVector[i] = vector[i] > value ? 1 : 0;
+            outNulls[i] = false;
           } else {
-            //compare with null is false
-            outputVector[i] = 0;
+            //comparison with null is null
+            outNulls[i] = true;
           }
         }
       } else {
+        System.arraycopy(nullPos, 0, outNulls, 0, n);
         for(int i = 0; i != n; i++) {
           if (!nullPos[i]) {
             outputVector[i] = vector[i] > value ? 1 : 0;
-          } else {
-            outputVector[i] = 0;
-          }
+          } 
         }
       }
     }

Modified: hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/DoubleColGreaterEqualDoubleScalar.java
URL: http://svn.apache.org/viewvc/hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/DoubleColGreaterEqualDoubleScalar.java?rev=1489186&r1=1489185&r2=1489186&view=diff
==============================================================================
--- hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/DoubleColGreaterEqualDoubleScalar.java (original)
+++ hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/DoubleColGreaterEqualDoubleScalar.java Mon Jun  3 21:29:45 2013
@@ -45,6 +45,7 @@ public class DoubleColGreaterEqualDouble
     LongColumnVector outputColVector = (LongColumnVector) batch.cols[outputColumn];
     int[] sel = batch.selected;
     boolean[] nullPos = inputColVector.isNull;
+    boolean[] outNulls = outputColVector.isNull;
     int n = batch.size;
     double[] vector = inputColVector.vector;
     long[] outputVector = outputColVector.vector;
@@ -54,6 +55,8 @@ public class DoubleColGreaterEqualDouble
       return;
     }
 
+    outputColVector.isRepeating = false;
+    outputColVector.noNulls = inputColVector.noNulls;
     if (inputColVector.noNulls) {
       if (inputColVector.isRepeating) {
         //All must be selected otherwise size would be zero
@@ -76,8 +79,9 @@ public class DoubleColGreaterEqualDouble
         //Repeating property will not change.
         if (!nullPos[0]) {
           outputVector[0] = vector[0] >= value ? 1 : 0;
+          outNulls[0] = false;
         } else {
-          outputVector[0] = 0;
+          outNulls[0] = true;
         }
         outputColVector.isRepeating = true;
       } else if (batch.selectedInUse) {
@@ -85,18 +89,18 @@ public class DoubleColGreaterEqualDouble
           int i = sel[j];
           if (!nullPos[i]) {
             outputVector[i] = vector[i] >= value ? 1 : 0;
+            outNulls[i] = false;
           } else {
-            //compare with null is false
-            outputVector[i] = 0;
+            //comparison with null is null
+            outNulls[i] = true;
           }
         }
       } else {
+        System.arraycopy(nullPos, 0, outNulls, 0, n);
         for(int i = 0; i != n; i++) {
           if (!nullPos[i]) {
             outputVector[i] = vector[i] >= value ? 1 : 0;
-          } else {
-            outputVector[i] = 0;
-          }
+          } 
         }
       }
     }

Modified: hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/DoubleColLessDoubleScalar.java
URL: http://svn.apache.org/viewvc/hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/DoubleColLessDoubleScalar.java?rev=1489186&r1=1489185&r2=1489186&view=diff
==============================================================================
--- hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/DoubleColLessDoubleScalar.java (original)
+++ hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/DoubleColLessDoubleScalar.java Mon Jun  3 21:29:45 2013
@@ -45,6 +45,7 @@ public class DoubleColLessDoubleScalar e
     LongColumnVector outputColVector = (LongColumnVector) batch.cols[outputColumn];
     int[] sel = batch.selected;
     boolean[] nullPos = inputColVector.isNull;
+    boolean[] outNulls = outputColVector.isNull;
     int n = batch.size;
     double[] vector = inputColVector.vector;
     long[] outputVector = outputColVector.vector;
@@ -54,6 +55,8 @@ public class DoubleColLessDoubleScalar e
       return;
     }
 
+    outputColVector.isRepeating = false;
+    outputColVector.noNulls = inputColVector.noNulls;
     if (inputColVector.noNulls) {
       if (inputColVector.isRepeating) {
         //All must be selected otherwise size would be zero
@@ -76,8 +79,9 @@ public class DoubleColLessDoubleScalar e
         //Repeating property will not change.
         if (!nullPos[0]) {
           outputVector[0] = vector[0] < value ? 1 : 0;
+          outNulls[0] = false;
         } else {
-          outputVector[0] = 0;
+          outNulls[0] = true;
         }
         outputColVector.isRepeating = true;
       } else if (batch.selectedInUse) {
@@ -85,18 +89,18 @@ public class DoubleColLessDoubleScalar e
           int i = sel[j];
           if (!nullPos[i]) {
             outputVector[i] = vector[i] < value ? 1 : 0;
+            outNulls[i] = false;
           } else {
-            //compare with null is false
-            outputVector[i] = 0;
+            //comparison with null is null
+            outNulls[i] = true;
           }
         }
       } else {
+        System.arraycopy(nullPos, 0, outNulls, 0, n);
         for(int i = 0; i != n; i++) {
           if (!nullPos[i]) {
             outputVector[i] = vector[i] < value ? 1 : 0;
-          } else {
-            outputVector[i] = 0;
-          }
+          } 
         }
       }
     }

Modified: hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/DoubleColLessEqualDoubleScalar.java
URL: http://svn.apache.org/viewvc/hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/DoubleColLessEqualDoubleScalar.java?rev=1489186&r1=1489185&r2=1489186&view=diff
==============================================================================
--- hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/DoubleColLessEqualDoubleScalar.java (original)
+++ hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/DoubleColLessEqualDoubleScalar.java Mon Jun  3 21:29:45 2013
@@ -45,6 +45,7 @@ public class DoubleColLessEqualDoubleSca
     LongColumnVector outputColVector = (LongColumnVector) batch.cols[outputColumn];
     int[] sel = batch.selected;
     boolean[] nullPos = inputColVector.isNull;
+    boolean[] outNulls = outputColVector.isNull;
     int n = batch.size;
     double[] vector = inputColVector.vector;
     long[] outputVector = outputColVector.vector;
@@ -54,6 +55,8 @@ public class DoubleColLessEqualDoubleSca
       return;
     }
 
+    outputColVector.isRepeating = false;
+    outputColVector.noNulls = inputColVector.noNulls;
     if (inputColVector.noNulls) {
       if (inputColVector.isRepeating) {
         //All must be selected otherwise size would be zero
@@ -76,8 +79,9 @@ public class DoubleColLessEqualDoubleSca
         //Repeating property will not change.
         if (!nullPos[0]) {
           outputVector[0] = vector[0] <= value ? 1 : 0;
+          outNulls[0] = false;
         } else {
-          outputVector[0] = 0;
+          outNulls[0] = true;
         }
         outputColVector.isRepeating = true;
       } else if (batch.selectedInUse) {
@@ -85,18 +89,18 @@ public class DoubleColLessEqualDoubleSca
           int i = sel[j];
           if (!nullPos[i]) {
             outputVector[i] = vector[i] <= value ? 1 : 0;
+            outNulls[i] = false;
           } else {
-            //compare with null is false
-            outputVector[i] = 0;
+            //comparison with null is null
+            outNulls[i] = true;
           }
         }
       } else {
+        System.arraycopy(nullPos, 0, outNulls, 0, n);
         for(int i = 0; i != n; i++) {
           if (!nullPos[i]) {
             outputVector[i] = vector[i] <= value ? 1 : 0;
-          } else {
-            outputVector[i] = 0;
-          }
+          } 
         }
       }
     }

Modified: hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/DoubleColNotEqualDoubleScalar.java
URL: http://svn.apache.org/viewvc/hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/DoubleColNotEqualDoubleScalar.java?rev=1489186&r1=1489185&r2=1489186&view=diff
==============================================================================
--- hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/DoubleColNotEqualDoubleScalar.java (original)
+++ hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/DoubleColNotEqualDoubleScalar.java Mon Jun  3 21:29:45 2013
@@ -45,6 +45,7 @@ public class DoubleColNotEqualDoubleScal
     LongColumnVector outputColVector = (LongColumnVector) batch.cols[outputColumn];
     int[] sel = batch.selected;
     boolean[] nullPos = inputColVector.isNull;
+    boolean[] outNulls = outputColVector.isNull;
     int n = batch.size;
     double[] vector = inputColVector.vector;
     long[] outputVector = outputColVector.vector;
@@ -54,6 +55,8 @@ public class DoubleColNotEqualDoubleScal
       return;
     }
 
+    outputColVector.isRepeating = false;
+    outputColVector.noNulls = inputColVector.noNulls;
     if (inputColVector.noNulls) {
       if (inputColVector.isRepeating) {
         //All must be selected otherwise size would be zero
@@ -76,8 +79,9 @@ public class DoubleColNotEqualDoubleScal
         //Repeating property will not change.
         if (!nullPos[0]) {
           outputVector[0] = vector[0] != value ? 1 : 0;
+          outNulls[0] = false;
         } else {
-          outputVector[0] = 0;
+          outNulls[0] = true;
         }
         outputColVector.isRepeating = true;
       } else if (batch.selectedInUse) {
@@ -85,18 +89,18 @@ public class DoubleColNotEqualDoubleScal
           int i = sel[j];
           if (!nullPos[i]) {
             outputVector[i] = vector[i] != value ? 1 : 0;
+            outNulls[i] = false;
           } else {
-            //compare with null is false
-            outputVector[i] = 0;
+            //comparison with null is null
+            outNulls[i] = true;
           }
         }
       } else {
+        System.arraycopy(nullPos, 0, outNulls, 0, n);
         for(int i = 0; i != n; i++) {
           if (!nullPos[i]) {
             outputVector[i] = vector[i] != value ? 1 : 0;
-          } else {
-            outputVector[i] = 0;
-          }
+          } 
         }
       }
     }

Modified: hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/LongColEqualDoubleScalar.java
URL: http://svn.apache.org/viewvc/hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/LongColEqualDoubleScalar.java?rev=1489186&r1=1489185&r2=1489186&view=diff
==============================================================================
--- hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/LongColEqualDoubleScalar.java (original)
+++ hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/LongColEqualDoubleScalar.java Mon Jun  3 21:29:45 2013
@@ -45,6 +45,7 @@ public class LongColEqualDoubleScalar ex
     LongColumnVector outputColVector = (LongColumnVector) batch.cols[outputColumn];
     int[] sel = batch.selected;
     boolean[] nullPos = inputColVector.isNull;
+    boolean[] outNulls = outputColVector.isNull;
     int n = batch.size;
     long[] vector = inputColVector.vector;
     long[] outputVector = outputColVector.vector;
@@ -54,6 +55,8 @@ public class LongColEqualDoubleScalar ex
       return;
     }
 
+    outputColVector.isRepeating = false;
+    outputColVector.noNulls = inputColVector.noNulls;
     if (inputColVector.noNulls) {
       if (inputColVector.isRepeating) {
         //All must be selected otherwise size would be zero
@@ -76,8 +79,9 @@ public class LongColEqualDoubleScalar ex
         //Repeating property will not change.
         if (!nullPos[0]) {
           outputVector[0] = vector[0] == value ? 1 : 0;
+          outNulls[0] = false;
         } else {
-          outputVector[0] = 0;
+          outNulls[0] = true;
         }
         outputColVector.isRepeating = true;
       } else if (batch.selectedInUse) {
@@ -85,18 +89,18 @@ public class LongColEqualDoubleScalar ex
           int i = sel[j];
           if (!nullPos[i]) {
             outputVector[i] = vector[i] == value ? 1 : 0;
+            outNulls[i] = false;
           } else {
-            //compare with null is false
-            outputVector[i] = 0;
+            //comparison with null is null
+            outNulls[i] = true;
           }
         }
       } else {
+        System.arraycopy(nullPos, 0, outNulls, 0, n);
         for(int i = 0; i != n; i++) {
           if (!nullPos[i]) {
             outputVector[i] = vector[i] == value ? 1 : 0;
-          } else {
-            outputVector[i] = 0;
-          }
+          } 
         }
       }
     }

Modified: hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/LongColGreaterDoubleScalar.java
URL: http://svn.apache.org/viewvc/hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/LongColGreaterDoubleScalar.java?rev=1489186&r1=1489185&r2=1489186&view=diff
==============================================================================
--- hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/LongColGreaterDoubleScalar.java (original)
+++ hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/LongColGreaterDoubleScalar.java Mon Jun  3 21:29:45 2013
@@ -45,6 +45,7 @@ public class LongColGreaterDoubleScalar 
     LongColumnVector outputColVector = (LongColumnVector) batch.cols[outputColumn];
     int[] sel = batch.selected;
     boolean[] nullPos = inputColVector.isNull;
+    boolean[] outNulls = outputColVector.isNull;
     int n = batch.size;
     long[] vector = inputColVector.vector;
     long[] outputVector = outputColVector.vector;
@@ -54,6 +55,8 @@ public class LongColGreaterDoubleScalar 
       return;
     }
 
+    outputColVector.isRepeating = false;
+    outputColVector.noNulls = inputColVector.noNulls;
     if (inputColVector.noNulls) {
       if (inputColVector.isRepeating) {
         //All must be selected otherwise size would be zero
@@ -76,8 +79,9 @@ public class LongColGreaterDoubleScalar 
         //Repeating property will not change.
         if (!nullPos[0]) {
           outputVector[0] = vector[0] > value ? 1 : 0;
+          outNulls[0] = false;
         } else {
-          outputVector[0] = 0;
+          outNulls[0] = true;
         }
         outputColVector.isRepeating = true;
       } else if (batch.selectedInUse) {
@@ -85,18 +89,18 @@ public class LongColGreaterDoubleScalar 
           int i = sel[j];
           if (!nullPos[i]) {
             outputVector[i] = vector[i] > value ? 1 : 0;
+            outNulls[i] = false;
           } else {
-            //compare with null is false
-            outputVector[i] = 0;
+            //comparison with null is null
+            outNulls[i] = true;
           }
         }
       } else {
+        System.arraycopy(nullPos, 0, outNulls, 0, n);
         for(int i = 0; i != n; i++) {
           if (!nullPos[i]) {
             outputVector[i] = vector[i] > value ? 1 : 0;
-          } else {
-            outputVector[i] = 0;
-          }
+          } 
         }
       }
     }

Modified: hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/LongColGreaterEqualDoubleScalar.java
URL: http://svn.apache.org/viewvc/hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/LongColGreaterEqualDoubleScalar.java?rev=1489186&r1=1489185&r2=1489186&view=diff
==============================================================================
--- hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/LongColGreaterEqualDoubleScalar.java (original)
+++ hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/LongColGreaterEqualDoubleScalar.java Mon Jun  3 21:29:45 2013
@@ -45,6 +45,7 @@ public class LongColGreaterEqualDoubleSc
     LongColumnVector outputColVector = (LongColumnVector) batch.cols[outputColumn];
     int[] sel = batch.selected;
     boolean[] nullPos = inputColVector.isNull;
+    boolean[] outNulls = outputColVector.isNull;
     int n = batch.size;
     long[] vector = inputColVector.vector;
     long[] outputVector = outputColVector.vector;
@@ -54,6 +55,8 @@ public class LongColGreaterEqualDoubleSc
       return;
     }
 
+    outputColVector.isRepeating = false;
+    outputColVector.noNulls = inputColVector.noNulls;
     if (inputColVector.noNulls) {
       if (inputColVector.isRepeating) {
         //All must be selected otherwise size would be zero
@@ -76,8 +79,9 @@ public class LongColGreaterEqualDoubleSc
         //Repeating property will not change.
         if (!nullPos[0]) {
           outputVector[0] = vector[0] >= value ? 1 : 0;
+          outNulls[0] = false;
         } else {
-          outputVector[0] = 0;
+          outNulls[0] = true;
         }
         outputColVector.isRepeating = true;
       } else if (batch.selectedInUse) {
@@ -85,18 +89,18 @@ public class LongColGreaterEqualDoubleSc
           int i = sel[j];
           if (!nullPos[i]) {
             outputVector[i] = vector[i] >= value ? 1 : 0;
+            outNulls[i] = false;
           } else {
-            //compare with null is false
-            outputVector[i] = 0;
+            //comparison with null is null
+            outNulls[i] = true;
           }
         }
       } else {
+        System.arraycopy(nullPos, 0, outNulls, 0, n);
         for(int i = 0; i != n; i++) {
           if (!nullPos[i]) {
             outputVector[i] = vector[i] >= value ? 1 : 0;
-          } else {
-            outputVector[i] = 0;
-          }
+          } 
         }
       }
     }

Modified: hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/LongColLessDoubleScalar.java
URL: http://svn.apache.org/viewvc/hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/LongColLessDoubleScalar.java?rev=1489186&r1=1489185&r2=1489186&view=diff
==============================================================================
--- hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/LongColLessDoubleScalar.java (original)
+++ hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/LongColLessDoubleScalar.java Mon Jun  3 21:29:45 2013
@@ -45,6 +45,7 @@ public class LongColLessDoubleScalar ext
     LongColumnVector outputColVector = (LongColumnVector) batch.cols[outputColumn];
     int[] sel = batch.selected;
     boolean[] nullPos = inputColVector.isNull;
+    boolean[] outNulls = outputColVector.isNull;
     int n = batch.size;
     long[] vector = inputColVector.vector;
     long[] outputVector = outputColVector.vector;
@@ -54,6 +55,8 @@ public class LongColLessDoubleScalar ext
       return;
     }
 
+    outputColVector.isRepeating = false;
+    outputColVector.noNulls = inputColVector.noNulls;
     if (inputColVector.noNulls) {
       if (inputColVector.isRepeating) {
         //All must be selected otherwise size would be zero
@@ -76,8 +79,9 @@ public class LongColLessDoubleScalar ext
         //Repeating property will not change.
         if (!nullPos[0]) {
           outputVector[0] = vector[0] < value ? 1 : 0;
+          outNulls[0] = false;
         } else {
-          outputVector[0] = 0;
+          outNulls[0] = true;
         }
         outputColVector.isRepeating = true;
       } else if (batch.selectedInUse) {
@@ -85,18 +89,18 @@ public class LongColLessDoubleScalar ext
           int i = sel[j];
           if (!nullPos[i]) {
             outputVector[i] = vector[i] < value ? 1 : 0;
+            outNulls[i] = false;
           } else {
-            //compare with null is false
-            outputVector[i] = 0;
+            //comparison with null is null
+            outNulls[i] = true;
           }
         }
       } else {
+        System.arraycopy(nullPos, 0, outNulls, 0, n);
         for(int i = 0; i != n; i++) {
           if (!nullPos[i]) {
             outputVector[i] = vector[i] < value ? 1 : 0;
-          } else {
-            outputVector[i] = 0;
-          }
+          } 
         }
       }
     }

Modified: hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/LongColLessEqualDoubleScalar.java
URL: http://svn.apache.org/viewvc/hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/LongColLessEqualDoubleScalar.java?rev=1489186&r1=1489185&r2=1489186&view=diff
==============================================================================
--- hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/LongColLessEqualDoubleScalar.java (original)
+++ hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/LongColLessEqualDoubleScalar.java Mon Jun  3 21:29:45 2013
@@ -45,6 +45,7 @@ public class LongColLessEqualDoubleScala
     LongColumnVector outputColVector = (LongColumnVector) batch.cols[outputColumn];
     int[] sel = batch.selected;
     boolean[] nullPos = inputColVector.isNull;
+    boolean[] outNulls = outputColVector.isNull;
     int n = batch.size;
     long[] vector = inputColVector.vector;
     long[] outputVector = outputColVector.vector;
@@ -54,6 +55,8 @@ public class LongColLessEqualDoubleScala
       return;
     }
 
+    outputColVector.isRepeating = false;
+    outputColVector.noNulls = inputColVector.noNulls;
     if (inputColVector.noNulls) {
       if (inputColVector.isRepeating) {
         //All must be selected otherwise size would be zero
@@ -76,8 +79,9 @@ public class LongColLessEqualDoubleScala
         //Repeating property will not change.
         if (!nullPos[0]) {
           outputVector[0] = vector[0] <= value ? 1 : 0;
+          outNulls[0] = false;
         } else {
-          outputVector[0] = 0;
+          outNulls[0] = true;
         }
         outputColVector.isRepeating = true;
       } else if (batch.selectedInUse) {
@@ -85,18 +89,18 @@ public class LongColLessEqualDoubleScala
           int i = sel[j];
           if (!nullPos[i]) {
             outputVector[i] = vector[i] <= value ? 1 : 0;
+            outNulls[i] = false;
           } else {
-            //compare with null is false
-            outputVector[i] = 0;
+            //comparison with null is null
+            outNulls[i] = true;
           }
         }
       } else {
+        System.arraycopy(nullPos, 0, outNulls, 0, n);
         for(int i = 0; i != n; i++) {
           if (!nullPos[i]) {
             outputVector[i] = vector[i] <= value ? 1 : 0;
-          } else {
-            outputVector[i] = 0;
-          }
+          } 
         }
       }
     }

Modified: hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/LongColNotEqualDoubleScalar.java
URL: http://svn.apache.org/viewvc/hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/LongColNotEqualDoubleScalar.java?rev=1489186&r1=1489185&r2=1489186&view=diff
==============================================================================
--- hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/LongColNotEqualDoubleScalar.java (original)
+++ hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/LongColNotEqualDoubleScalar.java Mon Jun  3 21:29:45 2013
@@ -45,6 +45,7 @@ public class LongColNotEqualDoubleScalar
     LongColumnVector outputColVector = (LongColumnVector) batch.cols[outputColumn];
     int[] sel = batch.selected;
     boolean[] nullPos = inputColVector.isNull;
+    boolean[] outNulls = outputColVector.isNull;
     int n = batch.size;
     long[] vector = inputColVector.vector;
     long[] outputVector = outputColVector.vector;
@@ -54,6 +55,8 @@ public class LongColNotEqualDoubleScalar
       return;
     }
 
+    outputColVector.isRepeating = false;
+    outputColVector.noNulls = inputColVector.noNulls;
     if (inputColVector.noNulls) {
       if (inputColVector.isRepeating) {
         //All must be selected otherwise size would be zero
@@ -76,8 +79,9 @@ public class LongColNotEqualDoubleScalar
         //Repeating property will not change.
         if (!nullPos[0]) {
           outputVector[0] = vector[0] != value ? 1 : 0;
+          outNulls[0] = false;
         } else {
-          outputVector[0] = 0;
+          outNulls[0] = true;
         }
         outputColVector.isRepeating = true;
       } else if (batch.selectedInUse) {
@@ -85,18 +89,18 @@ public class LongColNotEqualDoubleScalar
           int i = sel[j];
           if (!nullPos[i]) {
             outputVector[i] = vector[i] != value ? 1 : 0;
+            outNulls[i] = false;
           } else {
-            //compare with null is false
-            outputVector[i] = 0;
+            //comparison with null is null
+            outNulls[i] = true;
           }
         }
       } else {
+        System.arraycopy(nullPos, 0, outNulls, 0, n);
         for(int i = 0; i != n; i++) {
           if (!nullPos[i]) {
             outputVector[i] = vector[i] != value ? 1 : 0;
-          } else {
-            outputVector[i] = 0;
-          }
+          } 
         }
       }
     }

Modified: hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/templates/ColumnCompareScalar.txt
URL: http://svn.apache.org/viewvc/hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/templates/ColumnCompareScalar.txt?rev=1489186&r1=1489185&r2=1489186&view=diff
==============================================================================
--- hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/templates/ColumnCompareScalar.txt (original)
+++ hive/branches/vectorization/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/templates/ColumnCompareScalar.txt Mon Jun  3 21:29:45 2013
@@ -45,6 +45,7 @@ public class <ClassName> extends VectorE
     <OutputColumnVectorType> outputColVector = (<OutputColumnVectorType>) batch.cols[outputColumn];
     int[] sel = batch.selected;
     boolean[] nullPos = inputColVector.isNull;
+    boolean[] outNulls = outputColVector.isNull;
     int n = batch.size;
     <OperandType1>[] vector = inputColVector.vector;
     <ReturnType>[] outputVector = outputColVector.vector;
@@ -54,6 +55,8 @@ public class <ClassName> extends VectorE
       return;
     }
 
+    outputColVector.isRepeating = false;
+    outputColVector.noNulls = inputColVector.noNulls;
     if (inputColVector.noNulls) {
       if (inputColVector.isRepeating) {
         //All must be selected otherwise size would be zero
@@ -76,8 +79,9 @@ public class <ClassName> extends VectorE
         //Repeating property will not change.
         if (!nullPos[0]) {
           outputVector[0] = vector[0] <OperatorSymbol> value ? 1 : 0;
+          outNulls[0] = false;
         } else {
-          outputVector[0] = 0;
+          outNulls[0] = true;
         }
         outputColVector.isRepeating = true;
       } else if (batch.selectedInUse) {
@@ -85,18 +89,18 @@ public class <ClassName> extends VectorE
           int i = sel[j];
           if (!nullPos[i]) {
             outputVector[i] = vector[i] <OperatorSymbol> value ? 1 : 0;
+            outNulls[i] = false;
           } else {
-            //compare with null is false
-            outputVector[i] = 0;
+            //comparison with null is null
+            outNulls[i] = true;
           }
         }
       } else {
+        System.arraycopy(nullPos, 0, outNulls, 0, n);
         for(int i = 0; i != n; i++) {
           if (!nullPos[i]) {
             outputVector[i] = vector[i] <OperatorSymbol> value ? 1 : 0;
-          } else {
-            outputVector[i] = 0;
-          }
+          } 
         }
       }
     }