public static ObjectInspector createObjectInspector(int columnId, IList <OrcProto.Type> types) { OrcProto.Type type = types[columnId]; switch (type.Kind) { case OrcProto.Type.Types.Kind.FLOAT: return(PrimitiveObjectInspectorFactory.writableFloatObjectInspector); case OrcProto.Type.Types.Kind.DOUBLE: return(PrimitiveObjectInspectorFactory.writableDoubleObjectInspector); case OrcProto.Type.Types.Kind.BOOLEAN: return(PrimitiveObjectInspectorFactory.writableBooleanObjectInspector); case OrcProto.Type.Types.Kind.BYTE: return(PrimitiveObjectInspectorFactory.writableByteObjectInspector); case OrcProto.Type.Types.Kind.SHORT: return(PrimitiveObjectInspectorFactory.writableShortObjectInspector); case OrcProto.Type.Types.Kind.INT: return(PrimitiveObjectInspectorFactory.writableIntObjectInspector); case OrcProto.Type.Types.Kind.LONG: return(PrimitiveObjectInspectorFactory.writableLongObjectInspector); case OrcProto.Type.Types.Kind.BINARY: return(PrimitiveObjectInspectorFactory.writableBinaryObjectInspector); case OrcProto.Type.Types.Kind.STRING: return(PrimitiveObjectInspectorFactory.writableStringObjectInspector); case OrcProto.Type.Types.Kind.CHAR: if (!type.HasMaximumLength) { throw new NotSupportedException( "Illegal use of char type without length in ORC type definition."); } return(PrimitiveObjectInspectorFactory.getPrimitiveWritableObjectInspector( TypeInfoFactory.getCharTypeInfo((int)type.MaximumLength))); case OrcProto.Type.Types.Kind.VARCHAR: if (!type.HasMaximumLength) { throw new NotSupportedException( "Illegal use of varchar type without length in ORC type definition."); } return(PrimitiveObjectInspectorFactory.getPrimitiveWritableObjectInspector( TypeInfoFactory.getVarcharTypeInfo((int)type.MaximumLength))); case OrcProto.Type.Types.Kind.TIMESTAMP: return(PrimitiveObjectInspectorFactory.writableTimestampObjectInspector); case OrcProto.Type.Types.Kind.DATE: return(PrimitiveObjectInspectorFactory.writableDateObjectInspector); case OrcProto.Type.Types.Kind.DECIMAL: int precision = type.HasPrecision ? (int)type.Precision : HiveDecimal.SYSTEM_DEFAULT_PRECISION; int scale = type.HasScale ? (int)type.Scale : HiveDecimal.SYSTEM_DEFAULT_SCALE; return(PrimitiveObjectInspectorFactory.getPrimitiveWritableObjectInspector( TypeInfoFactory.getDecimalTypeInfo(precision, scale))); case OrcProto.Type.Types.Kind.STRUCT: return(new OrcStructInspector(columnId, types)); case OrcProto.Type.Types.Kind.UNION: return(new OrcUnion.OrcUnionObjectInspector(columnId, types)); case OrcProto.Type.Types.Kind.MAP: return(new OrcMapObjectInspector(columnId, types)); case OrcProto.Type.Types.Kind.LIST: return(new OrcListObjectInspector(columnId, types)); default: throw new NotSupportedException("Unknown type " + type.Kind); } }
static public ObjectInspector createObjectInspector(TypeInfo info) { switch (info.getCategory()) { case ObjectInspectorCategory.PRIMITIVE: switch (((PrimitiveTypeInfo)info).getPrimitiveCategory()) { case PrimitiveCategory.FLOAT: return(PrimitiveObjectInspectorFactory.writableFloatObjectInspector); case PrimitiveCategory.DOUBLE: return(PrimitiveObjectInspectorFactory.writableDoubleObjectInspector); case PrimitiveCategory.BOOLEAN: return(PrimitiveObjectInspectorFactory.writableBooleanObjectInspector); case PrimitiveCategory.BYTE: return(PrimitiveObjectInspectorFactory.writableByteObjectInspector); case PrimitiveCategory.SHORT: return(PrimitiveObjectInspectorFactory.writableShortObjectInspector); case PrimitiveCategory.INT: return(PrimitiveObjectInspectorFactory.writableIntObjectInspector); case PrimitiveCategory.LONG: return(PrimitiveObjectInspectorFactory.writableLongObjectInspector); case PrimitiveCategory.BINARY: return(PrimitiveObjectInspectorFactory.writableBinaryObjectInspector); case PrimitiveCategory.STRING: return(PrimitiveObjectInspectorFactory.writableStringObjectInspector); case PrimitiveCategory.CHAR: return(PrimitiveObjectInspectorFactory.getPrimitiveWritableObjectInspector( (PrimitiveTypeInfo)info)); case PrimitiveCategory.VARCHAR: return(PrimitiveObjectInspectorFactory.getPrimitiveWritableObjectInspector( (PrimitiveTypeInfo)info)); case PrimitiveCategory.TIMESTAMP: return(PrimitiveObjectInspectorFactory.writableTimestampObjectInspector); case PrimitiveCategory.DATE: return(PrimitiveObjectInspectorFactory.writableDateObjectInspector); case PrimitiveCategory.DECIMAL: return(PrimitiveObjectInspectorFactory.getPrimitiveWritableObjectInspector( (PrimitiveTypeInfo)info)); default: throw new ArgumentException("Unknown primitive type " + ((PrimitiveTypeInfo)info).getPrimitiveCategory()); } case ObjectInspectorCategory.STRUCT: return(new OrcStructInspector((StructTypeInfo)info)); case ObjectInspectorCategory.UNION: return(new OrcUnion.OrcUnionObjectInspector((UnionTypeInfo)info)); case ObjectInspectorCategory.MAP: return(new OrcMapObjectInspector((MapTypeInfo)info)); case ObjectInspectorCategory.LIST: return(new OrcListObjectInspector((ListTypeInfo)info)); default: throw new ArgumentException("Unknown type " + info.getCategory()); } }