use of org.apache.hadoop.hive.ql.exec.vector.BytesColumnVector in project hive by apache.
the class TestVectorStringExpressions method testColConcatCol.
@Test
public void testColConcatCol() {
// has nulls, not repeating
VectorizedRowBatch batch = makeStringBatch2In1Out();
StringGroupConcatColCol expr = new StringGroupConcatColCol(0, 1, 2);
expr.evaluate(batch);
BytesColumnVector outCol = (BytesColumnVector) batch.cols[2];
int cmp = StringExpr.compare(redred, 0, redred.length, outCol.vector[0], outCol.start[0], outCol.length[0]);
Assert.assertEquals(0, cmp);
Assert.assertTrue(outCol.isNull[2]);
int cmp2 = StringExpr.compare(greengreen, 0, greengreen.length, outCol.vector[1], outCol.start[1], outCol.length[1]);
Assert.assertEquals(0, cmp2);
Assert.assertFalse(outCol.noNulls);
Assert.assertFalse(outCol.isRepeating);
// no nulls, not repeating
batch = makeStringBatch2In1Out();
batch.cols[0].noNulls = true;
batch.cols[1].noNulls = true;
expr.evaluate(batch);
outCol = (BytesColumnVector) batch.cols[2];
cmp = StringExpr.compare(redred, 0, redred.length, outCol.vector[0], outCol.start[0], outCol.length[0]);
Assert.assertEquals(0, cmp);
cmp2 = StringExpr.compare(greengreen, 0, greengreen.length, outCol.vector[1], outCol.start[1], outCol.length[1]);
Assert.assertEquals(0, cmp2);
int cmp3 = StringExpr.compare(emptyString, 0, emptyString.length, outCol.vector[2], outCol.start[2], outCol.length[2]);
Assert.assertEquals(0, cmp3);
Assert.assertTrue(outCol.noNulls);
Assert.assertFalse(outCol.isRepeating);
// has nulls, is repeating
batch = makeStringBatch2In1Out();
// only left input repeating
batch.cols[0].isRepeating = true;
batch.cols[0].isNull[0] = true;
expr.evaluate(batch);
outCol = (BytesColumnVector) batch.cols[2];
Assert.assertEquals(3, batch.size);
Assert.assertEquals(true, outCol.isRepeating);
Assert.assertEquals(true, outCol.isNull[0]);
// same, but repeating input is not null
batch = makeStringBatch2In1Out();
batch.cols[0].isRepeating = true;
expr.evaluate(batch);
outCol = (BytesColumnVector) batch.cols[2];
//TEST FAILED
Assert.assertEquals(false, outCol.isRepeating);
cmp = StringExpr.compare(redred, 0, redred.length, outCol.vector[0], outCol.start[0], outCol.length[0]);
Assert.assertEquals(0, cmp);
Assert.assertEquals(true, outCol.isNull[2]);
batch = makeStringBatch2In1Out();
// only right input repeating
batch.cols[1].isRepeating = true;
batch.cols[1].isNull[0] = true;
expr.evaluate(batch);
outCol = (BytesColumnVector) batch.cols[2];
Assert.assertEquals(3, batch.size);
Assert.assertEquals(true, outCol.isRepeating);
Assert.assertEquals(true, outCol.isNull[0]);
batch = makeStringBatch2In1Out();
// both inputs repeat
batch.cols[0].isRepeating = true;
batch.cols[0].isNull[0] = true;
batch.cols[1].isRepeating = true;
batch.cols[1].isNull[0] = true;
expr.evaluate(batch);
outCol = (BytesColumnVector) batch.cols[2];
Assert.assertEquals(3, batch.size);
Assert.assertEquals(true, outCol.isRepeating);
Assert.assertEquals(true, outCol.isNull[0]);
// no nulls, is repeating
batch = makeStringBatch2In1Out();
// only right input repeating and has no nulls
batch.cols[1].isRepeating = true;
batch.cols[1].noNulls = true;
expr.evaluate(batch);
outCol = (BytesColumnVector) batch.cols[2];
Assert.assertEquals(3, batch.size);
Assert.assertEquals(false, outCol.isRepeating);
Assert.assertEquals(false, outCol.isNull[0]);
Assert.assertEquals(false, outCol.noNulls);
Assert.assertEquals(true, outCol.isNull[2]);
cmp = StringExpr.compare(greenred, 0, greenred.length, outCol.vector[1], outCol.start[1], outCol.length[1]);
Assert.assertEquals(0, cmp);
// try again with left input also having no nulls
batch.cols[0].noNulls = true;
expr.evaluate(batch);
Assert.assertEquals(false, outCol.isRepeating);
Assert.assertEquals(true, outCol.noNulls);
cmp = StringExpr.compare(red, 0, red.length, outCol.vector[2], outCol.start[2], outCol.length[2]);
Assert.assertEquals(0, cmp);
batch = makeStringBatch2In1Out();
// only left input repeating and has no nulls
batch.cols[0].isRepeating = true;
batch.cols[0].noNulls = true;
expr.evaluate(batch);
outCol = (BytesColumnVector) batch.cols[2];
Assert.assertEquals(3, batch.size);
Assert.assertEquals(false, outCol.isRepeating);
Assert.assertEquals(false, outCol.isNull[0]);
Assert.assertEquals(false, outCol.noNulls);
Assert.assertEquals(true, outCol.isNull[2]);
cmp = StringExpr.compare(redgreen, 0, redgreen.length, outCol.vector[1], outCol.start[1], outCol.length[1]);
Assert.assertEquals(0, cmp);
batch = makeStringBatch2In1Out();
// both inputs repeat
batch.cols[0].isRepeating = true;
batch.cols[0].noNulls = true;
batch.cols[1].isRepeating = true;
batch.cols[1].noNulls = true;
expr.evaluate(batch);
outCol = (BytesColumnVector) batch.cols[2];
Assert.assertEquals(3, batch.size);
Assert.assertEquals(true, outCol.isRepeating);
Assert.assertEquals(false, outCol.isNull[0]);
cmp = StringExpr.compare(redred, 0, redred.length, outCol.vector[0], outCol.start[0], outCol.length[0]);
Assert.assertEquals(0, cmp);
}
use of org.apache.hadoop.hive.ql.exec.vector.BytesColumnVector in project hive by apache.
the class TestVectorStringExpressions method testCharScalarConcatCol.
@Test
public void testCharScalarConcatCol() {
// has nulls, not repeating
VectorizedRowBatch batch = makeStringBatch();
CharScalarConcatStringGroupCol expr = new CharScalarConcatStringGroupCol(new HiveChar(new String(red), 6), 0, 1);
expr.evaluate(batch);
BytesColumnVector outCol = (BytesColumnVector) batch.cols[1];
int cmp = StringExpr.compare(redred, 0, redred.length, outCol.vector[0], outCol.start[0], outCol.length[0]);
Assert.assertEquals(0, cmp);
Assert.assertTrue(outCol.isNull[2]);
int cmp2 = StringExpr.compare(redgreen, 0, redgreen.length, outCol.vector[1], outCol.start[1], outCol.length[1]);
Assert.assertEquals(0, cmp2);
Assert.assertFalse(outCol.noNulls);
Assert.assertFalse(outCol.isRepeating);
// no nulls, not repeating
batch = makeStringBatch();
batch.cols[0].noNulls = true;
expr.evaluate(batch);
outCol = (BytesColumnVector) batch.cols[1];
cmp = StringExpr.compare(redred, 0, redred.length, outCol.vector[0], outCol.start[0], outCol.length[0]);
Assert.assertEquals(0, cmp);
cmp2 = StringExpr.compare(redgreen, 0, redgreen.length, outCol.vector[1], outCol.start[1], outCol.length[1]);
Assert.assertEquals(0, cmp2);
int cmp3 = StringExpr.compare(red, 0, red.length, outCol.vector[2], outCol.start[2], outCol.length[2]);
Assert.assertEquals(0, cmp3);
Assert.assertTrue(outCol.noNulls);
Assert.assertFalse(outCol.isRepeating);
// has nulls, is repeating
batch = makeStringBatch();
batch.cols[0].isRepeating = true;
expr.evaluate(batch);
outCol = (BytesColumnVector) batch.cols[1];
cmp = StringExpr.compare(redred, 0, redred.length, outCol.vector[0], outCol.start[0], outCol.length[0]);
Assert.assertEquals(0, cmp);
Assert.assertTrue(outCol.isRepeating);
Assert.assertFalse(outCol.noNulls);
// no nulls, is repeating
batch = makeStringBatch();
batch.cols[0].isRepeating = true;
batch.cols[0].noNulls = true;
expr.evaluate(batch);
outCol = (BytesColumnVector) batch.cols[1];
cmp = StringExpr.compare(redred, 0, redred.length, outCol.vector[0], outCol.start[0], outCol.length[0]);
Assert.assertEquals(0, cmp);
Assert.assertTrue(outCol.isRepeating);
Assert.assertTrue(outCol.noNulls);
}
use of org.apache.hadoop.hive.ql.exec.vector.BytesColumnVector in project hive by apache.
the class TestVectorStringExpressions method makeStringBatch2In1Out.
private VectorizedRowBatch makeStringBatch2In1Out() {
VectorizedRowBatch batch = new VectorizedRowBatch(3);
BytesColumnVector v = new BytesColumnVector();
batch.cols[0] = v;
BytesColumnVector v2 = new BytesColumnVector();
batch.cols[1] = v2;
batch.cols[2] = new BytesColumnVector();
v.setRef(0, red, 0, red.length);
v.isNull[0] = false;
v.setRef(1, green, 0, green.length);
v.isNull[1] = false;
v.setRef(2, emptyString, 0, emptyString.length);
v.isNull[2] = true;
v.noNulls = false;
v2.setRef(0, red, 0, red.length);
v2.isNull[0] = false;
v2.setRef(1, green, 0, green.length);
v2.isNull[1] = false;
v2.setRef(2, emptyString, 0, emptyString.length);
v2.isNull[2] = true;
v2.noNulls = false;
batch.size = 3;
return batch;
}
use of org.apache.hadoop.hive.ql.exec.vector.BytesColumnVector in project hive by apache.
the class TestVectorStringExpressions method testColConcatStringScalar.
@Test
public void testColConcatStringScalar() {
// has nulls, not repeating
VectorizedRowBatch batch = makeStringBatch();
StringGroupColConcatStringScalar expr = new StringGroupColConcatStringScalar(0, red, 1);
expr.evaluate(batch);
BytesColumnVector outCol = (BytesColumnVector) batch.cols[1];
int cmp = StringExpr.compare(redred, 0, redred.length, outCol.vector[0], outCol.start[0], outCol.length[0]);
Assert.assertEquals(0, cmp);
Assert.assertTrue(outCol.isNull[2]);
int cmp2 = StringExpr.compare(greenred, 0, greenred.length, outCol.vector[1], outCol.start[1], outCol.length[1]);
Assert.assertEquals(0, cmp2);
Assert.assertFalse(outCol.noNulls);
Assert.assertFalse(outCol.isRepeating);
// no nulls, not repeating
batch = makeStringBatch();
batch.cols[0].noNulls = true;
expr.evaluate(batch);
outCol = (BytesColumnVector) batch.cols[1];
cmp = StringExpr.compare(redred, 0, redred.length, outCol.vector[0], outCol.start[0], outCol.length[0]);
Assert.assertEquals(0, cmp);
cmp2 = StringExpr.compare(greenred, 0, greenred.length, outCol.vector[1], outCol.start[1], outCol.length[1]);
Assert.assertEquals(0, cmp2);
int cmp3 = StringExpr.compare(red, 0, red.length, outCol.vector[2], outCol.start[2], outCol.length[2]);
Assert.assertEquals(0, cmp3);
Assert.assertTrue(outCol.noNulls);
Assert.assertFalse(outCol.isRepeating);
// has nulls, is repeating
batch = makeStringBatch();
batch.cols[0].isRepeating = true;
expr.evaluate(batch);
outCol = (BytesColumnVector) batch.cols[1];
cmp = StringExpr.compare(redred, 0, redred.length, outCol.vector[0], outCol.start[0], outCol.length[0]);
Assert.assertEquals(0, cmp);
Assert.assertTrue(outCol.isRepeating);
Assert.assertFalse(outCol.noNulls);
// no nulls, is repeating
batch = makeStringBatch();
batch.cols[0].isRepeating = true;
batch.cols[0].noNulls = true;
expr.evaluate(batch);
outCol = (BytesColumnVector) batch.cols[1];
cmp = StringExpr.compare(redred, 0, redred.length, outCol.vector[0], outCol.start[0], outCol.length[0]);
Assert.assertEquals(0, cmp);
Assert.assertTrue(outCol.isRepeating);
Assert.assertTrue(outCol.noNulls);
}
use of org.apache.hadoop.hive.ql.exec.vector.BytesColumnVector in project hive by apache.
the class TestVectorStringExpressions method makeStringBatchMixedCharSize.
VectorizedRowBatch makeStringBatchMixedCharSize() {
// create a new batch with one char column (for input) and one long column (for output)
VectorizedRowBatch batch = new VectorizedRowBatch(2, VectorizedRowBatch.DEFAULT_SIZE);
BytesColumnVector v = new BytesColumnVector(VectorizedRowBatch.DEFAULT_SIZE);
batch.cols[0] = v;
LongColumnVector outV = new LongColumnVector(VectorizedRowBatch.DEFAULT_SIZE);
batch.cols[1] = outV;
/*
* Add these 3 values:
*
* mixedUp
* green
* NULL
* <4 char string with mult-byte chars>
*/
v.setRef(0, mixedUp, 0, mixedUp.length);
v.isNull[0] = false;
v.setRef(1, green, 0, green.length);
v.isNull[1] = false;
v.setRef(2, emptyString, 0, emptyString.length);
v.isNull[2] = true;
v.noNulls = false;
v.setRef(3, multiByte, 0, 10);
v.isNull[3] = false;
batch.size = 4;
return batch;
}
Aggregations