Class foreign_storage::GeospatialEncoder

class GeospatialEncoder

Subclassed by foreign_storage::OdbcGeospatialEncoder, foreign_storage::ParquetGeospatialEncoder, foreign_storage::ParquetGeospatialImportEncoder

Public Functions

virtual ~GeospatialEncoder()
GeospatialEncoder(const RenderGroupAnalyzerMap *render_group_analyzer_map)
GeospatialEncoder(std::list<Chunk_NS::Chunk> &chunks, const RenderGroupAnalyzerMap *render_group_analyzer_map)
GeospatialEncoder(std::list<Chunk_NS::Chunk> &chunks, std::list<std::unique_ptr<ChunkMetadata>> &chunk_metadata, const RenderGroupAnalyzerMap *render_group_analyzer_map)

Protected Types

enum GeoColumnType

Values:

COORDS
BOUNDS
RING_SIZES
POLY_RINGS
RENDER_GROUP

Protected Functions

void appendBaseAndRenderGroupDataAndUpdateMetadata(const int64_t row_count)
void validateChunksSizing(std::list<Chunk_NS::Chunk> &chunks) const
void validateMetadataSizing(std::list<std::unique_ptr<ChunkMetadata>> &chunk_metadata) const
void appendArrayDatumsToBufferAndUpdateMetadata()
void appendToArrayEncoderAndUpdateMetadata(const std::vector<ArrayDatum> &datum_parse_buffer, Encoder *encoder, ChunkMetadata *chunk_metadata) const
void processGeoElement(std::string_view geo_string_view)
void processNullGeoElement()
void clearParseBuffers()
void clearDatumBuffers()
template<typename T>
std::list<T>::iterator getIteratorForGeoColumnType(std::list<T> &list, const SQLTypes column_type, const GeoColumnType geo_column)
std::tuple<Encoder *, ChunkMetadata *, const ColumnDescriptor *> initEncoderAndGetEncoderAndMetadata(std::list<Chunk_NS::Chunk> &chunks, std::list<std::unique_ptr<ChunkMetadata>> &chunk_metadata, const SQLTypes sql_type, GeoColumnType geo_column_type)
const ColumnDescriptor *getColumnDescriptor(std::list<Chunk_NS::Chunk> &chunks, const SQLTypes sql_type, GeoColumnType geo_column_type)
bool hasBoundsColumn() const
bool hasRingSizesColumn() const
bool hasRenderGroupColumn() const
bool hasPolyRingsColumn() const

Protected Attributes

const ColumnDescriptor *geo_column_descriptor_
StringNoneEncoder *base_column_encoder_
Encoder *coords_column_encoder_
Encoder *bounds_column_encoder_
Encoder *ring_sizes_column_encoder_
Encoder *poly_rings_column_encoder_
Encoder *render_group_column_encoder_
ChunkMetadata *base_column_metadata_
ChunkMetadata *coords_column_metadata_
ChunkMetadata *bounds_column_metadata_
ChunkMetadata *ring_sizes_column_metadata_
ChunkMetadata *poly_rings_column_metadata_
ChunkMetadata *render_group_column_metadata_
const ColumnDescriptor *coords_column_descriptor_
const ColumnDescriptor *bounds_column_descriptor_
const ColumnDescriptor *ring_sizes_column_descriptor_
const ColumnDescriptor *poly_rings_column_descriptor_
const ColumnDescriptor *render_group_column_descriptor_
std::vector<std::string> base_values_
std::vector<double> coords_parse_buffer_
std::vector<double> bounds_parse_buffer_
std::vector<int> ring_sizes_parse_buffer_
std::vector<int> poly_rings_parse_buffer_
std::vector<ArrayDatum> coords_datum_buffer_
std::vector<ArrayDatum> bounds_datum_buffer_
std::vector<ArrayDatum> ring_sizes_datum_buffer_
std::vector<ArrayDatum> poly_rings_datum_buffer_
std::vector<int32_t> render_group_value_buffer_
const RenderGroupAnalyzerMap *render_group_analyzer_map_

Protected Static Functions

static void throwMalformedGeoElement(const std::string &omnisci_column_name)
static void throwMismatchedGeoElement(const std::string &omnisci_column_name)

Protected Static Attributes

constexpr bool PROMOTE_POLYGON_TO_MULTIPOLYGON = true