byte[] result = ByteUtil.EMPTY_BYTE_ARRAY;
for (int i=0; i<children.size(); i++) {
if (children.get(i).getDataType() == null || !children.get(i).evaluate(tuple, ptr)) {
continue;
}
PDataType childType = children.get(i).getDataType();
SortOrder sortOrder = children.get(i).getSortOrder();
// We could potentially not invert the bytes, but we might as well since we're allocating
// additional space here anyway.
if (childType.isCoercibleTo(PDataType.VARCHAR)) {
result = ByteUtil.concat(result, ByteUtil.concat(sortOrder, ptr));
} else {
result = ByteUtil.concat(result, PDataType.VARCHAR.toBytes(childType.toObject(ptr, sortOrder).toString()));
}
}
ptr.set(result);
return true;
}