diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/DoubleColEqualDoubleScalar.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/DoubleColEqualDoubleScalar.java index 1d82a79..6b093c1 100644 --- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/DoubleColEqualDoubleScalar.java +++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/DoubleColEqualDoubleScalar.java @@ -45,6 +45,7 @@ public void evaluate(VectorizedRowBatch batch) { 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 void evaluate(VectorizedRowBatch batch) { 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 void evaluate(VectorizedRowBatch batch) { //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 void evaluate(VectorizedRowBatch batch) { 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; - } + } } } } diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/DoubleColGreaterDoubleScalar.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/DoubleColGreaterDoubleScalar.java index 2f2a6d4..fe0c641 100644 --- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/DoubleColGreaterDoubleScalar.java +++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/DoubleColGreaterDoubleScalar.java @@ -45,6 +45,7 @@ public void evaluate(VectorizedRowBatch batch) { 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 void evaluate(VectorizedRowBatch batch) { 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 void evaluate(VectorizedRowBatch batch) { //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 void evaluate(VectorizedRowBatch batch) { 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; - } + } } } } diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/DoubleColGreaterEqualDoubleScalar.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/DoubleColGreaterEqualDoubleScalar.java index 45a3fe0..165582c 100644 --- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/DoubleColGreaterEqualDoubleScalar.java +++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/DoubleColGreaterEqualDoubleScalar.java @@ -45,6 +45,7 @@ public void evaluate(VectorizedRowBatch batch) { 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 void evaluate(VectorizedRowBatch batch) { 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 void evaluate(VectorizedRowBatch batch) { //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 void evaluate(VectorizedRowBatch batch) { 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; - } + } } } } diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/DoubleColLessDoubleScalar.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/DoubleColLessDoubleScalar.java index 5ddd137..46177ae 100644 --- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/DoubleColLessDoubleScalar.java +++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/DoubleColLessDoubleScalar.java @@ -45,6 +45,7 @@ public void evaluate(VectorizedRowBatch batch) { 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 void evaluate(VectorizedRowBatch batch) { 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 void evaluate(VectorizedRowBatch batch) { //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 void evaluate(VectorizedRowBatch batch) { 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; - } + } } } } diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/DoubleColLessEqualDoubleScalar.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/DoubleColLessEqualDoubleScalar.java index 31fb2d2..1d5909e 100644 --- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/DoubleColLessEqualDoubleScalar.java +++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/DoubleColLessEqualDoubleScalar.java @@ -45,6 +45,7 @@ public void evaluate(VectorizedRowBatch batch) { 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 void evaluate(VectorizedRowBatch batch) { 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 void evaluate(VectorizedRowBatch batch) { //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 void evaluate(VectorizedRowBatch batch) { 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; - } + } } } } diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/DoubleColNotEqualDoubleScalar.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/DoubleColNotEqualDoubleScalar.java index 6aa9580..5a4eed5 100644 --- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/DoubleColNotEqualDoubleScalar.java +++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/DoubleColNotEqualDoubleScalar.java @@ -45,6 +45,7 @@ public void evaluate(VectorizedRowBatch batch) { 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 void evaluate(VectorizedRowBatch batch) { 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 void evaluate(VectorizedRowBatch batch) { //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 void evaluate(VectorizedRowBatch batch) { 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; - } + } } } } diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/LongColEqualDoubleScalar.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/LongColEqualDoubleScalar.java index 057e73f..f391d76 100644 --- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/LongColEqualDoubleScalar.java +++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/LongColEqualDoubleScalar.java @@ -45,6 +45,7 @@ public void evaluate(VectorizedRowBatch batch) { 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 void evaluate(VectorizedRowBatch batch) { 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 void evaluate(VectorizedRowBatch batch) { //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 void evaluate(VectorizedRowBatch batch) { 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; - } + } } } } diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/LongColGreaterDoubleScalar.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/LongColGreaterDoubleScalar.java index 7e93c4b..86c06e6 100644 --- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/LongColGreaterDoubleScalar.java +++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/LongColGreaterDoubleScalar.java @@ -45,6 +45,7 @@ public void evaluate(VectorizedRowBatch batch) { 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 void evaluate(VectorizedRowBatch batch) { 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 void evaluate(VectorizedRowBatch batch) { //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 void evaluate(VectorizedRowBatch batch) { 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; - } + } } } } diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/LongColGreaterEqualDoubleScalar.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/LongColGreaterEqualDoubleScalar.java index a00ae52..e5f14ac 100644 --- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/LongColGreaterEqualDoubleScalar.java +++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/LongColGreaterEqualDoubleScalar.java @@ -45,6 +45,7 @@ public void evaluate(VectorizedRowBatch batch) { 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 void evaluate(VectorizedRowBatch batch) { 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 void evaluate(VectorizedRowBatch batch) { //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 void evaluate(VectorizedRowBatch batch) { 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; - } + } } } } diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/LongColLessDoubleScalar.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/LongColLessDoubleScalar.java index c0a383b..272a288 100644 --- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/LongColLessDoubleScalar.java +++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/LongColLessDoubleScalar.java @@ -45,6 +45,7 @@ public void evaluate(VectorizedRowBatch batch) { 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 void evaluate(VectorizedRowBatch batch) { 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 void evaluate(VectorizedRowBatch batch) { //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 void evaluate(VectorizedRowBatch batch) { 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; - } + } } } } diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/LongColLessEqualDoubleScalar.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/LongColLessEqualDoubleScalar.java index bc64592..a6466ac 100644 --- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/LongColLessEqualDoubleScalar.java +++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/LongColLessEqualDoubleScalar.java @@ -45,6 +45,7 @@ public void evaluate(VectorizedRowBatch batch) { 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 void evaluate(VectorizedRowBatch batch) { 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 void evaluate(VectorizedRowBatch batch) { //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 void evaluate(VectorizedRowBatch batch) { 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; - } + } } } } diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/LongColNotEqualDoubleScalar.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/LongColNotEqualDoubleScalar.java index 666cb0a..34882e7 100644 --- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/LongColNotEqualDoubleScalar.java +++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/LongColNotEqualDoubleScalar.java @@ -45,6 +45,7 @@ public void evaluate(VectorizedRowBatch batch) { 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 void evaluate(VectorizedRowBatch batch) { 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 void evaluate(VectorizedRowBatch batch) { //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 void evaluate(VectorizedRowBatch batch) { 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; - } + } } } } diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/templates/ColumnCompareScalar.txt ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/templates/ColumnCompareScalar.txt index dcf87b0..be42f6a 100644 --- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/templates/ColumnCompareScalar.txt +++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/templates/ColumnCompareScalar.txt @@ -45,6 +45,7 @@ public class extends VectorExpression { outputColVector = () batch.cols[outputColumn]; int[] sel = batch.selected; boolean[] nullPos = inputColVector.isNull; + boolean[] outNulls = outputColVector.isNull; int n = batch.size; [] vector = inputColVector.vector; [] outputVector = outputColVector.vector; @@ -54,6 +55,8 @@ public class extends VectorExpression { 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 extends VectorExpression { //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 extends VectorExpression { 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; - } + } } } }