24 #ifndef QUERYENGINE_RESULTSET_GEOSERIALIZATION_H
25 #define QUERYENGINE_RESULTSET_GEOSERIALIZATION_H
35 using namespace Geospatial;
37 template <SQLTypes GEO_SOURCE_TYPE>
39 static_assert(
IS_GEO(GEO_SOURCE_TYPE),
"Invalid geo type for target value serializer.");
42 template <SQLTypes GEO_SOURCE_TYPE>
44 static_assert(
IS_GEO(GEO_SOURCE_TYPE),
"Invalid geo type for wkt serializer.");
47 template <SQLTypes GEO_SOURCE_TYPE>
49 static_assert(
IS_GEO(GEO_SOURCE_TYPE),
50 "Invalid geo type for target value ptr serializer.");
53 template <ResultSet::GeoReturnType GEO_RETURN_TYPE, SQLTypes GEO_SOURCE_TYPE>
58 "ResultSet: Unrecognized Geo Return Type encountered.");
61 template <SQLTypes GEO_SOURCE_TYPE>
66 template <SQLTypes GEO_SOURCE_TYPE>
71 template <SQLTypes GEO_SOURCE_TYPE>
80 std::array<VarlenDatumPtr, 1>& vals) {
87 geo_ti, vals[0]->pointer, vals[0]->length)});
94 std::array<VarlenDatumPtr, 1>& vals) {
100 geo_ti, vals[0]->pointer, vals[0]->length));
108 std::array<VarlenDatumPtr, 1>& vals) {
122 std::array<VarlenDatumPtr, 1>& vals) {
124 return GeoTargetValue(boost::optional<GeoLineStringTargetValue>{});
128 geo_ti, vals[0]->pointer, vals[0]->length)});
135 std::array<VarlenDatumPtr, 1>& vals) {
141 geo_ti, vals[0]->pointer, vals[0]->length));
149 std::array<VarlenDatumPtr, 1>& vals) {
163 std::array<VarlenDatumPtr, 2>& vals) {
164 if (!geo_ti.
get_notnull() && (vals[0]->is_null || vals[1]->is_null)) {
167 std::vector<int32_t> ring_sizes_vec;
170 geo_ti, vals[0]->pointer, vals[0]->length),
179 std::array<VarlenDatumPtr, 2>& vals) {
180 if (!geo_ti.
get_notnull() && (vals[0]->is_null || vals[1]->is_null)) {
184 std::vector<int32_t> ring_sizes_vec;
187 geo_ti, vals[0]->pointer, vals[0]->length),
196 std::array<VarlenDatumPtr, 2>& vals) {
197 if (!geo_ti.
get_notnull() && (vals[0]->is_null || vals[1]->is_null)) {
210 std::array<VarlenDatumPtr, 3>& vals) {
212 (vals[0]->is_null || vals[1]->is_null || vals[2]->is_null)) {
213 return GeoTargetValue(boost::optional<GeoMultiPolyTargetValue>{});
215 std::vector<int32_t> ring_sizes_vec;
217 std::vector<int32_t> poly_rings_vec;
220 geo_ti, vals[0]->pointer, vals[0]->length),
230 std::array<VarlenDatumPtr, 3>& vals) {
232 (vals[0]->is_null || vals[1]->is_null || vals[2]->is_null)) {
236 std::vector<int32_t> ring_sizes_vec;
238 std::vector<int32_t> poly_rings_vec;
241 geo_ti, vals[0]->pointer, vals[0]->length),
251 std::array<VarlenDatumPtr, 3>& vals) {
253 (vals[0]->is_null || vals[1]->is_null || vals[2]->is_null)) {
259 {std::move(vals[0]), std::move(vals[1]), std::move(vals[2])});
263 #endif // QUERYENGINE_RESULTSET_GEOSERIALIZATION_H
static TargetValue serialize(const SQLTypeInfo &geo_ti, std::array< VarlenDatumPtr, 2 > &vals)
static TargetValue serialize(const SQLTypeInfo &geo_ti, std::array< VarlenDatumPtr, 3 > &vals)
static TargetValue serialize(const SQLTypeInfo &geo_ti, std::array< VarlenDatumPtr, 3 > &vals)
static TargetValue serialize(const SQLTypeInfo &geo_ti, std::array< VarlenDatumPtr, 1 > &vals)
static TargetValue serialize(const SQLTypeInfo &geo_ti, std::array< VarlenDatumPtr, 2 > &vals)
Constants for Builtin SQL Types supported by OmniSci.
std::shared_ptr< std::vector< double > > decompress_coords< double, SQLTypeInfo >(const SQLTypeInfo &geo_ti, const int8_t *coords, const size_t coords_sz)
static TargetValue serialize(const SQLTypeInfo &geo_ti, std::array< VarlenDatumPtr, 1 > &vals)
static TargetValue serialize(const SQLTypeInfo &geo_ti, std::array< VarlenDatumPtr, 1 > &vals)
static TargetValue serialize(const SQLTypeInfo &geo_ti, std::array< VarlenDatumPtr, 1 > &vals)
static TargetValue serialize(const SQLTypeInfo &geo_ti, std::array< VarlenDatumPtr, 3 > &vals)
boost::optional< boost::variant< GeoPointTargetValue, GeoLineStringTargetValue, GeoPolyTargetValue, GeoMultiPolyTargetValue >> GeoTargetValue
boost::variant< std::string, void * > NullableString
static TargetValue serialize(const SQLTypeInfo &geo_ti, std::array< VarlenDatumPtr, 1 > &vals)
std::string getWktString() const
static TargetValue serialize(const SQLTypeInfo &geo_ti, std::array< VarlenDatumPtr, 2 > &vals)
Basic constructors and methods of the row set interface.
boost::variant< ScalarTargetValue, ArrayTargetValue, GeoTargetValue, GeoTargetValuePtr > TargetValue
HOST DEVICE bool get_notnull() const
static TargetValue serialize(const SQLTypeInfo &geo_ti, std::array< VarlenDatumPtr, 1 > &vals)
std::unique_ptr< VarlenDatum > VarlenDatumPtr
boost::variant< GeoPointTargetValuePtr, GeoLineStringTargetValuePtr, GeoPolyTargetValuePtr, GeoMultiPolyTargetValuePtr > GeoTargetValuePtr
void unpack_geo_vector(std::vector< T > &output, const int8_t *input_ptr, const size_t sz)