21 namespace foreign_storage {
37 template <
typename V,
typename T>
43 const parquet::ColumnDescriptor* parquet_column_descriptor)
46 parquet_column_descriptor) {}
49 const size_t omnisci_data_type_byte_size,
50 const size_t parquet_data_type_byte_size)
52 omnisci_data_type_byte_size,
53 parquet_data_type_byte_size) {}
56 int8_t* omnisci_data_bytes)
override {
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;
62 void validate(std::shared_ptr<parquet::Statistics> stats,
72 std::enable_if_t<(!std::is_integral<TT>::value || std::is_same<TT, bool>::value) &&
73 !std::is_floating_point<TT>::value,
81 template <typename TT = T, std::enable_if_t<std::is_floating_point<TT>::value,
int> = 0>
84 auto [unencoded_stats_min, unencoded_stats_max] =
86 if (column_type.
is_fp()) {
96 std::enable_if_t<std::is_integral<TT>::value && !std::is_same<TT, bool>::value,
103 auto [unencoded_stats_min, unencoded_stats_max] =
133 template <
typename V,
typename T,
typename U>
140 const parquet::ColumnDescriptor* parquet_column_descriptor)
143 parquet_column_descriptor) {}
146 const size_t omnisci_data_type_byte_size,
147 const size_t parquet_data_type_byte_size)
149 omnisci_data_type_byte_size,
150 parquet_data_type_byte_size) {}
153 int8_t* omnisci_data_bytes)
override {
154 const auto& parquet_data_value =
reinterpret_cast<const T*
>(parquet_data_bytes)[0];
155 auto& omnisci_data_value =
reinterpret_cast<V*
>(omnisci_data_bytes)[0];
156 omnisci_data_value =
static_cast<U
>(parquet_data_value);
159 void validate(std::shared_ptr<parquet::Statistics> stats,
164 auto [unencoded_stats_min, unencoded_stats_max] =
ParquetUnsignedFixedLengthEncoder(Data_Namespace::AbstractBuffer *buffer, const ColumnDescriptor *column_desciptor, const parquet::ColumnDescriptor *parquet_column_descriptor)
bool encodingIsIdentityForSameTypes() const override
bool is_timestamp() const
ParquetFixedLengthEncoder(Data_Namespace::AbstractBuffer *buffer, const ColumnDescriptor *column_desciptor, const parquet::ColumnDescriptor *parquet_column_descriptor)
static void validateValue(const D &data_value, const SQLTypeInfo &column_type)
ParquetUnsignedFixedLengthEncoder(Data_Namespace::AbstractBuffer *buffer, const size_t omnisci_data_type_byte_size, const size_t parquet_data_type_byte_size)
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
An AbstractBuffer is a unit of data management for a data manager.
specifies the content in-memory of a row in the column metadata table
void validate(std::shared_ptr< parquet::Statistics > stats, const SQLTypeInfo &column_type) const override
void validate(std::shared_ptr< parquet::Statistics > stats, const SQLTypeInfo &column_type) const override
void encodeAndCopy(const int8_t *parquet_data_bytes, int8_t *omnisci_data_bytes) override
static void validateValue(const D &data_value, const SQLTypeInfo &column_type)
std::pair< T, T > getUnencodedStats(std::shared_ptr< parquet::Statistics > stats) const
void validateIntegralOrFloatingPointValue(std::shared_ptr< parquet::Statistics > stats, const SQLTypeInfo &column_type) const
static void validateValue(const D &data_value, const SQLTypeInfo &column_type)