private void populatePrimitiveColumn()

in server/pxf-hive/src/main/java/org/greenplum/pxf/plugins/hive/HiveORCVectorizedResolver.java [136:350]


    private void populatePrimitiveColumn(PrimitiveCategory primitiveCategory, ObjectInspector oi, VectorizedRowBatch vectorizedBatch, int columnIndex) {
        ColumnVector columnVector = vectorizedBatch.cols[columnIndex];
        Object fieldValue;
        DataType fieldType;

        switch (primitiveCategory) {
            case BOOLEAN: {
                fieldType = BOOLEAN;
                LongColumnVector lcv = (LongColumnVector) columnVector;
                for (int rowIndex = 0; rowIndex < vectorizedBatch.size; rowIndex++) {
                    fieldValue = null;
                    if (lcv != null) {
                        int rowId = lcv.isRepeating ? 0 : rowIndex;
                        if (!lcv.isNull[rowId]) {
                            fieldValue = lcv.vector[rowId] == 1;
                        }
                    }
                    addValueToColumn(columnIndex, rowIndex, new OneField(fieldType.getOID(), fieldValue));
                }
                break;
            }
            case SHORT: {
                fieldType = SMALLINT;
                LongColumnVector lcv = (LongColumnVector) columnVector;
                for (int rowIndex = 0; rowIndex < vectorizedBatch.size; rowIndex++) {
                    fieldValue = null;
                    if (lcv != null) {
                        int rowId = lcv.isRepeating ? 0 : rowIndex;
                        if (!lcv.isNull[rowId]) {
                            fieldValue = (short) lcv.vector[rowId];
                        }
                    }
                    addValueToColumn(columnIndex, rowIndex, new OneField(fieldType.getOID(), fieldValue));
                }
                break;
            }
            case INT: {
                fieldType = INTEGER;
                LongColumnVector lcv = (LongColumnVector) columnVector;
                for (int rowIndex = 0; rowIndex < vectorizedBatch.size; rowIndex++) {
                    fieldValue = null;
                    if (lcv != null) {
                        int rowId = lcv.isRepeating ? 0 : rowIndex;
                        if (!lcv.isNull[rowId]) {
                            fieldValue = (int) lcv.vector[rowId];
                        }
                    }
                    addValueToColumn(columnIndex, rowIndex, new OneField(fieldType.getOID(), fieldValue));
                }
                break;
            }
            case LONG: {
                fieldType = BIGINT;
                LongColumnVector lcv = (LongColumnVector) columnVector;
                for (int rowIndex = 0; rowIndex < vectorizedBatch.size; rowIndex++) {
                    fieldValue = null;
                    if (lcv != null) {
                        int rowId = lcv.isRepeating ? 0 : rowIndex;
                        if (!lcv.isNull[rowId]) {
                            fieldValue = lcv.vector[rowId];
                        }
                    }
                    addValueToColumn(columnIndex, rowIndex, new OneField(fieldType.getOID(), fieldValue));
                }
                break;
            }
            case FLOAT: {
                fieldType = REAL;
                DoubleColumnVector dcv = (DoubleColumnVector) columnVector;
                for (int rowIndex = 0; rowIndex < vectorizedBatch.size; rowIndex++) {
                    fieldValue = null;
                    if (dcv != null) {
                        int rowId = dcv.isRepeating ? 0 : rowIndex;
                        if (!dcv.isNull[rowId]) {
                            fieldValue = (float) dcv.vector[rowId];
                        }
                    }
                    addValueToColumn(columnIndex, rowIndex, new OneField(fieldType.getOID(), fieldValue));
                }
                break;
            }
            case DOUBLE: {
                fieldType = FLOAT8;
                DoubleColumnVector dcv = (DoubleColumnVector) columnVector;
                for (int rowIndex = 0; rowIndex < vectorizedBatch.size; rowIndex++) {
                    fieldValue = null;
                    if (dcv != null) {
                        int rowId = dcv.isRepeating ? 0 : rowIndex;
                        if (!dcv.isNull[rowId]) {
                            fieldValue = dcv.vector[rowId];
                        }
                    }
                    addValueToColumn(columnIndex, rowIndex, new OneField(fieldType.getOID(), fieldValue));
                }
                break;
            }
            case DECIMAL: {
                fieldType = NUMERIC;
                DecimalColumnVector dcv = (DecimalColumnVector) columnVector;
                for (int rowIndex = 0; rowIndex < vectorizedBatch.size; rowIndex++) {
                    fieldValue = null;
                    if (dcv != null) {
                        int rowId = dcv.isRepeating ? 0 : rowIndex;
                        if (!dcv.isNull[rowId]) {
                            fieldValue = dcv.vector[rowId];
                        }
                    }
                    addValueToColumn(columnIndex, rowIndex, new OneField(fieldType.getOID(), fieldValue));
                }
                break;
            }
            case VARCHAR: {
                fieldType = VARCHAR;
                BytesColumnVector bcv = (BytesColumnVector) columnVector;
                for (int rowIndex = 0; rowIndex < vectorizedBatch.size; rowIndex++) {
                    fieldValue = null;
                    if (columnVector != null) {
                        int rowId = bcv.isRepeating ? 0 : rowIndex;
                        if (!bcv.isNull[rowId]) {
                            Text textValue = new Text();
                            textValue.set(bcv.vector[rowId], bcv.start[rowId], bcv.length[rowId]);
                            fieldValue = textValue;
                        }
                    }
                    addValueToColumn(columnIndex, rowIndex, new OneField(fieldType.getOID(), fieldValue));
                }
                break;
            }
            case CHAR: {
                fieldType = BPCHAR;
                BytesColumnVector bcv = (BytesColumnVector) columnVector;
                for (int rowIndex = 0; rowIndex < vectorizedBatch.size; rowIndex++) {
                    fieldValue = null;
                    if (columnVector != null) {
                        int rowId = bcv.isRepeating ? 0 : rowIndex;
                        if (!bcv.isNull[rowId]) {
                            Text textValue = new Text();
                            textValue.set(bcv.vector[rowId], bcv.start[rowId], bcv.length[rowId]);
                            fieldValue = textValue;
                        }
                    }
                    addValueToColumn(columnIndex, rowIndex, new OneField(fieldType.getOID(), fieldValue));
                }
                break;
            }
            case STRING: {
                fieldType = TEXT;
                BytesColumnVector bcv = (BytesColumnVector) columnVector;
                for (int rowIndex = 0; rowIndex < vectorizedBatch.size; rowIndex++) {
                    fieldValue = null;
                    if (columnVector != null) {
                        int rowId = bcv.isRepeating ? 0 : rowIndex;
                        if (!bcv.isNull[rowId]) {
                            Text textValue = new Text();
                            textValue.set(bcv.vector[rowId], bcv.start[rowId], bcv.length[rowId]);
                            fieldValue = textValue;
                        }
                    }
                    addValueToColumn(columnIndex, rowIndex, new OneField(fieldType.getOID(), fieldValue));
                }
                break;
            }
            case BINARY: {
                fieldType = BYTEA;
                BytesColumnVector bcv = (BytesColumnVector) columnVector;
                for (int rowIndex = 0; rowIndex < vectorizedBatch.size; rowIndex++) {
                    fieldValue = null;
                    if (columnVector != null) {
                        int rowId = bcv.isRepeating ? 0 : rowIndex;
                        if (!bcv.isNull[rowId]) {
                            fieldValue = new byte[bcv.length[rowId]];
                            System.arraycopy(bcv.vector[rowId], bcv.start[rowId], fieldValue, 0, bcv.length[rowId]);
                        }
                    }
                    addValueToColumn(columnIndex, rowIndex, new OneField(fieldType.getOID(), fieldValue));
                }
                break;
            }
            case DATE: {
                fieldType = DATE;
                LongColumnVector lcv = (LongColumnVector) columnVector;
                for (int rowIndex = 0; rowIndex < vectorizedBatch.size; rowIndex++) {
                    fieldValue = null;
                    if (lcv != null) {
                        int rowId = lcv.isRepeating ? 0 : rowIndex;
                        if (!lcv.isNull[rowId]) {
                            fieldValue = new Date(org.apache.hadoop.hive.serde2.io.DateWritable.daysToMillis((int) lcv.vector[rowId]));
                        }
                    }
                    addValueToColumn(columnIndex, rowIndex, new OneField(fieldType.getOID(), fieldValue));
                }
                break;
            }
            case BYTE: {
                fieldType = SMALLINT;
                LongColumnVector lcv = (LongColumnVector) columnVector;
                for (int rowIndex = 0; rowIndex < vectorizedBatch.size; rowIndex++) {
                    fieldValue = null;
                    if (lcv != null) {
                        int rowId = lcv.isRepeating ? 0 : rowIndex;
                        if (!lcv.isNull[rowId]) {
                            fieldValue = (short) lcv.vector[rowId];
                        }
                    }
                    addValueToColumn(columnIndex, rowIndex, new OneField(fieldType.getOID(), fieldValue));
                }
                break;
            }
            default: {
                throw new UnsupportedTypeException(oi.getTypeName()
                        + " conversion is not supported by "
                        + getClass().getSimpleName());
            }
        }
    }