OmniSciDB  f632821e96
GeoLinestringValueConverter Struct Reference

#include <TargetValueConvertersImpl.h>

+ Inheritance diagram for GeoLinestringValueConverter:
+ Collaboration diagram for GeoLinestringValueConverter:

Public Member Functions

 GeoLinestringValueConverter (const Catalog_Namespace::Catalog &cat, size_t num_rows, const ColumnDescriptor *logicalColumnDescriptor)
 
 ~GeoLinestringValueConverter () override
 
void allocateColumnarData (size_t num_rows) override
 
void convertToColumnarFormat (size_t row, const TargetValue *value) override
 
void addDataBlocksToInsertData (Fragmenter_Namespace::InsertData &insertData) override
 
- Public Member Functions inherited from GeoPointValueConverter
 GeoPointValueConverter (const Catalog_Namespace::Catalog &cat, size_t num_rows, const ColumnDescriptor *logicalColumnDescriptor)
 
 ~GeoPointValueConverter () override
 
ArrayDatum toCompressedCoords (const std::shared_ptr< std::vector< double >> &coords)
 
- Public Member Functions inherited from TargetValueConverter
 TargetValueConverter (const ColumnDescriptor *cd)
 
virtual ~TargetValueConverter ()
 
virtual void finalizeDataBlocksForInsertData ()
 

Public Attributes

const ColumnDescriptorbounds_column_descriptor_
 
std::unique_ptr< std::vector< ArrayDatum > > bounds_data_
 
boost_variant_accessor< GeoLineStringTargetValueGEO_LINESTRING_VALUE_ACCESSOR
 
- Public Attributes inherited from GeoPointValueConverter
const ColumnDescriptorcoords_column_descriptor_
 
std::unique_ptr< std::vector< std::string > > column_data_
 
std::unique_ptr< std::vector< ArrayDatum > > signed_compressed_coords_data_
 
boost_variant_accessor< GeoTargetValueGEO_VALUE_ACCESSOR
 
boost_variant_accessor< GeoPointTargetValueGEO_POINT_VALUE_ACCESSOR
 
- Public Attributes inherited from TargetValueConverter
const ColumnDescriptorcolumn_descriptor_
 
boost_variant_accessor< ScalarTargetValueSCALAR_TARGET_VALUE_ACCESSOR
 
boost_variant_accessor< ArrayTargetValueARRAY_TARGET_VALUE_ACCESSOR
 
boost_variant_accessor< GeoTargetValueGEO_TARGET_VALUE_ACCESSOR
 
boost_variant_accessor< NullableStringNULLABLE_STRING_ACCESSOR
 
boost_variant_accessor< std::string > STRING_ACCESSOR
 

Detailed Description

Definition at line 738 of file TargetValueConvertersImpl.h.

Constructor & Destructor Documentation

◆ GeoLinestringValueConverter()

GeoLinestringValueConverter::GeoLinestringValueConverter ( const Catalog_Namespace::Catalog cat,
size_t  num_rows,
const ColumnDescriptor logicalColumnDescriptor 
)
inline

Definition at line 743 of file TargetValueConvertersImpl.h.

References NumericValueConverter< SOURCE_TYPE, TARGET_TYPE >::allocateColumnarData(), CHECK, TargetValueConverter::column_descriptor_, ColumnDescriptor::columnId, Catalog_Namespace::Catalog::getMetadataForColumn(), and ColumnDescriptor::tableId.

746  : GeoPointValueConverter(cat, num_rows, logicalColumnDescriptor) {
750 
751  if (num_rows) {
753  }
754  }
const int8_t const int64_t * num_rows
const ColumnDescriptor * column_descriptor_
const ColumnDescriptor * getMetadataForColumn(int tableId, const std::string &colName) const
GeoPointValueConverter(const Catalog_Namespace::Catalog &cat, size_t num_rows, const ColumnDescriptor *logicalColumnDescriptor)
#define CHECK(condition)
Definition: Logger.h:197
const ColumnDescriptor * bounds_column_descriptor_
void allocateColumnarData(size_t num_rows) override
+ Here is the call graph for this function:

◆ ~GeoLinestringValueConverter()

GeoLinestringValueConverter::~GeoLinestringValueConverter ( )
inlineoverride

Definition at line 756 of file TargetValueConvertersImpl.h.

756 {}

Member Function Documentation

◆ addDataBlocksToInsertData()

void GeoLinestringValueConverter::addDataBlocksToInsertData ( Fragmenter_Namespace::InsertData insertData)
inlineoverridevirtual

Reimplemented from GeoPointValueConverter.

Definition at line 791 of file TargetValueConvertersImpl.h.

References GeoPointValueConverter::addDataBlocksToInsertData(), DataBlockPtr::arraysPtr, ColumnDescriptor::columnId, Fragmenter_Namespace::InsertData::columnIds, and Fragmenter_Namespace::InsertData::data.

791  {
793 
794  DataBlockPtr bounds;
795 
796  bounds.arraysPtr = bounds_data_.get();
797 
798  insertData.data.emplace_back(bounds);
799  insertData.columnIds.emplace_back(bounds_column_descriptor_->columnId);
800  }
std::unique_ptr< std::vector< ArrayDatum > > bounds_data_
std::vector< ArrayDatum > * arraysPtr
Definition: sqltypes.h:151
std::vector< DataBlockPtr > data
the number of rows being inserted
Definition: Fragmenter.h:64
void addDataBlocksToInsertData(Fragmenter_Namespace::InsertData &insertData) override
const ColumnDescriptor * bounds_column_descriptor_
std::vector< int > columnIds
identifies the table into which the data is being inserted
Definition: Fragmenter.h:62
+ Here is the call graph for this function:

◆ allocateColumnarData()

void GeoLinestringValueConverter::allocateColumnarData ( size_t  num_rows)
inlineoverridevirtual

Reimplemented from GeoPointValueConverter.

Definition at line 758 of file TargetValueConvertersImpl.h.

References GeoPointValueConverter::allocateColumnarData(), CHECK, and num_rows.

758  {
759  CHECK(num_rows > 0);
761  bounds_data_ = std::make_unique<std::vector<ArrayDatum>>(num_rows);
762  }
std::unique_ptr< std::vector< ArrayDatum > > bounds_data_
const int8_t const int64_t * num_rows
void allocateColumnarData(size_t num_rows) override
#define CHECK(condition)
Definition: Logger.h:197
+ Here is the call graph for this function:

◆ convertToColumnarFormat()

void GeoLinestringValueConverter::convertToColumnarFormat ( size_t  row,
const TargetValue value 
)
inlineoverridevirtual

Reimplemented from GeoPointValueConverter.

Definition at line 766 of file TargetValueConvertersImpl.h.

References CHECK, compute_bounds_of_coords(), TargetValueConverter::GEO_TARGET_VALUE_ACCESSOR, NULL_ARRAY_DOUBLE, NULL_DOUBLE, and to_array_datum().

766  {
767  const auto geoValue =
768  checked_get<GeoTargetValue>(row, value, GEO_TARGET_VALUE_ACCESSOR);
769  CHECK(geoValue);
770  if (geoValue->is_initialized()) {
771  const auto geo = geoValue->get();
772  const auto geoLinestring =
773  checked_get<GeoLineStringTargetValue>(row, &geo, GEO_LINESTRING_VALUE_ACCESSOR);
774 
775  (*column_data_)[row] = "";
776  (*signed_compressed_coords_data_)[row] = toCompressedCoords(geoLinestring->coords);
777  auto bounds = compute_bounds_of_coords(geoLinestring->coords);
778  (*bounds_data_)[row] = to_array_datum(bounds);
779  } else {
780  // NULL Linestring
781  (*column_data_)[row] = "";
782  (*signed_compressed_coords_data_)[row] = ArrayDatum(0, nullptr, true);
783  std::vector<double> bounds = {
784  NULL_ARRAY_DOUBLE, NULL_DOUBLE, NULL_DOUBLE, NULL_DOUBLE};
785  auto bounds_datum = to_array_datum(bounds);
786  bounds_datum.is_null = true;
787  (*bounds_data_)[row] = bounds_datum;
788  }
789  }
ArrayDatum to_array_datum(const std::vector< ELEM_TYPE > &vector)
#define NULL_DOUBLE
Definition: sqltypes.h:186
#define NULL_ARRAY_DOUBLE
Definition: sqltypes.h:194
ArrayDatum toCompressedCoords(const std::shared_ptr< std::vector< double >> &coords)
std::vector< double > compute_bounds_of_coords(const std::shared_ptr< std::vector< double >> &coords)
boost_variant_accessor< GeoLineStringTargetValue > GEO_LINESTRING_VALUE_ACCESSOR
std::conditional_t< is_cuda_compiler(), DeviceArrayDatum, HostArrayDatum > ArrayDatum
Definition: sqltypes.h:131
#define CHECK(condition)
Definition: Logger.h:197
boost_variant_accessor< GeoTargetValue > GEO_TARGET_VALUE_ACCESSOR
+ Here is the call graph for this function:

Member Data Documentation

◆ bounds_column_descriptor_

const ColumnDescriptor* GeoLinestringValueConverter::bounds_column_descriptor_

Definition at line 739 of file TargetValueConvertersImpl.h.

◆ bounds_data_

std::unique_ptr<std::vector<ArrayDatum> > GeoLinestringValueConverter::bounds_data_

Definition at line 741 of file TargetValueConvertersImpl.h.

◆ GEO_LINESTRING_VALUE_ACCESSOR

boost_variant_accessor<GeoLineStringTargetValue> GeoLinestringValueConverter::GEO_LINESTRING_VALUE_ACCESSOR

Definition at line 764 of file TargetValueConvertersImpl.h.


The documentation for this struct was generated from the following file: