17 #ifndef NONE_ENCODER_H
18 #define NONE_ENCODER_H
27 return std::is_integral<T>::value ? inline_int_null_value<T>()
28 : inline_fp_null_value<T>();
36 ,
dataMin(std::numeric_limits<T>::max())
37 ,
dataMax(std::numeric_limits<T>::lowest())
41 const size_t numAppendElems,
43 const bool replicating =
false)
override {
44 T* unencodedData =
reinterpret_cast<T*
>(srcData);
45 std::vector<T> encoded_data;
47 encoded_data.resize(numAppendElems);
49 for (
size_t i = 0; i < numAppendElems; ++i) {
50 size_t ri = replicating ? 0 : i;
51 T data = unencodedData[ri];
53 encoded_data[i] = data;
55 if (data == none_encoded_null_value<T>()) {
65 replicating ? reinterpret_cast<int8_t*>(encoded_data.data()) : srcData,
66 numAppendElems *
sizeof(T));
70 srcData += numAppendElems *
sizeof(T);
84 return chunk_metadata;
92 const auto data =
static_cast<T
>(val);
103 const auto data =
static_cast<T
>(val);
111 const auto that_typed =
static_cast<const NoneEncoder&
>(that);
112 if (that_typed.has_nulls) {
121 fwrite((int8_t*)&
num_elems_,
sizeof(
size_t), 1, f);
122 fwrite((int8_t*)&
dataMin,
sizeof(T), 1, f);
123 fwrite((int8_t*)&
dataMax,
sizeof(T), 1, f);
124 fwrite((int8_t*)&
has_nulls,
sizeof(
bool), 1, f);
129 fread((int8_t*)&
num_elems_,
sizeof(
size_t), 1, f);
130 fread((int8_t*)&
dataMin,
sizeof(T), 1, f);
131 fread((int8_t*)&
dataMax,
sizeof(T), 1, f);
132 fread((int8_t*)&
has_nulls,
sizeof(
bool), 1, f);
136 const auto new_min = DatumFetcher::getDatumVal<T>(stats.
min);
137 const auto new_max = DatumFetcher::getDatumVal<T>(stats.
max);
151 auto castedEncoder =
reinterpret_cast<const NoneEncoder<T>*
>(copyFromEncoder);
152 dataMin = castedEncoder->dataMin;
153 dataMax = castedEncoder->dataMax;
163 #endif // NONE_ENCODER_H
ChunkMetadata getMetadata(const SQLTypeInfo &ti) override
void writeMetadata(FILE *f) override
DecimalOverflowValidator decimal_overflow_validator_
ChunkMetadata appendData(int8_t *&srcData, const size_t numAppendElems, const SQLTypeInfo &, const bool replicating=false) override
void updateStats(const int64_t val, const bool is_null) override
Data_Namespace::AbstractBuffer * buffer_
virtual void getMetadata(ChunkMetadata &chunkMetadata)
void getMetadata(ChunkMetadata &chunkMetadata) override
size_t getNumElems() const
An AbstractBuffer is a unit of data management for a data manager.
T none_encoded_null_value()
bool resetChunkStats(const ChunkStats &stats) override
: Reset chunk level stats (min, max, nulls) using new values from the argument.
bool is_null(const T &v, const SQLTypeInfo &t)
void updateStats(const double val, const bool is_null) override
virtual void append(int8_t *src, const size_t num_bytes, const MemoryLevel src_buffer_type=CPU_LEVEL, const int device_id=-1)=0
bool g_enable_watchdog false
NoneEncoder(Data_Namespace::AbstractBuffer *buffer)
void reduceStats(const Encoder &that) override
void copyMetadata(const Encoder *copyFromEncoder) override
void readMetadata(FILE *f) override