24 #ifndef FIXED_LENGTH_ARRAY_NONE_ENCODER_H
25 #define FIXED_LENGTH_ARRAY_NONE_ENCODER_H
48 const size_t numAppendElems,
49 const size_t byteLimit,
50 const bool replicating =
false) {
52 if (dataSize > byteLimit) {
58 std::shared_ptr<ChunkMetadata>
appendData(int8_t*& src_data,
59 const size_t num_elems_to_append,
61 const bool replicating =
false,
62 const int64_t offset = -1)
override {
67 std::shared_ptr<ChunkMetadata>
appendData(
const std::vector<ArrayDatum>* srcData,
69 const size_t numAppendElems,
70 const bool replicating =
false) {
71 size_t data_size =
array_size * numAppendElems;
74 for (
size_t i = start_idx;
i < start_idx + numAppendElems;
i++) {
75 size_t len = (*srcData)[replicating ? 0 :
i].length;
93 auto chunk_metadata = std::make_shared<ChunkMetadata>();
95 return chunk_metadata;
98 void getMetadata(
const std::shared_ptr<ChunkMetadata>& chunkMetadata)
override {
105 auto chunk_metadata = std::make_shared<ChunkMetadata>(
107 return chunk_metadata;
116 void updateStats(
const int8_t*
const src_data,
const size_t num_elements)
override {
121 const size_t start_idx,
122 const size_t num_elements)
override {
127 const size_t start_idx,
128 const size_t num_elements)
override {
129 for (
size_t n = start_idx; n < start_idx + num_elements; n++) {
136 fwrite((int8_t*)&
num_elems_,
sizeof(
size_t), 1, f);
139 fwrite((int8_t*)&
has_nulls,
sizeof(
bool), 1, f);
145 fread((int8_t*)&
num_elems_,
sizeof(
size_t), 1, f);
148 fread((int8_t*)&
has_nulls,
sizeof(
bool), 1, f);
172 const bool* bool_array = (
bool*)array;
176 const int32_t* int_array = (int32_t*)array;
180 const int16_t* smallint_array = (int16_t*)array;
184 const int8_t* tinyint_array = (int8_t*)array;
190 const int64_t* bigint_array = (int64_t*)array;
194 const float* flt_array = (
float*)array;
198 const double* dbl_array = (
double*)array;
204 const int64_t* tm_array =
reinterpret_cast<int64_t*
>(array);
211 const int32_t* int_array = (int32_t*)array;
256 const bool* bool_array = (
bool*)array.pointer;
257 for (
size_t i = 0;
i < array.length /
sizeof(bool);
i++) {
279 const int32_t* int_array = (int32_t*)array.pointer;
280 for (
size_t i = 0;
i < array.length /
sizeof(int32_t);
i++) {
302 const int16_t* smallint_array = (int16_t*)array.pointer;
303 for (
size_t i = 0;
i < array.length /
sizeof(int16_t);
i++) {
325 const int8_t* tinyint_array = (int8_t*)array.pointer;
326 for (
size_t i = 0;
i < array.length /
sizeof(int8_t);
i++) {
350 const int64_t* bigint_array = (int64_t*)array.pointer;
351 for (
size_t i = 0;
i < array.length /
sizeof(int64_t);
i++) {
375 const float* flt_array = (
float*)array.pointer;
376 for (
size_t i = 0;
i < array.length /
sizeof(float);
i++) {
398 const double* dbl_array = (
double*)array.pointer;
399 for (
size_t i = 0;
i < array.length /
sizeof(double);
i++) {
423 const int64_t* tm_array =
reinterpret_cast<int64_t*
>(array.pointer);
424 for (
size_t i = 0;
i < array.length /
sizeof(int64_t);
i++) {
449 const int32_t* int_array = (int32_t*)array.pointer;
450 for (
size_t i = 0;
i < array.length /
sizeof(int32_t);
i++) {
471 #endif // FIXED_LENGTH_ARRAY_NONE_ENCODER_H
HOST DEVICE SQLTypes get_subtype() const
void updateStats(const int8_t *const src_data, const size_t num_elements) override
bool is_null(int8_t *array)
DecimalOverflowValidator decimal_overflow_validator_
#define NULL_ARRAY_SMALLINT
#define NULL_ARRAY_TINYINT
void updateMetadata(int8_t *array)
virtual void getMetadata(const std::shared_ptr< ChunkMetadata > &chunkMetadata)
void updateStats(const double, const bool) override
std::conditional_t< is_cuda_compiler(), DeviceArrayDatum, HostArrayDatum > ArrayDatum
FixedLengthArrayNoneEncoder(AbstractBuffer *buffer, size_t as)
void getMetadata(const std::shared_ptr< ChunkMetadata > &chunkMetadata) override
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
Data_Namespace::AbstractBuffer * buffer_
std::shared_ptr< ChunkMetadata > getMetadata(const SQLTypeInfo &ti) override
bool DatumEqual(const Datum a, const Datum b, const SQLTypeInfo &ti)
void copyMetadata(const Encoder *copyFromEncoder) override
size_t getNumElems() const
An AbstractBuffer is a unit of data management for a data manager.
void writeMetadata(FILE *f) override
void readMetadata(FILE *f) override
void updateStats(const std::vector< std::string > *const src_data, const size_t start_idx, const size_t num_elements) override
HOST DEVICE EncodingType get_compression() const
virtual void append(int8_t *src, const size_t num_bytes, const MemoryLevel src_buffer_type=CPU_LEVEL, const int device_id=-1)=0
SQLTypeInfo getSqlType() const
#define NULL_ARRAY_DOUBLE
void update_elem_stats(const ArrayDatum &array)
void reduceStats(const Encoder &) override
bool g_enable_watchdog false
void updateStats(const int64_t, const bool) override
#define NULL_ARRAY_BIGINT
static bool is_null(const SQLTypeInfo &type, int8_t *array)
void updateStats(const std::vector< ArrayDatum > *const src_data, const size_t start_idx, const size_t num_elements) override
#define NULL_ARRAY_BOOLEAN
HOST DEVICE bool get_notnull() const
size_t getNumElemsForBytesInsertData(const std::vector< ArrayDatum > *srcData, const int start_idx, const size_t numAppendElems, const size_t byteLimit, const bool replicating=false)
SQLTypeInfo get_elem_type() const
virtual void reserve(size_t num_bytes)=0
std::shared_ptr< ChunkMetadata > appendData(const std::vector< ArrayDatum > *srcData, const int start_idx, const size_t numAppendElems, const bool replicating=false)
bool resetChunkStats(const ChunkStats &stats) override
: Reset chunk level stats (min, max, nulls) using new values from the argument.