in spark/common/src/main/scala/org/apache/sedona/sql/datasources/geopackage/transform/ValuesMapper.scala [27:79]
def mapValues(metadata: PartitionOptions, rs: java.sql.ResultSet): Seq[Any] = {
metadata.columns.map(column => {
(column.dataType, metadata.tableType) match {
case (GeoPackageType.INTEGER | GeoPackageType.INT, _) => rs.getInt(column.name)
case (GeoPackageType.TINY_INT, _) => rs.getInt(column.name)
case (GeoPackageType.SMALLINT, _) => rs.getInt(column.name)
case (GeoPackageType.MEDIUMINT, _) => rs.getInt(column.name)
case (GeoPackageType.FLOAT, _) => rs.getFloat(column.name)
case (GeoPackageType.DOUBLE, _) => rs.getDouble(column.name)
case (GeoPackageType.REAL, _) => rs.getDouble(column.name)
case (startsWith: String, _) if startsWith.startsWith(GeoPackageType.TEXT) =>
UTF8String.fromString(rs.getString(column.name))
case (startsWith: String, TILES)
if startsWith.startsWith(GeoPackageType.BLOB) && column.name == "tile_data" =>
metadata.tile match {
case Some(value) =>
value.tileRowMetadata
.map(tileRowMetadata => {
RasterUDT.serialize(
Image.readImageFile(rs.getBytes(column.name), value, tileRowMetadata))
})
.orNull
case None => null
}
case (startsWith: String, _) if startsWith.startsWith(GeoPackageType.BLOB) =>
rs.getBytes(column.name)
case (GeoPackageType.BOOLEAN, _) =>
rs.getBoolean(column.name)
case (GeoPackageType.DATE, _) =>
DataTypesTransformations.getDays(rs.getString(column.name))
case (GeoPackageType.DATETIME, _) =>
DataTypesTransformations.epoch(rs.getString(column.name)) * 1000
case (GeoPackageType.POINT, _) =>
GeometryReader.extractWKB(rs.getBytes(column.name))
case (GeoPackageType.LINESTRING, _) =>
GeometryReader.extractWKB(rs.getBytes(column.name))
case (GeoPackageType.POLYGON, _) =>
GeometryReader.extractWKB(rs.getBytes(column.name))
case (GeoPackageType.GEOMETRY, _) =>
GeometryReader.extractWKB(rs.getBytes(column.name))
case (GeoPackageType.MULTIPOINT, _) =>
GeometryReader.extractWKB(rs.getBytes(column.name))
case (GeoPackageType.MULTILINESTRING, _) =>
GeometryReader.extractWKB(rs.getBytes(column.name))
case (GeoPackageType.MULTIPOLYGON, _) =>
GeometryReader.extractWKB(rs.getBytes(column.name))
case (GeoPackageType.GEOMETRYCOLLECTION, _) =>
GeometryReader.extractWKB(rs.getBytes(column.name))
case _ =>
UTF8String.fromString(rs.getString(column.name))
}
})
}