public static ArrowVectorAccessor createColumnVectorAccessor()

in odps-sdk/odps-sdk-core/src/main/java/com/aliyun/odps/table/record/accessor/ArrowToRecordConverter.java [85:140]


  public static ArrowVectorAccessor createColumnVectorAccessor(ValueVector vector,
                                                               TypeInfo typeInfo,
                                                               boolean isExtension) {
    switch (typeInfo.getOdpsType()) {
      case BOOLEAN:
        return new ArrowBitAccessor((BitVector) vector);
      case TINYINT:
        return new ArrowTinyIntAccessor((TinyIntVector) vector);
      case SMALLINT:
        return new ArrowSmallIntAccessor((SmallIntVector) vector);
      case INT:
        return new ArrowIntAccessor((IntVector) vector);
      case BIGINT:
        return new ArrowBigIntAccessor((BigIntVector) vector);
      case FLOAT:
        return new ArrowFloat4Accessor((Float4Vector) vector);
      case DOUBLE:
        return new ArrowFloat8Accessor((Float8Vector) vector);
      case DECIMAL:
        if (isExtension && (vector instanceof FixedSizeBinaryVector)) {
          return new ArrowDecimalExtensionAccessor((FixedSizeBinaryVector) vector);
        } else {
          return new ArrowDecimalAccessor((DecimalVector) vector);
        }
      case STRING:
      case VARCHAR:
      case CHAR:
      case JSON:
        return new ArrowVarCharAccessor((VarCharVector) vector);
      case BINARY:
        return new ArrowVarBinaryAccessor((VarBinaryVector) vector);
      case DATE:
        return new ArrowDateDayAccessor((DateDayVector) vector);
      case DATETIME:
        return new ArrowTimestampAccessor((TimeStampVector) vector);
      case TIMESTAMP:
      case TIMESTAMP_NTZ:
        if (!isExtension) {
          return new ArrowTimestampAccessor((TimeStampVector) vector);
        } else {
          return new ArrowTimestampExtensionAccessor((StructVector) vector);
        }
      case ARRAY:
        return new ArrowArrayAccessorImpl.ArrowArrayAccessorForRecord((ListVector) vector,
                                                                      typeInfo, isExtension);
      case MAP:
        return new ArrowMapAccessorImpl.ArrowMapAccessorForRecord((MapVector) vector, typeInfo,
                                                                  isExtension);
      case STRUCT:
        return new ArrowStructAccessorImpl.ArrowStructAccessorForRecord((StructVector) vector,
                                                                        typeInfo, isExtension);
      default:
        throw new UnsupportedOperationException(
            "Datatype not supported: " + typeInfo.getTypeName());
    }
  }