26 struct hash<std::vector<int>> {
28 return vec.size() ^ boost::hash_range(vec.begin(), vec.end());
33 struct hash<std::pair<int, int>> {
35 return boost::hash<std::pair<int, int>>()(p);
59 std::vector<std::shared_ptr<Chunk_NS::Chunk>>& chunks_owner,
66 const std::vector<Fragmenter_Namespace::FragmentInfo>& fragments,
70 std::vector<std::shared_ptr<Chunk_NS::Chunk>>& chunks_owner,
71 std::vector<std::shared_ptr<void>>& malloc_owner,
78 const std::map<int, const TableFragments*>& all_tables_fragments,
79 std::list<std::shared_ptr<Chunk_NS::Chunk>>& chunk_holder,
80 std::list<ChunkIter>& chunk_iter_holder,
88 const std::map<int, const TableFragments*>& all_tables_fragments,
118 mutable std::unordered_map<
120 std::unordered_map<CacheKey, std::unique_ptr<const ColumnarResults>>>
122 mutable std::unordered_map<InputColDescriptor, std::unique_ptr<const ColumnarResults>>
std::unordered_map< InputColDescriptor, std::unordered_map< CacheKey, std::unique_ptr< const ColumnarResults > > > columnarized_ref_table_cache_
size_t operator()(const std::vector< int > &vec) const
ColumnCacheMap columnarized_table_cache_
std::shared_ptr< ResultSet > ResultSetPtr
static JoinColumn makeJoinColumn(Executor *executor, const Analyzer::ColumnVar &hash_col, const std::vector< Fragmenter_Namespace::FragmentInfo > &fragments, const Data_Namespace::MemoryLevel effective_mem_lvl, const int device_id, DeviceAllocator *device_allocator, std::vector< std::shared_ptr< Chunk_NS::Chunk >> &chunks_owner, std::vector< std::shared_ptr< void >> &malloc_owner, ColumnCacheMap &column_cache)
Creates a JoinColumn struct containing an array of JoinChunk structs.
std::unordered_map< InputColDescriptor, std::unique_ptr< const ColumnarResults > > columnarized_scan_table_cache_
const int8_t * getOneTableColumnFragment(const int table_id, const int frag_id, const int col_id, const std::map< int, const TableFragments * > &all_tables_fragments, std::list< std::shared_ptr< Chunk_NS::Chunk >> &chunk_holder, std::list< ChunkIter > &chunk_iter_holder, const Data_Namespace::MemoryLevel memory_level, const int device_id, DeviceAllocator *device_allocator) const
std::mutex columnar_conversion_mutex_
const int8_t * getResultSetColumn(const InputColDescriptor *col_desc, const Data_Namespace::MemoryLevel memory_level, const int device_id, DeviceAllocator *device_allocator) const
Used by Fragmenter classes to store info about each fragment - the fragment id and number of tuples(r...
ColumnFetcher(Executor *executor, const ColumnCacheMap &column_cache)
const int8_t * getAllTableColumnFragments(const int table_id, const int col_id, const std::map< int, const TableFragments * > &all_tables_fragments, const Data_Namespace::MemoryLevel memory_level, const int device_id, DeviceAllocator *device_allocator) const
std::unordered_map< int, std::unordered_map< int, std::shared_ptr< const ColumnarResults >>> ColumnCacheMap
size_t operator()(const std::pair< int, int > &p) const
static const int8_t * transferColumnIfNeeded(const ColumnarResults *columnar_results, const int col_id, Data_Namespace::DataMgr *data_mgr, const Data_Namespace::MemoryLevel memory_level, const int device_id, DeviceAllocator *device_allocator)
Abstract class for managing device memory allocations.
std::vector< int > CacheKey
std::vector< std::vector< const int8_t * > > col_buffers
static std::pair< const int8_t *, size_t > getOneColumnFragment(Executor *executor, const Analyzer::ColumnVar &hash_col, const Fragmenter_Namespace::FragmentInfo &fragment, const Data_Namespace::MemoryLevel effective_mem_lvl, const int device_id, DeviceAllocator *device_allocator, std::vector< std::shared_ptr< Chunk_NS::Chunk >> &chunks_owner, ColumnCacheMap &column_cache)
Gets one chunk's pointer and element count on either CPU or GPU.
std::vector< std::vector< int64_t > > num_rows
std::vector< std::vector< uint64_t > > frag_offsets
Descriptor for the fragments required for an execution kernel.