OmniSciDB  c1a53651b2
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
GeoPointValueConverter Struct Reference

#include <TargetValueConvertersImpl.h>

+ Inheritance diagram for GeoPointValueConverter:
+ Collaboration diagram for GeoPointValueConverter:

Public Member Functions

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

Public Attributes

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
< GeoTargetValue
GEO_VALUE_ACCESSOR
 
boost_variant_accessor
< GeoPointTargetValue
GEO_POINT_VALUE_ACCESSOR
 
- Public Attributes inherited from TargetValueConverter
const ColumnDescriptorcolumn_descriptor_
 
boost_variant_accessor
< ScalarTargetValue
SCALAR_TARGET_VALUE_ACCESSOR
 
boost_variant_accessor
< ArrayTargetValue
ARRAY_TARGET_VALUE_ACCESSOR
 
boost_variant_accessor
< GeoTargetValue
GEO_TARGET_VALUE_ACCESSOR
 
boost_variant_accessor
< NullableString
NULLABLE_STRING_ACCESSOR
 
boost_variant_accessor
< std::string > 
STRING_ACCESSOR
 

Detailed Description

Definition at line 625 of file TargetValueConvertersImpl.h.

Constructor & Destructor Documentation

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

Definition at line 631 of file TargetValueConvertersImpl.h.

References allocateColumnarData(), CHECK, TargetValueConverter::column_descriptor_, ColumnDescriptor::columnId, coords_column_descriptor_, Catalog_Namespace::Catalog::getMetadataForColumn(), and ColumnDescriptor::tableId.

634  : TargetValueConverter(logicalColumnDescriptor) {
638 
639  if (num_rows) {
640  allocateColumnarData(num_rows);
641  }
642  }
TargetValueConverter(const ColumnDescriptor *cd)
void allocateColumnarData(size_t num_rows) override
const ColumnDescriptor * column_descriptor_
const ColumnDescriptor * getMetadataForColumn(int tableId, const std::string &colName) const
const ColumnDescriptor * coords_column_descriptor_
#define CHECK(condition)
Definition: Logger.h:291

+ Here is the call graph for this function:

GeoPointValueConverter::~GeoPointValueConverter ( )
inlineoverride

Definition at line 644 of file TargetValueConvertersImpl.h.

644 {}

Member Function Documentation

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

Implements TargetValueConverter.

Reimplemented in GeoMultiPolygonValueConverter, GeoPolygonValueConverter, GeoMultiLinestringValueConverter, GeoLinestringValueConverter, and GeoMultiPointValueConverter.

Definition at line 693 of file TargetValueConvertersImpl.h.

References DataBlockPtr::arraysPtr, column_data_, TargetValueConverter::column_descriptor_, ColumnDescriptor::columnId, Fragmenter_Namespace::InsertData::columnIds, coords_column_descriptor_, Fragmenter_Namespace::InsertData::data, signed_compressed_coords_data_, and DataBlockPtr::stringsPtr.

Referenced by GeoMultiPointValueConverter::addDataBlocksToInsertData(), GeoLinestringValueConverter::addDataBlocksToInsertData(), GeoMultiLinestringValueConverter::addDataBlocksToInsertData(), GeoPolygonValueConverter::addDataBlocksToInsertData(), and GeoMultiPolygonValueConverter::addDataBlocksToInsertData().

693  {
694  DataBlockPtr logical, coords;
695 
696  logical.stringsPtr = column_data_.get();
698 
699  insertData.data.emplace_back(logical);
700  insertData.columnIds.emplace_back(column_descriptor_->columnId);
701 
702  insertData.data.emplace_back(coords);
703  insertData.columnIds.emplace_back(coords_column_descriptor_->columnId);
704  }
std::vector< std::string > * stringsPtr
Definition: sqltypes.h:224
std::vector< ArrayDatum > * arraysPtr
Definition: sqltypes.h:225
const ColumnDescriptor * column_descriptor_
std::unique_ptr< std::vector< std::string > > column_data_
std::vector< DataBlockPtr > data
the number of rows being inserted
Definition: Fragmenter.h:73
const ColumnDescriptor * coords_column_descriptor_
std::vector< int > columnIds
identifies the table into which the data is being inserted
Definition: Fragmenter.h:71
std::unique_ptr< std::vector< ArrayDatum > > signed_compressed_coords_data_

+ Here is the caller graph for this function:

void GeoPointValueConverter::allocateColumnarData ( size_t  num_rows)
inlineoverridevirtual

Implements TargetValueConverter.

Reimplemented in GeoMultiPolygonValueConverter, GeoPolygonValueConverter, GeoMultiLinestringValueConverter, GeoLinestringValueConverter, and GeoMultiPointValueConverter.

Definition at line 646 of file TargetValueConvertersImpl.h.

References CHECK, column_data_, and signed_compressed_coords_data_.

Referenced by GeoMultiPointValueConverter::allocateColumnarData(), GeoLinestringValueConverter::allocateColumnarData(), GeoMultiLinestringValueConverter::allocateColumnarData(), GeoPolygonValueConverter::allocateColumnarData(), GeoMultiPolygonValueConverter::allocateColumnarData(), and GeoPointValueConverter().

646  {
647  CHECK(num_rows > 0);
648  column_data_ = std::make_unique<std::vector<std::string>>(num_rows);
649  signed_compressed_coords_data_ = std::make_unique<std::vector<ArrayDatum>>(num_rows);
650  }
std::unique_ptr< std::vector< std::string > > column_data_
#define CHECK(condition)
Definition: Logger.h:291
std::unique_ptr< std::vector< ArrayDatum > > signed_compressed_coords_data_

+ Here is the caller graph for this function:

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

Implements TargetValueConverter.

Reimplemented in GeoMultiPolygonValueConverter, GeoPolygonValueConverter, GeoMultiLinestringValueConverter, GeoLinestringValueConverter, and GeoMultiPointValueConverter.

Definition at line 671 of file TargetValueConvertersImpl.h.

References CHECK, GEO_POINT_VALUE_ACCESSOR, GEO_VALUE_ACCESSOR, NULL_ARRAY_DOUBLE, NULL_DOUBLE, and toCompressedCoords().

671  {
672  const auto geoValue = checked_get<GeoTargetValue>(row, value, GEO_VALUE_ACCESSOR);
673  CHECK(geoValue);
674  if (geoValue->is_initialized()) {
675  const auto geo = geoValue->get();
676  const auto geoPoint =
677  checked_get<GeoPointTargetValue>(row, &geo, GEO_POINT_VALUE_ACCESSOR);
678  CHECK(geoPoint);
679  (*column_data_)[row] = "";
680  (*signed_compressed_coords_data_)[row] = toCompressedCoords(geoPoint->coords);
681  } else {
682  // NULL point
683  (*column_data_)[row] = "";
684  auto coords = std::make_shared<std::vector<double>>();
685  coords->push_back(NULL_ARRAY_DOUBLE);
686  coords->push_back(NULL_DOUBLE);
687  auto coords_datum = toCompressedCoords(coords);
688  coords_datum.is_null = true;
689  (*signed_compressed_coords_data_)[row] = coords_datum;
690  }
691  }
#define NULL_DOUBLE
ArrayDatum toCompressedCoords(const std::shared_ptr< std::vector< double >> &coords)
boost_variant_accessor< GeoTargetValue > GEO_VALUE_ACCESSOR
#define NULL_ARRAY_DOUBLE
#define CHECK(condition)
Definition: Logger.h:291
boost_variant_accessor< GeoPointTargetValue > GEO_POINT_VALUE_ACCESSOR

+ Here is the call graph for this function:

ArrayDatum GeoPointValueConverter::toCompressedCoords ( const std::shared_ptr< std::vector< double >> &  coords)
inline

Definition at line 655 of file TargetValueConvertersImpl.h.

References checked_malloc(), TargetValueConverter::column_descriptor_, ColumnDescriptor::columnType, and Geospatial::compress_coords().

Referenced by convertToColumnarFormat(), GeoMultiPointValueConverter::convertToColumnarFormat(), GeoLinestringValueConverter::convertToColumnarFormat(), GeoMultiLinestringValueConverter::convertToColumnarFormat(), GeoPolygonValueConverter::convertToColumnarFormat(), and GeoMultiPolygonValueConverter::convertToColumnarFormat().

656  {
657  const auto compressed_coords_vector =
659 
660  uint8_t* compressed_coords_array = reinterpret_cast<uint8_t*>(
661  checked_malloc(sizeof(uint8_t) * compressed_coords_vector.size()));
662  memcpy(compressed_coords_array,
663  &compressed_coords_vector[0],
664  compressed_coords_vector.size());
665 
666  return ArrayDatum((int)compressed_coords_vector.size(),
667  reinterpret_cast<int8_t*>(compressed_coords_array),
668  false);
669  }
const ColumnDescriptor * column_descriptor_
std::conditional_t< is_cuda_compiler(), DeviceArrayDatum, HostArrayDatum > ArrayDatum
Definition: sqltypes.h:219
std::vector< uint8_t > compress_coords(const std::vector< double > &coords, const SQLTypeInfo &ti)
Definition: Compression.cpp:52
void * checked_malloc(const size_t size)
Definition: checked_alloc.h:45
SQLTypeInfo columnType

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

Member Data Documentation

std::unique_ptr<std::vector<std::string> > GeoPointValueConverter::column_data_

Definition at line 628 of file TargetValueConvertersImpl.h.

Referenced by addDataBlocksToInsertData(), and allocateColumnarData().

const ColumnDescriptor* GeoPointValueConverter::coords_column_descriptor_
boost_variant_accessor<GeoPointTargetValue> GeoPointValueConverter::GEO_POINT_VALUE_ACCESSOR

Definition at line 653 of file TargetValueConvertersImpl.h.

Referenced by convertToColumnarFormat().

boost_variant_accessor<GeoTargetValue> GeoPointValueConverter::GEO_VALUE_ACCESSOR

Definition at line 652 of file TargetValueConvertersImpl.h.

Referenced by convertToColumnarFormat().

std::unique_ptr<std::vector<ArrayDatum> > GeoPointValueConverter::signed_compressed_coords_data_

Definition at line 629 of file TargetValueConvertersImpl.h.

Referenced by addDataBlocksToInsertData(), and allocateColumnarData().


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