OmniSciDB  a667adc9c8
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
foreign_storage::ParquetFixedLengthEncoder< V, T > Class Template Reference

#include <ParquetFixedLengthEncoder.h>

+ Inheritance diagram for foreign_storage::ParquetFixedLengthEncoder< V, T >:
+ Collaboration diagram for foreign_storage::ParquetFixedLengthEncoder< V, T >:

Public Member Functions

 ParquetFixedLengthEncoder (Data_Namespace::AbstractBuffer *buffer, const ColumnDescriptor *column_desciptor, const parquet::ColumnDescriptor *parquet_column_descriptor)
 
 ParquetFixedLengthEncoder (Data_Namespace::AbstractBuffer *buffer, const size_t omnisci_data_type_byte_size, const size_t parquet_data_type_byte_size)
 
void encodeAndCopy (const int8_t *parquet_data_bytes, int8_t *omnisci_data_bytes) override
 
void validate (std::shared_ptr< parquet::Statistics > stats, const SQLTypeInfo &column_type) const override
 
bool encodingIsIdentityForSameTypes () const override
 
- Public Member Functions inherited from foreign_storage::TypedParquetInPlaceEncoder< V, T >
 TypedParquetInPlaceEncoder (Data_Namespace::AbstractBuffer *buffer, const ColumnDescriptor *column_desciptor, const parquet::ColumnDescriptor *parquet_column_descriptor)
 
 TypedParquetInPlaceEncoder (Data_Namespace::AbstractBuffer *buffer, const size_t omnisci_data_type_byte_size, const size_t parquet_data_type_byte_size)
 
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
 
void encodeAndCopyContiguous (const int8_t *parquet_data_bytes, int8_t *omnisci_data_bytes, const size_t num_elements) override
 
void setNull (int8_t *omnisci_data_bytes) override
 
void copy (const int8_t *omnisci_data_bytes_source, int8_t *omnisci_data_bytes_destination) override
 
std::shared_ptr< ChunkMetadatagetRowGroupMetadata (const parquet::RowGroupMetaData *group_metadata, const int parquet_column_index, const SQLTypeInfo &column_type) override
 
- Public Member Functions inherited from foreign_storage::ParquetInPlaceEncoder
 ParquetInPlaceEncoder (Data_Namespace::AbstractBuffer *buffer, const size_t omnisci_data_type_byte_size, const size_t parquet_data_type_byte_size)
 
- Public Member Functions inherited from foreign_storage::ParquetScalarEncoder
 ParquetScalarEncoder (Data_Namespace::AbstractBuffer *buffer)
 
- Public Member Functions inherited from foreign_storage::ParquetEncoder
 ParquetEncoder (Data_Namespace::AbstractBuffer *buffer)
 
virtual ~ParquetEncoder ()=default
 

Private Member Functions

template<typename TT = T, std::enable_if_t<(!std::is_integral< TT >::value||std::is_same< TT, bool >::value)&&!std::is_floating_point< TT >::value, int > = 0>
void validateIntegralOrFloatingPointValue (std::shared_ptr< parquet::Statistics > stats, const SQLTypeInfo &column_type) const
 
template<typename TT = T, std::enable_if_t< std::is_floating_point< TT >::value, int > = 0>
void validateIntegralOrFloatingPointValue (std::shared_ptr< parquet::Statistics > stats, const SQLTypeInfo &column_type) const
 
template<typename TT = T, std::enable_if_t< std::is_integral< TT >::value &&!std::is_same< TT, bool >::value, int > = 0>
void validateIntegralOrFloatingPointValue (std::shared_ptr< parquet::Statistics > stats, const SQLTypeInfo &column_type) const
 

Additional Inherited Members

- Protected Member Functions inherited from foreign_storage::TypedParquetInPlaceEncoder< V, T >
std::pair< T, T > getUnencodedStats (std::shared_ptr< parquet::Statistics > stats) const
 
- Static Protected Member Functions inherited from foreign_storage::ParquetEncoder
static std::shared_ptr
< ChunkMetadata
createMetadata (const SQLTypeInfo &column_type)
 
static void throwNotNullViolation (const std::string &parquet_column_name)
 
static void validateNullCount (const std::string &parquet_column_name, int64_t null_count, const SQLTypeInfo &column_type)
 
- Protected Attributes inherited from foreign_storage::ParquetInPlaceEncoder
const size_t omnisci_data_type_byte_size_
 
- Protected Attributes inherited from foreign_storage::ParquetEncoder
Data_Namespace::AbstractBufferbuffer_
 

Detailed Description

template<typename V, typename T>
class foreign_storage::ParquetFixedLengthEncoder< V, T >

Definition at line 38 of file ParquetFixedLengthEncoder.h.

Constructor & Destructor Documentation

template<typename V , typename T >
foreign_storage::ParquetFixedLengthEncoder< V, T >::ParquetFixedLengthEncoder ( Data_Namespace::AbstractBuffer buffer,
const ColumnDescriptor column_desciptor,
const parquet::ColumnDescriptor *  parquet_column_descriptor 
)
inline

Definition at line 41 of file ParquetFixedLengthEncoder.h.

44  : TypedParquetInPlaceEncoder<V, T>(buffer,
45  column_desciptor,
46  parquet_column_descriptor) {}
template<typename V , typename T >
foreign_storage::ParquetFixedLengthEncoder< V, T >::ParquetFixedLengthEncoder ( Data_Namespace::AbstractBuffer buffer,
const size_t  omnisci_data_type_byte_size,
const size_t  parquet_data_type_byte_size 
)
inline

Definition at line 48 of file ParquetFixedLengthEncoder.h.

51  : TypedParquetInPlaceEncoder<V, T>(buffer,
52  omnisci_data_type_byte_size,
53  parquet_data_type_byte_size) {}

Member Function Documentation

template<typename V , typename T >
void foreign_storage::ParquetFixedLengthEncoder< V, T >::encodeAndCopy ( const int8_t *  parquet_data_bytes,
int8_t *  omnisci_data_bytes 
)
inlineoverridevirtual

Implements foreign_storage::ParquetScalarEncoder.

Definition at line 55 of file ParquetFixedLengthEncoder.h.

References omnisci.dtypes::T.

56  {
57  const auto& parquet_data_value = reinterpret_cast<const T*>(parquet_data_bytes)[0];
58  auto& omnisci_data_value = reinterpret_cast<V*>(omnisci_data_bytes)[0];
59  omnisci_data_value = parquet_data_value;
60  }
template<typename V , typename T >
bool foreign_storage::ParquetFixedLengthEncoder< V, T >::encodingIsIdentityForSameTypes ( ) const
inlineoverridevirtual

Reimplemented from foreign_storage::TypedParquetInPlaceEncoder< V, T >.

Definition at line 67 of file ParquetFixedLengthEncoder.h.

67 { return true; }
template<typename V , typename T >
void foreign_storage::ParquetFixedLengthEncoder< V, T >::validate ( std::shared_ptr< parquet::Statistics >  stats,
const SQLTypeInfo column_type 
) const
inlineoverridevirtual

Implements foreign_storage::ParquetMetadataValidator.

Definition at line 62 of file ParquetFixedLengthEncoder.h.

References foreign_storage::ParquetFixedLengthEncoder< V, T >::validateIntegralOrFloatingPointValue().

63  {
64  validateIntegralOrFloatingPointValue(stats, column_type);
65  }
void validateIntegralOrFloatingPointValue(std::shared_ptr< parquet::Statistics > stats, const SQLTypeInfo &column_type) const

+ Here is the call graph for this function:

template<typename V , typename T >
template<typename TT = T, std::enable_if_t<(!std::is_integral< TT >::value||std::is_same< TT, bool >::value)&&!std::is_floating_point< TT >::value, int > = 0>
void foreign_storage::ParquetFixedLengthEncoder< V, T >::validateIntegralOrFloatingPointValue ( std::shared_ptr< parquet::Statistics >  stats,
const SQLTypeInfo column_type 
) const
inlineprivate

Definition at line 75 of file ParquetFixedLengthEncoder.h.

Referenced by foreign_storage::ParquetFixedLengthEncoder< V, T >::validate().

76  {
77  // do nothing when type `T` is non-integral and non-floating-point (case
78  // for which this can happen are when `T` is bool)
79  }

+ Here is the caller graph for this function:

template<typename V , typename T >
template<typename TT = T, std::enable_if_t< std::is_floating_point< TT >::value, int > = 0>
void foreign_storage::ParquetFixedLengthEncoder< V, T >::validateIntegralOrFloatingPointValue ( std::shared_ptr< parquet::Statistics >  stats,
const SQLTypeInfo column_type 
) const
inlineprivate

Definition at line 82 of file ParquetFixedLengthEncoder.h.

References foreign_storage::TypedParquetInPlaceEncoder< V, T >::getUnencodedStats(), SQLTypeInfo::is_fp(), UNREACHABLE, and foreign_storage::FloatPointValidator< T >::validateValue().

83  {
84  auto [unencoded_stats_min, unencoded_stats_max] =
86  if (column_type.is_fp()) {
87  FloatPointValidator<T>::validateValue(unencoded_stats_max, column_type);
88  FloatPointValidator<T>::validateValue(unencoded_stats_min, column_type);
89  } else {
90  UNREACHABLE();
91  }
92  }
bool is_fp() const
Definition: sqltypes.h:492
#define UNREACHABLE()
Definition: Logger.h:241
static void validateValue(const D &data_value, const SQLTypeInfo &column_type)
std::pair< T, T > getUnencodedStats(std::shared_ptr< parquet::Statistics > stats) const

+ Here is the call graph for this function:

template<typename V , typename T >
template<typename TT = T, std::enable_if_t< std::is_integral< TT >::value &&!std::is_same< TT, bool >::value, int > = 0>
void foreign_storage::ParquetFixedLengthEncoder< V, T >::validateIntegralOrFloatingPointValue ( std::shared_ptr< parquet::Statistics >  stats,
const SQLTypeInfo column_type 
) const
inlineprivate

Definition at line 98 of file ParquetFixedLengthEncoder.h.

References foreign_storage::TypedParquetInPlaceEncoder< V, T >::getUnencodedStats(), SQLTypeInfo::is_integer(), SQLTypeInfo::is_timestamp(), foreign_storage::TimestampBoundsValidator< T >::validateValue(), and foreign_storage::IntegralFixedLengthBoundsValidator< T >::validateValue().

99  {
100  if (!column_type.is_integer() && !column_type.is_timestamp()) {
101  return;
102  }
103  auto [unencoded_stats_min, unencoded_stats_max] =
105  if (column_type.is_integer()) {
107  column_type);
109  column_type);
110  } else if (column_type.is_timestamp()) {
111  TimestampBoundsValidator<T>::validateValue(unencoded_stats_max, column_type);
112  TimestampBoundsValidator<T>::validateValue(unencoded_stats_min, column_type);
113  }
114  }
bool is_timestamp() const
Definition: sqltypes.h:742
static void validateValue(const D &data_value, const SQLTypeInfo &column_type)
bool is_integer() const
Definition: sqltypes.h:490
std::pair< T, T > getUnencodedStats(std::shared_ptr< parquet::Statistics > stats) const
static void validateValue(const D &data_value, const SQLTypeInfo &column_type)

+ Here is the call graph for this function:


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