36 const size_t numBytes,
37 const size_t numElems,
38 const bool pinnable) {
39 std::shared_ptr<Chunk> chunkp = std::make_shared<Chunk>(
Chunk(cd, pinnable));
40 chunkp->getChunkBuffer(data_mgr, key, memoryLevel, deviceId, numBytes, numElems);
47 const bool pinnable) {
48 std::shared_ptr<Chunk> chunkp = std::make_shared<Chunk>(
Chunk(cd, pinnable));
49 chunkp->setChunkBuffer(data_buffer, index_buffer);
56 const int device_id) {
61 indexKey.push_back(1);
114 const size_t num_bytes,
115 const size_t num_elems) {
119 data_key.push_back(1);
121 index_key.push_back(2);
123 data_mgr->
getChunkBuffer(data_key, mem_level, device_id, num_bytes),
125 index_key, mem_level, device_id, (num_elems + 1) *
sizeof(
StringOffsetT)));
137 const size_t page_size) {
152 const int8_t* index_data,
153 const std::vector<size_t>& selected_idx,
154 const size_t byte_limit) {
158 index_data, selected_idx, byte_limit);
162 const size_t num_elems,
163 const size_t start_idx,
164 const size_t byte_limit,
165 const bool replicating) {
173 src_data.
arraysPtr, start_idx, num_elems, byte_limit, replicating);
178 src_data.
arraysPtr, start_idx, num_elems, byte_limit, replicating);
187 src_data.
stringsPtr, start_idx, num_elems, byte_limit, replicating);
196 src_data.
stringsPtr, start_idx, num_elems, byte_limit, replicating);
205 const Chunk& src_chunk,
206 const std::vector<size_t>& selected_idx) {
209 const int8_t* index_buffer_ptr =
213 index_buffer_ptr, data_buffer_ptr, selected_idx);
217 const size_t num_elements,
218 const size_t start_idx) {
221 const int8_t* index_buffer_ptr =
225 index_buffer_ptr, data_buffer_ptr, start_idx, num_elements);
229 const size_t num_elems,
230 const size_t start_idx,
231 const bool replicating) {
233 if (ti.is_varlen()) {
234 switch (ti.get_type()) {
236 if (ti.get_size() > 0) {
240 src_data.
arraysPtr, start_idx, num_elems, replicating);
245 src_data.
arraysPtr, start_idx, num_elems, replicating);
254 src_data.
stringsPtr, start_idx, num_elems, replicating);
263 src_data.
stringsPtr, start_idx, num_elems, replicating);
270 src_data.
numbersPtr, num_elems, ti, replicating);
336 it.
num_elems = chunk_metadata->numElements;
341 const std::list<const ColumnDescriptor*>& colDescs,
342 std::vector<Chunk>& chunkVec) {
343 for (
auto cd : colDescs) {
344 chunkVec.emplace_back(cd);
AbstractBuffer * getIndexBuf() const
std::vector< int > ChunkKey
size_t getNumElemsForBytesInsertData(const std::vector< ArrayDatum > *srcData, const int start_idx, const size_t numAppendElems, const size_t byteLimit, const bool replicating=false)
HOST DEVICE int get_size() const
std::vector< std::string > * stringsPtr
std::vector< ArrayDatum > * arraysPtr
const ColumnDescriptor * column_desc_
virtual int8_t * getMemoryPtr()=0
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
void getChunkBuffer(DataMgr *data_mgr, const ChunkKey &key, const MemoryLevel mem_level, const int deviceId=0, const size_t num_bytes=0, const size_t num_elems=0)
std::shared_ptr< ChunkMetadata > appendEncodedDataAtIndices(const Chunk &src_chunk, const std::vector< size_t > &selected_idx)
void setChunkBuffer(AbstractBuffer *buffer, AbstractBuffer *index_buffer)
HOST DEVICE SQLTypes get_type() const
void initEncoder(const SQLTypeInfo &tmp_sql_type)
size_t getNumElemsForBytesInsertData(const std::vector< std::string > *srcData, const int start_idx, const size_t numAppendElems, const size_t byteLimit, const bool replicating=false)
virtual size_t getNumElemsForBytesEncodedDataAtIndices(const int8_t *index_data, const std::vector< size_t > &selected_idx, const size_t byte_limit)=0
bool is_fixlen_array() const
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
bool isChunkOnDevice(DataMgr *data_mgr, const ChunkKey &key, const MemoryLevel mem_level, const int device_id)
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 setIndexBuffer(AbstractBuffer *buf)
HOST DEVICE EncodingType get_compression() const
AbstractBuffer * getBuffer() const
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
bool isBufferOnDevice(const ChunkKey &key, const MemoryLevel memLevel, const int deviceId)
AbstractBuffer * getChunkBuffer(const ChunkKey &key, const MemoryLevel memoryLevel, const int deviceId=0, const size_t numBytes=0)
std::string typeName(const T *v)
unencoded fixed length array encoder
Encoder * getEncoder() const
size_t getNumElemsForBytesEncodedDataAtIndices(const int8_t *index_data, const std::vector< size_t > &selected_idx, const size_t byte_limit)
void setIndexBuffer(AbstractBuffer *buf)
std::shared_ptr< ChunkMetadata > appendEncodedData(const Chunk &src_chunk, const size_t num_elements, const size_t start_idx)
std::string toString() const
AbstractBuffer * createChunkBuffer(const ChunkKey &key, const MemoryLevel memoryLevel, const int deviceId=0, const size_t page_size=0)
size_t getNumElemsForBytesInsertData(const DataBlockPtr &src_data, const size_t num_elems, const size_t start_idx, const size_t byte_limit, const bool replicating=false)
ChunkIter begin_iterator(const std::shared_ptr< ChunkMetadata > &, int start_idx=0, int skip=1) const
void createChunkBuffer(DataMgr *data_mgr, const ChunkKey &key, const MemoryLevel mem_level, const int deviceId=0, const size_t page_size=0)
static std::shared_ptr< Chunk > getChunk(const ColumnDescriptor *cd, DataMgr *data_mgr, const ChunkKey &key, const MemoryLevel mem_level, const int deviceId, const size_t num_bytes, const size_t num_elems, const bool pinnable=true)
virtual std::shared_ptr< ChunkMetadata > appendEncodedDataAtIndices(const int8_t *index_data, int8_t *data, const std::vector< size_t > &selected_idx)=0
AbstractBuffer * index_buf_
size_t getNumElemsForBytesInsertData(const std::vector< ArrayDatum > *srcData, const int start_idx, const size_t numAppendElems, const size_t byteLimit, const bool replicating=false)
Chunk(bool pinnable=true)
virtual std::shared_ptr< ChunkMetadata > appendEncodedData(const int8_t *index_data, int8_t *data, const size_t start_idx, const size_t num_elements)=0
std::shared_ptr< ChunkMetadata > appendData(DataBlockPtr &srcData, const size_t numAppendElems, const size_t startIdx, const bool replicating=false)
static void translateColumnDescriptorsToChunkVec(const std::list< const ColumnDescriptor * > &colDescs, std::vector< Chunk > &chunkVec)
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