}
protected void populatePartitionVectors(int recordCount) {
for (int i = 0; i < pVectors.size(); i++) {
int size = 50;
ValueVector vector = pVectors.get(i);
Object val = selectedPartitionValues.get(i);
PrimitiveCategory pCat = ((PrimitiveTypeInfo)selectedPartitionTypes.get(i)).getPrimitiveCategory();
if (pCat == PrimitiveCategory.BINARY || pCat == PrimitiveCategory.STRING || pCat == PrimitiveCategory.VARCHAR) {
size = ((byte[]) selectedPartitionValues.get(i)).length;
}
VectorAllocator.getAllocator(vector, size).alloc(recordCount);
switch(pCat) {
case BINARY: {
VarBinaryVector v = (VarBinaryVector) vector;
byte[] value = (byte[]) val;
for (int j = 0; j < recordCount; j++) {
v.getMutator().setSafe(j, value);
}
break;
}
case BOOLEAN: {
BitVector v = (BitVector) vector;
Boolean value = (Boolean) val;
for (int j = 0; j < recordCount; j++) {
v.getMutator().set(j, value ? 1 : 0);
}
break;
}
case BYTE: {
TinyIntVector v = (TinyIntVector) vector;
byte value = (byte) val;
for (int j = 0; j < recordCount; j++) {
v.getMutator().setSafe(j, value);
}
break;
}
case DOUBLE: {
Float8Vector v = (Float8Vector) vector;
double value = (double) val;
for (int j = 0; j < recordCount; j++) {
v.getMutator().setSafe(j, value);
}
break;
}
case FLOAT: {
Float4Vector v = (Float4Vector) vector;
float value = (float) val;
for (int j = 0; j < recordCount; j++) {
v.getMutator().setSafe(j, value);
}
break;
}
case INT: {
IntVector v = (IntVector) vector;
int value = (int) val;
for (int j = 0; j < recordCount; j++) {
v.getMutator().setSafe(j, value);
}
break;
}
case LONG: {
BigIntVector v = (BigIntVector) vector;
long value = (long) val;
for (int j = 0; j < recordCount; j++) {
v.getMutator().setSafe(j, value);
}
break;
}
case SHORT: {
SmallIntVector v = (SmallIntVector) vector;
short value = (short) val;
for (int j = 0; j < recordCount; j++) {
v.getMutator().setSafe(j, value);
}
break;
}
case VARCHAR:
case STRING: {
VarCharVector v = (VarCharVector) vector;
byte[] value = (byte[]) val;
for (int j = 0; j < recordCount; j++) {
v.getMutator().setSafe(j, value);
}
break;
}
case TIMESTAMP: {
TimeStampVector v = (TimeStampVector) vector;
DateTime ts = new DateTime(((Timestamp) val).getTime()).withZoneRetainFields(DateTimeZone.UTC);
long value = ts.getMillis();
for (int j = 0; j < recordCount; j++) {
v.getMutator().setSafe(j, value);
}
break;
}
case DATE: {
DateVector v = (DateVector) vector;
DateTime date = new DateTime(((Date)val).getTime()).withZoneRetainFields(DateTimeZone.UTC);
long value = date.getMillis();
for (int j = 0; j < recordCount; j++) {
v.getMutator().setSafe(j, value);
}
break;
}
case DECIMAL: {
VarCharVector v = (VarCharVector) vector;
byte[] value = ((HiveDecimal) val).toString().getBytes();
for (int j = 0; j < recordCount; j++) {
v.getMutator().setSafe(j, value);
}
break;
}
default:
throwUnsupportedHiveDataTypeError(pCat.toString());
}
vector.getMutator().setValueCount(recordCount);
}
}