def createFieldReader()

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))
    }
  }