OmniSciDB  95562058bd
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
foreign_storage::ParquetGeospatialEncoder Class Reference

#include <ParquetGeospatialEncoder.h>

+ Inheritance diagram for foreign_storage::ParquetGeospatialEncoder:
+ Collaboration diagram for foreign_storage::ParquetGeospatialEncoder:

Public Member Functions

 ParquetGeospatialEncoder ()
 
 ParquetGeospatialEncoder (const parquet::ColumnDescriptor *parquet_column_descriptor, std::list< Chunk_NS::Chunk > &chunks, std::list< std::unique_ptr< ChunkMetadata >> &chunk_metadata)
 
void appendData (const int16_t *def_levels, const int16_t *rep_levels, const int64_t values_read, const int64_t levels_read, const bool is_last_batch, int8_t *values) override
 
- Public Member Functions inherited from foreign_storage::ParquetEncoder
 ParquetEncoder (Data_Namespace::AbstractBuffer *buffer)
 
virtual ~ParquetEncoder ()=default
 
virtual std::shared_ptr
< ChunkMetadata
getRowGroupMetadata (const parquet::RowGroupMetaData *group_metadata, const int parquet_column_index, const SQLTypeInfo &column_type)
 

Private Types

enum  GeoColumnType {
  COORDS, BOUNDS, RING_SIZES, POLY_RINGS,
  RENDER_GROUP
}
 

Private Member Functions

void appendBaseAndRenderGroupDataAndUpdateMetadata (const int64_t levels_read)
 
void validateChunksAndMetadataSizing (std::list< Chunk_NS::Chunk > &chunks, 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)
 

Private Attributes

const ColumnDescriptorgeo_column_descriptor_
 
StringNoneEncoderbase_column_encoder_
 
Encodercoords_column_encoder_
 
Encoderbounds_column_encoder_
 
Encoderring_sizes_column_encoder_
 
Encoderpoly_rings_column_encoder_
 
Encoderrender_group_column_encoder_
 
ChunkMetadatabase_column_metadata_
 
ChunkMetadatacoords_column_metadata_
 
ChunkMetadatabounds_column_metadata_
 
ChunkMetadataring_sizes_column_metadata_
 
ChunkMetadatapoly_rings_column_metadata_
 
ChunkMetadatarender_group_column_metadata_
 
const ColumnDescriptorcoords_column_descriptor_
 
const ColumnDescriptorbounds_column_descriptor_
 
const ColumnDescriptorring_sizes_column_descriptor_
 
const ColumnDescriptorpoly_rings_column_descriptor_
 
const ColumnDescriptorrender_group_column_descriptor_
 
std::vector< int32_t > render_group_values_
 
std::vector< std::string > base_values_
 
size_t row_count_
 
std::string parquet_column_name_
 
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< ArrayDatumcoords_datum_buffer_
 
std::vector< ArrayDatumbounds_datum_buffer_
 
std::vector< ArrayDatumring_sizes_datum_buffer_
 
std::vector< ArrayDatumpoly_rings_datum_buffer_
 

Static Private Attributes

static constexpr bool PROMOTE_POLYGON_TO_MULTIPOLYGON = true
 

Additional Inherited Members

- Static Protected Member Functions inherited from foreign_storage::ParquetEncoder
static std::shared_ptr
< ChunkMetadata
createMetadata (const SQLTypeInfo &column_type)
 
- Protected Attributes inherited from foreign_storage::ParquetEncoder
Data_Namespace::AbstractBufferbuffer_
 

Detailed Description

Definition at line 45 of file ParquetGeospatialEncoder.h.

Member Enumeration Documentation

Constructor & Destructor Documentation

foreign_storage::ParquetGeospatialEncoder::ParquetGeospatialEncoder ( )
inline

Definition at line 47 of file ParquetGeospatialEncoder.h.

47 : ParquetEncoder(nullptr) {}
ParquetEncoder(Data_Namespace::AbstractBuffer *buffer)
foreign_storage::ParquetGeospatialEncoder::ParquetGeospatialEncoder ( const parquet::ColumnDescriptor *  parquet_column_descriptor,
std::list< Chunk_NS::Chunk > &  chunks,
std::list< std::unique_ptr< ChunkMetadata >> &  chunk_metadata 
)
inline

Definition at line 49 of file ParquetGeospatialEncoder.h.

References base_column_encoder_, base_column_metadata_, BOUNDS, bounds_column_descriptor_, bounds_column_encoder_, bounds_column_metadata_, CHECK, ColumnDescriptor::columnType, COORDS, coords_column_descriptor_, coords_column_encoder_, coords_column_metadata_, geo_column_descriptor_, SQLTypeInfo::get_type(), initEncoderAndGetEncoderAndMetadata(), SQLTypeInfo::is_geometry(), kLINESTRING, kMULTIPOLYGON, kPOLYGON, POLY_RINGS, poly_rings_column_descriptor_, poly_rings_column_encoder_, poly_rings_column_metadata_, RENDER_GROUP, render_group_column_descriptor_, render_group_column_encoder_, render_group_column_metadata_, RING_SIZES, ring_sizes_column_descriptor_, ring_sizes_column_encoder_, ring_sizes_column_metadata_, and validateChunksAndMetadataSizing().

52  : ParquetEncoder(nullptr)
53  , geo_column_descriptor_(chunks.begin()->getColumnDesc())
54  , base_column_encoder_(nullptr)
55  , coords_column_encoder_(nullptr)
56  , bounds_column_encoder_(nullptr)
60  , base_column_metadata_(nullptr)
61  , coords_column_metadata_(nullptr)
62  , bounds_column_metadata_(nullptr)
68  , row_count_(0)
69  , parquet_column_name_(parquet_column_descriptor->name()) {
71 
72  validateChunksAndMetadataSizing(chunks, chunk_metadata);
73 
74  const auto geo_column_type = geo_column_descriptor_->columnType.get_type();
75  std::shared_ptr<ParquetScalarEncoder> null_scalar_encoder;
76 
77  // initialize base column encoder
78  auto base_chunk = chunks.begin();
79  base_chunk->initEncoder();
81  dynamic_cast<StringNoneEncoder*>(base_chunk->getBuffer()->getEncoder());
82  base_column_metadata_ = chunk_metadata.begin()->get();
84 
85  // initialize coords column
88  chunks, chunk_metadata, geo_column_type, COORDS);
89 
90  // initialize bounds column
91  if (geo_column_type == kLINESTRING || geo_column_type == kPOLYGON ||
92  geo_column_type == kMULTIPOLYGON) {
93  std::tie(
96  chunks, chunk_metadata, geo_column_type, BOUNDS);
97  }
98 
99  // initialize ring sizes column & render group column
100  if (geo_column_type == kPOLYGON || geo_column_type == kMULTIPOLYGON) {
105  chunks, chunk_metadata, geo_column_type, RING_SIZES);
110  chunks, chunk_metadata, geo_column_type, RENDER_GROUP);
111  }
112 
113  // initialize poly rings column
114  if (geo_column_type == kMULTIPOLYGON) {
119  chunks, chunk_metadata, geo_column_type, POLY_RINGS);
120  }
121  }
ParquetEncoder(Data_Namespace::AbstractBuffer *buffer)
void validateChunksAndMetadataSizing(std::list< Chunk_NS::Chunk > &chunks, std::list< std::unique_ptr< ChunkMetadata >> &chunk_metadata) const
HOST DEVICE SQLTypes get_type() const
Definition: sqltypes.h:259
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)
#define CHECK(condition)
Definition: Logger.h:197
bool is_geometry() const
Definition: sqltypes.h:429
SQLTypeInfo columnType

+ Here is the call graph for this function:

Member Function Documentation

void foreign_storage::ParquetGeospatialEncoder::appendArrayDatumsToBufferAndUpdateMetadata ( )
inlineprivate

Definition at line 182 of file ParquetGeospatialEncoder.h.

References appendToArrayEncoderAndUpdateMetadata(), bounds_column_encoder_, bounds_column_metadata_, bounds_datum_buffer_, coords_column_encoder_, coords_column_metadata_, coords_datum_buffer_, poly_rings_column_encoder_, poly_rings_column_metadata_, poly_rings_datum_buffer_, ring_sizes_column_encoder_, ring_sizes_column_metadata_, and ring_sizes_datum_buffer_.

Referenced by appendData().

182  {
193  }
void appendToArrayEncoderAndUpdateMetadata(const std::vector< ArrayDatum > &datum_parse_buffer, Encoder *encoder, ChunkMetadata *chunk_metadata) const

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void foreign_storage::ParquetGeospatialEncoder::appendBaseAndRenderGroupDataAndUpdateMetadata ( const int64_t  levels_read)
inlineprivate

Definition at line 152 of file ParquetGeospatialEncoder.h.

References StringNoneEncoder::appendData(), Encoder::appendData(), base_column_encoder_, base_column_metadata_, base_values_, ColumnDescriptor::columnType, render_group_column_descriptor_, render_group_column_encoder_, render_group_column_metadata_, and render_group_values_.

Referenced by appendData().

152  {
153  // add nulls to base column & zeros to render group (if applicable)
155  *base_column_encoder_->appendData(&base_values_, 0, levels_read);
157  auto data_ptr = reinterpret_cast<int8_t*>(render_group_values_.data());
159  data_ptr, levels_read, render_group_column_descriptor_->columnType);
160  }
161  }
std::shared_ptr< ChunkMetadata > appendData(int8_t *&src_data, const size_t num_elems_to_append, const SQLTypeInfo &ti, const bool replicating=false, const int64_t offset=-1) override
SQLTypeInfo columnType
virtual std::shared_ptr< ChunkMetadata > appendData(int8_t *&src_data, const size_t num_elems_to_append, const SQLTypeInfo &ti, const bool replicating=false, const int64_t offset=-1)=0

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void foreign_storage::ParquetGeospatialEncoder::appendData ( const int16_t *  def_levels,
const int16_t *  rep_levels,
const int64_t  values_read,
const int64_t  levels_read,
const bool  is_last_batch,
int8_t *  values 
)
inlineoverridevirtual

Implements foreign_storage::ParquetEncoder.

Definition at line 123 of file ParquetGeospatialEncoder.h.

References appendArrayDatumsToBufferAndUpdateMetadata(), appendBaseAndRenderGroupDataAndUpdateMetadata(), CHECK, clearDatumBuffers(), clearParseBuffers(), processGeoElement(), processNullGeoElement(), and row_count_.

128  {
129  auto parquet_data_ptr = reinterpret_cast<const parquet::ByteArray*>(values);
130 
132 
133  for (int64_t i = 0, j = 0; i < levels_read; ++i, ++row_count_) {
135  if (def_levels[i] == 0) {
137  } else {
138  CHECK(j < values_read);
139  auto& byte_array = parquet_data_ptr[j++];
140  auto geo_string_view = std::string_view{
141  reinterpret_cast<const char*>(byte_array.ptr), byte_array.len};
142  processGeoElement(geo_string_view);
143  }
144  }
145 
147 
149  }
void appendBaseAndRenderGroupDataAndUpdateMetadata(const int64_t levels_read)
void processGeoElement(std::string_view geo_string_view)
#define CHECK(condition)
Definition: Logger.h:197

+ Here is the call graph for this function:

void foreign_storage::ParquetGeospatialEncoder::appendToArrayEncoderAndUpdateMetadata ( const std::vector< ArrayDatum > &  datum_parse_buffer,
Encoder encoder,
ChunkMetadata chunk_metadata 
) const
inlineprivate

Definition at line 195 of file ParquetGeospatialEncoder.h.

References CHECK, and UNREACHABLE.

Referenced by appendArrayDatumsToBufferAndUpdateMetadata().

198  {
199  if (!encoder) {
200  CHECK(!chunk_metadata);
201  return;
202  }
203  if (auto fixed_len_array_encoder =
204  dynamic_cast<FixedLengthArrayNoneEncoder*>(encoder)) {
205  auto new_chunk_metadata = fixed_len_array_encoder->appendData(
206  &datum_parse_buffer, 0, datum_parse_buffer.size());
207  *chunk_metadata = *new_chunk_metadata;
208  } else if (auto array_encoder = dynamic_cast<ArrayNoneEncoder*>(encoder)) {
209  auto new_chunk_metadata = array_encoder->appendData(
210  &datum_parse_buffer, 0, datum_parse_buffer.size(), false);
211  *chunk_metadata = *new_chunk_metadata;
212  } else {
213  UNREACHABLE();
214  }
215  }
#define UNREACHABLE()
Definition: Logger.h:241
#define CHECK(condition)
Definition: Logger.h:197

+ Here is the caller graph for this function:

void foreign_storage::ParquetGeospatialEncoder::clearDatumBuffers ( )
inlineprivate

Definition at line 309 of file ParquetGeospatialEncoder.h.

References bounds_datum_buffer_, coords_datum_buffer_, poly_rings_datum_buffer_, and ring_sizes_datum_buffer_.

Referenced by appendData().

309  {
310  coords_datum_buffer_.clear();
311  bounds_datum_buffer_.clear();
312  ring_sizes_datum_buffer_.clear();
313  poly_rings_datum_buffer_.clear();
314  }

+ Here is the caller graph for this function:

void foreign_storage::ParquetGeospatialEncoder::clearParseBuffers ( )
inlineprivate

Definition at line 302 of file ParquetGeospatialEncoder.h.

References bounds_parse_buffer_, coords_parse_buffer_, poly_rings_parse_buffer_, and ring_sizes_parse_buffer_.

Referenced by appendData().

+ Here is the caller graph for this function:

template<typename T >
std::list<T>::iterator foreign_storage::ParquetGeospatialEncoder::getIteratorForGeoColumnType ( std::list< T > &  list,
const SQLTypes  column_type,
const GeoColumnType  geo_column 
)
inlineprivate

Definition at line 319 of file ParquetGeospatialEncoder.h.

References BOUNDS, COORDS, kLINESTRING, kMULTIPOLYGON, kPOINT, kPOLYGON, POLY_RINGS, RENDER_GROUP, RING_SIZES, and UNREACHABLE.

Referenced by initEncoderAndGetEncoderAndMetadata().

322  {
323  auto list_iter = list.begin();
324  list_iter++; // skip base column
325  switch (column_type) {
326  case kPOINT: {
327  if (geo_column == COORDS) {
328  return list_iter;
329  }
330  UNREACHABLE();
331  }
332  case kLINESTRING: {
333  if (geo_column == COORDS) {
334  return list_iter;
335  }
336  list_iter++;
337  if (geo_column == BOUNDS) {
338  return list_iter;
339  }
340  UNREACHABLE();
341  }
342  case kPOLYGON: {
343  if (geo_column == COORDS) {
344  return list_iter;
345  }
346  list_iter++;
347  if (geo_column == RING_SIZES) {
348  return list_iter;
349  }
350  list_iter++;
351  if (geo_column == BOUNDS) {
352  return list_iter;
353  }
354  list_iter++;
355  if (geo_column == RENDER_GROUP) {
356  return list_iter;
357  }
358  UNREACHABLE();
359  }
360  case kMULTIPOLYGON: {
361  if (geo_column == COORDS) {
362  return list_iter;
363  }
364  list_iter++;
365  if (geo_column == RING_SIZES) {
366  return list_iter;
367  }
368  list_iter++;
369  if (geo_column == POLY_RINGS) {
370  return list_iter;
371  }
372  list_iter++;
373  if (geo_column == BOUNDS) {
374  return list_iter;
375  }
376  list_iter++;
377  if (geo_column == RENDER_GROUP) {
378  return list_iter;
379  }
380  UNREACHABLE();
381  }
382  default:
383  UNREACHABLE();
384  }
385  return {};
386  }
#define UNREACHABLE()
Definition: Logger.h:241

+ Here is the caller graph for this function:

std::tuple<Encoder*, ChunkMetadata*, const ColumnDescriptor*> foreign_storage::ParquetGeospatialEncoder::initEncoderAndGetEncoderAndMetadata ( std::list< Chunk_NS::Chunk > &  chunks,
std::list< std::unique_ptr< ChunkMetadata >> &  chunk_metadata,
const SQLTypes  sql_type,
GeoColumnType  geo_column_type 
)
inlineprivate

Definition at line 389 of file ParquetGeospatialEncoder.h.

References getIteratorForGeoColumnType().

Referenced by ParquetGeospatialEncoder().

393  {
394  auto chunk = getIteratorForGeoColumnType(chunks, sql_type, geo_column_type);
395  chunk->initEncoder();
396  auto encoder = chunk->getBuffer()->getEncoder();
397  auto metadata =
398  getIteratorForGeoColumnType(chunk_metadata, sql_type, geo_column_type)->get();
399  auto column_descriptor = chunk->getColumnDesc();
400  return {encoder, metadata, column_descriptor};
401  }
std::list< T >::iterator getIteratorForGeoColumnType(std::list< T > &list, const SQLTypes column_type, const GeoColumnType geo_column)

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void foreign_storage::ParquetGeospatialEncoder::processGeoElement ( std::string_view  geo_string_view)
inlineprivate

Definition at line 217 of file ParquetGeospatialEncoder.h.

References bounds_column_encoder_, bounds_datum_buffer_, bounds_parse_buffer_, ColumnDescriptor::columnName, ColumnDescriptor::columnType, Geospatial::compress_coords(), coords_datum_buffer_, coords_parse_buffer_, foreign_storage::encode_as_array_datum(), geo_column_descriptor_, SQLTypeInfo::get_type(), Geospatial::GeoTypesFactory::getGeoColumns(), kMULTIPOLYGON, kPOLYGON, parquet_column_name_, poly_rings_column_encoder_, poly_rings_datum_buffer_, poly_rings_parse_buffer_, PROMOTE_POLYGON_TO_MULTIPOLYGON, ring_sizes_column_encoder_, ring_sizes_datum_buffer_, ring_sizes_parse_buffer_, row_count_, and to_string().

Referenced by appendData().

217  {
219  if (!Geospatial::GeoTypesFactory::getGeoColumns(std::string(geo_string_view),
220  import_ti,
226  std::string error_message =
227  "Failed to extract valid geometry from row " + std::to_string(row_count_) +
228  " for OmniSci column " + geo_column_descriptor_->columnName +
229  " importing from parquet column " + parquet_column_name_;
230  throw std::runtime_error(error_message);
231  }
232 
233  // validate types
234  if (geo_column_descriptor_->columnType.get_type() != import_ti.get_type()) {
236  !(import_ti.get_type() == SQLTypes::kPOLYGON &&
238  throw std::runtime_error("Imported geometry from parquet column " +
240  " doesn't match the geospatial type of OmniSci column " +
242  }
243  }
244 
245  // append coords
246  std::vector<uint8_t> compressed_coords = Geospatial::compress_coords(
248  coords_datum_buffer_.emplace_back(encode_as_array_datum(compressed_coords));
249 
250  // append bounds
253  }
254 
255  // append ring sizes
257  ring_sizes_datum_buffer_.emplace_back(
259  }
260 
261  // append poly rings
263  poly_rings_datum_buffer_.emplace_back(
265  }
266  }
std::vector< uint8_t > compress_coords(std::vector< double > &coords, const SQLTypeInfo &ti)
Definition: Compression.cpp:52
HOST DEVICE SQLTypes get_type() const
Definition: sqltypes.h:259
std::string to_string(char const *&&v)
static bool getGeoColumns(const std::string &wkt_or_wkb_hex, SQLTypeInfo &ti, std::vector< double > &coords, std::vector< double > &bounds, std::vector< int > &ring_sizes, std::vector< int > &poly_rings, const bool promote_poly_to_mpoly=false)
Definition: Types.cpp:864
ArrayDatum encode_as_array_datum(const std::vector< T > &data)
SQLTypeInfo columnType
std::string columnName

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void foreign_storage::ParquetGeospatialEncoder::processNullGeoElement ( )
inlineprivate

Definition at line 268 of file ParquetGeospatialEncoder.h.

References bounds_column_descriptor_, bounds_column_encoder_, bounds_datum_buffer_, bounds_parse_buffer_, ColumnDescriptor::columnType, import_export::ImporterUtils::composeNullArray(), Geospatial::compress_coords(), coords_column_descriptor_, coords_datum_buffer_, coords_parse_buffer_, foreign_storage::encode_as_array_datum(), geo_column_descriptor_, SQLTypeInfo::get_type(), Geospatial::GeoTypesFactory::getNullGeoColumns(), kPOINT, poly_rings_column_descriptor_, poly_rings_column_encoder_, poly_rings_datum_buffer_, poly_rings_parse_buffer_, PROMOTE_POLYGON_TO_MULTIPOLYGON, ring_sizes_column_descriptor_, ring_sizes_column_encoder_, ring_sizes_datum_buffer_, and ring_sizes_parse_buffer_.

Referenced by appendData().

268  {
276  // POINT columns are represented using fixed length arrays and need
277  // special treatment of nulls
279  std::vector<uint8_t> compressed_coords = Geospatial::compress_coords(
281  coords_datum_buffer_.emplace_back(encode_as_array_datum(compressed_coords));
282  } else {
285  }
289  }
291  ring_sizes_datum_buffer_.emplace_back(
294  }
296  poly_rings_datum_buffer_.emplace_back(
299  }
300  }
std::vector< uint8_t > compress_coords(std::vector< double > &coords, const SQLTypeInfo &ti)
Definition: Compression.cpp:52
static ArrayDatum composeNullArray(const SQLTypeInfo &ti)
Definition: Importer.cpp:395
static void getNullGeoColumns(SQLTypeInfo &ti, std::vector< double > &coords, std::vector< double > &bounds, std::vector< int > &ring_sizes, std::vector< int > &poly_rings, const bool promote_poly_to_mpoly=false)
Definition: Types.cpp:1071
HOST DEVICE SQLTypes get_type() const
Definition: sqltypes.h:259
ArrayDatum encode_as_array_datum(const std::vector< T > &data)
SQLTypeInfo columnType

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void foreign_storage::ParquetGeospatialEncoder::validateChunksAndMetadataSizing ( std::list< Chunk_NS::Chunk > &  chunks,
std::list< std::unique_ptr< ChunkMetadata >> &  chunk_metadata 
) const
inlineprivate

Definition at line 163 of file ParquetGeospatialEncoder.h.

References CHECK, ColumnDescriptor::columnType, geo_column_descriptor_, SQLTypeInfo::get_type(), kLINESTRING, kMULTIPOLYGON, kPOINT, and kPOLYGON.

Referenced by ParquetGeospatialEncoder().

165  {
166  const auto geo_column_type = geo_column_descriptor_->columnType.get_type();
167  if (geo_column_type == kPOINT) {
168  CHECK(chunk_metadata.size() == 2);
169  CHECK(chunks.size() == 2);
170  } else if (geo_column_type == kLINESTRING) {
171  CHECK(chunk_metadata.size() == 3);
172  CHECK(chunks.size() == 3);
173  } else if (geo_column_type == kPOLYGON) {
174  CHECK(chunk_metadata.size() == 5);
175  CHECK(chunks.size() == 5);
176  } else if (geo_column_type == kMULTIPOLYGON) {
177  CHECK(chunk_metadata.size() == 6);
178  CHECK(chunks.size() == 6);
179  }
180  }
HOST DEVICE SQLTypes get_type() const
Definition: sqltypes.h:259
#define CHECK(condition)
Definition: Logger.h:197
SQLTypeInfo columnType

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

Member Data Documentation

StringNoneEncoder* foreign_storage::ParquetGeospatialEncoder::base_column_encoder_
private
ChunkMetadata* foreign_storage::ParquetGeospatialEncoder::base_column_metadata_
private
std::vector<std::string> foreign_storage::ParquetGeospatialEncoder::base_values_
private
const ColumnDescriptor* foreign_storage::ParquetGeospatialEncoder::bounds_column_descriptor_
private

Definition at line 422 of file ParquetGeospatialEncoder.h.

Referenced by ParquetGeospatialEncoder(), and processNullGeoElement().

Encoder* foreign_storage::ParquetGeospatialEncoder::bounds_column_encoder_
private
ChunkMetadata* foreign_storage::ParquetGeospatialEncoder::bounds_column_metadata_
private
std::vector<ArrayDatum> foreign_storage::ParquetGeospatialEncoder::bounds_datum_buffer_
private
std::vector<double> foreign_storage::ParquetGeospatialEncoder::bounds_parse_buffer_
private
const ColumnDescriptor* foreign_storage::ParquetGeospatialEncoder::coords_column_descriptor_
private

Definition at line 421 of file ParquetGeospatialEncoder.h.

Referenced by ParquetGeospatialEncoder(), and processNullGeoElement().

Encoder* foreign_storage::ParquetGeospatialEncoder::coords_column_encoder_
private
ChunkMetadata* foreign_storage::ParquetGeospatialEncoder::coords_column_metadata_
private
std::vector<ArrayDatum> foreign_storage::ParquetGeospatialEncoder::coords_datum_buffer_
private
std::vector<double> foreign_storage::ParquetGeospatialEncoder::coords_parse_buffer_
private
const ColumnDescriptor* foreign_storage::ParquetGeospatialEncoder::geo_column_descriptor_
private
std::string foreign_storage::ParquetGeospatialEncoder::parquet_column_name_
private

Definition at line 430 of file ParquetGeospatialEncoder.h.

Referenced by processGeoElement().

const ColumnDescriptor* foreign_storage::ParquetGeospatialEncoder::poly_rings_column_descriptor_
private

Definition at line 424 of file ParquetGeospatialEncoder.h.

Referenced by ParquetGeospatialEncoder(), and processNullGeoElement().

Encoder* foreign_storage::ParquetGeospatialEncoder::poly_rings_column_encoder_
private
ChunkMetadata* foreign_storage::ParquetGeospatialEncoder::poly_rings_column_metadata_
private
std::vector<ArrayDatum> foreign_storage::ParquetGeospatialEncoder::poly_rings_datum_buffer_
private
std::vector<int> foreign_storage::ParquetGeospatialEncoder::poly_rings_parse_buffer_
private
constexpr bool foreign_storage::ParquetGeospatialEncoder::PROMOTE_POLYGON_TO_MULTIPOLYGON = true
staticprivate

Definition at line 405 of file ParquetGeospatialEncoder.h.

Referenced by processGeoElement(), and processNullGeoElement().

const ColumnDescriptor* foreign_storage::ParquetGeospatialEncoder::render_group_column_descriptor_
private
Encoder* foreign_storage::ParquetGeospatialEncoder::render_group_column_encoder_
private
ChunkMetadata* foreign_storage::ParquetGeospatialEncoder::render_group_column_metadata_
private
std::vector<int32_t> foreign_storage::ParquetGeospatialEncoder::render_group_values_
private
const ColumnDescriptor* foreign_storage::ParquetGeospatialEncoder::ring_sizes_column_descriptor_
private

Definition at line 423 of file ParquetGeospatialEncoder.h.

Referenced by ParquetGeospatialEncoder(), and processNullGeoElement().

Encoder* foreign_storage::ParquetGeospatialEncoder::ring_sizes_column_encoder_
private
ChunkMetadata* foreign_storage::ParquetGeospatialEncoder::ring_sizes_column_metadata_
private
std::vector<ArrayDatum> foreign_storage::ParquetGeospatialEncoder::ring_sizes_datum_buffer_
private
std::vector<int> foreign_storage::ParquetGeospatialEncoder::ring_sizes_parse_buffer_
private
size_t foreign_storage::ParquetGeospatialEncoder::row_count_
private

Definition at line 429 of file ParquetGeospatialEncoder.h.

Referenced by appendData(), and processGeoElement().


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