use of org.apache.hadoop.hive.ql.exec.vector.LongColumnVector in project hive by apache.
the class TestVectorConditionalExpressions method testLongScalarScalarIfExpr.
@Test
public void testLongScalarScalarIfExpr() {
VectorizedRowBatch batch = getBatch4LongVectors();
VectorExpression expr = new IfExprLongScalarLongScalar(0, 100, 200, 3);
LongColumnVector r = (LongColumnVector) batch.cols[3];
expr.evaluate(batch);
assertEquals(200, r.vector[0]);
assertEquals(200, r.vector[1]);
assertEquals(100, r.vector[2]);
assertEquals(100, r.vector[3]);
}
use of org.apache.hadoop.hive.ql.exec.vector.LongColumnVector in project hive by apache.
the class TestVectorConditionalExpressions method testLongColumnScalarIfExpr.
@Test
public void testLongColumnScalarIfExpr() {
VectorizedRowBatch batch = getBatch4LongVectors();
VectorExpression expr = new IfExprLongColumnLongScalar(0, 1, 100, 3);
LongColumnVector r = (LongColumnVector) batch.cols[3];
expr.evaluate(batch);
assertEquals(100, r.vector[0]);
assertEquals(100, r.vector[1]);
assertEquals(-3, r.vector[2]);
assertEquals(-4, r.vector[3]);
}
use of org.apache.hadoop.hive.ql.exec.vector.LongColumnVector in project hive by apache.
the class TestVectorConditionalExpressions method getBatch1Long3DoubleVectors.
private VectorizedRowBatch getBatch1Long3DoubleVectors() {
VectorizedRowBatch batch = new VectorizedRowBatch(4);
LongColumnVector lv = new LongColumnVector();
// set first argument to IF -- boolean flag
lv.vector[0] = 0;
lv.vector[1] = 0;
lv.vector[2] = 1;
lv.vector[3] = 1;
batch.cols[0] = lv;
// set second argument to IF
DoubleColumnVector v = new DoubleColumnVector();
v.vector[0] = -1;
v.vector[1] = -2;
v.vector[2] = -3;
v.vector[3] = -4;
batch.cols[1] = v;
// set third argument to IF
v = new DoubleColumnVector();
v.vector[0] = 1;
v.vector[1] = 2;
v.vector[2] = 3;
v.vector[3] = 4;
batch.cols[2] = v;
// set output column
batch.cols[3] = new DoubleColumnVector();
batch.size = 4;
return batch;
}
use of org.apache.hadoop.hive.ql.exec.vector.LongColumnVector in project hive by apache.
the class TestVectorConditionalExpressions method getBatch1Long3BytesVectors.
private VectorizedRowBatch getBatch1Long3BytesVectors() {
VectorizedRowBatch batch = new VectorizedRowBatch(4);
LongColumnVector lv = new LongColumnVector();
// set first argument to IF -- boolean flag
lv.vector[0] = 0;
lv.vector[1] = 0;
lv.vector[2] = 1;
lv.vector[3] = 1;
batch.cols[0] = lv;
// set second argument to IF
BytesColumnVector v = new BytesColumnVector();
v.initBuffer();
setString(v, 0, "arg2_0");
setString(v, 1, "arg2_1");
setString(v, 2, "arg2_2");
setString(v, 3, "arg2_3");
batch.cols[1] = v;
// set third argument to IF
v = new BytesColumnVector();
v.initBuffer();
setString(v, 0, "arg3_0");
setString(v, 1, "arg3_1");
setString(v, 2, "arg3_2");
setString(v, 3, "arg3_3");
batch.cols[2] = v;
// set output column
v = new BytesColumnVector();
v.initBuffer();
batch.cols[3] = v;
batch.size = 4;
return batch;
}
use of org.apache.hadoop.hive.ql.exec.vector.LongColumnVector in project hive by apache.
the class TestVectorArithmeticExpressions method testLongColAddLongColumn.
@Test
public void testLongColAddLongColumn() {
int seed = 17;
VectorizedRowBatch vrg = VectorizedRowGroupGenUtil.getVectorizedRowBatch(VectorizedRowBatch.DEFAULT_SIZE, 6, seed);
LongColumnVector lcv0 = (LongColumnVector) vrg.cols[0];
LongColumnVector lcv1 = (LongColumnVector) vrg.cols[1];
LongColumnVector lcv2 = (LongColumnVector) vrg.cols[2];
LongColumnVector lcv3 = (LongColumnVector) vrg.cols[3];
LongColumnVector lcv4 = (LongColumnVector) vrg.cols[4];
LongColumnVector lcv5 = (LongColumnVector) vrg.cols[5];
LongColAddLongColumn expr = new LongColAddLongColumn(0, 1, 2);
expr.evaluate(vrg);
for (int i = 0; i < VectorizedRowBatch.DEFAULT_SIZE; i++) {
assertEquals((i + 1) * seed * 3, lcv2.vector[i]);
}
assertTrue(lcv2.noNulls);
// Now set one column nullable
lcv1.noNulls = false;
lcv1.isNull[1] = true;
// set output isRepeating to true to make sure it gets over-written
lcv2.isRepeating = true;
// similarly with noNulls
lcv2.noNulls = true;
expr.evaluate(vrg);
assertTrue(lcv2.isNull[1]);
assertFalse(lcv2.noNulls);
assertFalse(lcv2.isRepeating);
verifyLongNullDataVectorEntries(lcv2, vrg.selected, vrg.selectedInUse, vrg.size);
// Now set other column nullable too
lcv0.noNulls = false;
lcv0.isNull[1] = true;
lcv0.isNull[3] = true;
expr.evaluate(vrg);
assertTrue(lcv2.isNull[1]);
assertTrue(lcv2.isNull[3]);
assertFalse(lcv2.noNulls);
verifyLongNullDataVectorEntries(lcv2, vrg.selected, vrg.selectedInUse, vrg.size);
// Now test with repeating flag
lcv3.isRepeating = true;
LongColAddLongColumn expr2 = new LongColAddLongColumn(3, 4, 5);
expr2.evaluate(vrg);
for (int i = 0; i < VectorizedRowBatch.DEFAULT_SIZE; i++) {
assertEquals(seed * (4 + 5 * (i + 1)), lcv5.vector[i]);
}
// Repeating with other as nullable
lcv4.noNulls = false;
lcv4.isNull[0] = true;
expr2.evaluate(vrg);
assertTrue(lcv5.isNull[0]);
assertFalse(lcv5.noNulls);
verifyLongNullDataVectorEntries(lcv5, vrg.selected, vrg.selectedInUse, vrg.size);
// Repeating null value
lcv3.isRepeating = true;
lcv3.noNulls = false;
lcv3.isNull[0] = true;
expr2.evaluate(vrg);
assertFalse(lcv5.noNulls);
assertTrue(lcv5.isRepeating);
assertTrue(lcv5.isNull[0]);
verifyLongNullDataVectorEntries(lcv5, vrg.selected, vrg.selectedInUse, vrg.size);
// Neither input has nulls. Verify that this propagates to output.
vrg.selectedInUse = false;
lcv0.noNulls = true;
lcv1.noNulls = true;
lcv0.isRepeating = false;
lcv1.isRepeating = false;
// set output noNulls to true to make sure it gets over-written
lcv2.noNulls = false;
// similarly with isRepeating
lcv2.isRepeating = true;
expr.evaluate(vrg);
assertTrue(lcv2.noNulls);
assertFalse(lcv2.isRepeating);
}
Aggregations