super();
}
@Override
public void evaluate(VectorizedRowBatch batch) {
BytesColumnVector inputColVector = (BytesColumnVector) batch.cols[colNum];
BytesColumnVector outV = (BytesColumnVector) batch.cols[outputColumn];
int[] sel = batch.selected;
int n = batch.size;
byte[][] vector = inputColVector.vector;
int[] start = inputColVector.start;
int[] length = inputColVector.length;
if (n == 0) {
// Nothing to do
return;
}
// initialize output vector buffer to receive data
outV.initBuffer();
if (inputColVector.noNulls) {
outV.noNulls = true;
if (inputColVector.isRepeating) {
outV.isRepeating = true;
outV.setConcat(0, value, 0, value.length, vector[0], start[0], length[0]);
} else if (batch.selectedInUse) {
for(int j = 0; j != n; j++) {
int i = sel[j];
outV.setConcat(i, value, 0, value.length, vector[i], start[i], length[i]);
}
outV.isRepeating = false;
} else {
for(int i = 0; i != n; i++) {
outV.setConcat(i, value, 0, value.length, vector[i], start[i], length[i]);
}
outV.isRepeating = false;
}
} else {
/*
* Handle case with nulls. Don't do function if the value is null, to save time,
* because calling the function can be expensive.
*/
outV.noNulls = false;
if (inputColVector.isRepeating) {
outV.isRepeating = true;
outV.isNull[0] = inputColVector.isNull[0];
if (!inputColVector.isNull[0]) {
outV.setConcat(0, value, 0, value.length, vector[0], start[0], length[0]);
}
} else if (batch.selectedInUse) {
for(int j = 0; j != n; j++) {
int i = sel[j];
if (!inputColVector.isNull[i]) {
outV.setConcat(i, value, 0, value.length, vector[i], start[i], length[i]);
}
outV.isNull[i] = inputColVector.isNull[i];
}
outV.isRepeating = false;
} else {
for(int i = 0; i != n; i++) {
if (!inputColVector.isNull[i]) {
outV.setConcat(i, value, 0, value.length, vector[i], start[i], length[i]);
}
outV.isNull[i] = inputColVector.isNull[i];
}
outV.isRepeating = false;
}