in hologres-connector-spark-base/src/main/scala/com/alibaba/hologres/spark/source/FieldReader.scala [139:177]
def createFieldReader(hologresType: Int, hologresTypeName: String): FieldReader = {
hologresType match {
case Types.TINYINT | Types.SMALLINT =>
new ShortFieldReader
case Types.INTEGER =>
new IntFieldReader
case Types.BIGINT =>
new LongFieldReader
case Types.REAL | Types.FLOAT =>
new FloatFieldReader
case Types.DOUBLE =>
new DoubleFieldReader
case Types.NUMERIC | Types.DECIMAL =>
new DecimalFieldReader
case Types.BOOLEAN | Types.BIT =>
new BooleanFieldReader
case Types.CHAR | Types.VARCHAR | Types.LONGVARCHAR =>
new StringFieldReader
case Types.DATE => new DateFieldReader
case Types.TIMESTAMP => new TimestampFieldReader
case Types.BINARY | Types.VARBINARY => new BinaryFieldReader
case Types.OTHER =>
hologresTypeName match {
case "json" | "jsonb" => new StringFieldReader
case "roaringbitmap" => new RoaringBitmapFieldReader
}
case Types.ARRAY =>
hologresTypeName match {
case "_int4" => new IntArrayFieldReader
case "_int8" => new LongArrayFieldReader
case "_float4" => new FloatArrayFieldReader
case "_float8" => new DoubleArrayFieldReader
case "_bool" => new BooleanArrayFieldReader
case "_varchar" | "_text" => new StringArrayFieldReader
}
case _ =>
throw new IllegalArgumentException(String.format("Hologres source does not support data type %s for now", hologresTypeName))
}
}