17 #ifndef QUERYENGINE_OVERLAPSHASHTABLE_H
18 #define QUERYENGINE_OVERLAPSHASHTABLE_H
25 const std::vector<InputTableInfo>& query_infos,
27 const size_t entry_count,
30 const std::vector<InnerOuter>& inner_outer_pairs)
43 static std::shared_ptr<OverlapsJoinHashTable>
getInstance(
44 const std::shared_ptr<Analyzer::BinOper> condition,
45 const std::vector<InputTableInfo>& query_infos,
47 const int device_count,
53 std::string_view table1,
54 std::string_view column1,
55 std::string_view table2,
56 std::string_view column2,
58 const int device_count,
76 const int device_count,
77 std::vector<BaselineJoinHashTable::ColumnsForDevice>& columns_per_device);
80 size_t emitted_keys_count,
81 size_t entry_count)
const;
84 const std::deque<Fragmenter_Namespace::FragmentInfo>& fragments,
85 const int device_id)
override;
88 const std::vector<ColumnsForDevice>&)
const override;
95 const std::vector<JoinColumnTypeInfo>& join_column_types,
96 const std::vector<JoinBucketInfo>& join_bucket_info,
100 const std::vector<JoinColumnTypeInfo>& join_column_types,
101 const std::vector<JoinBucketInfo>& join_bucket_info,
103 const size_t key_component_width,
104 const size_t key_component_count,
105 const int device_id)
override;
115 const std::vector<InnerOuter>& inner_outer_pairs);
121 #endif // QUERYENGINE_OVERLAPSHASHTABLE_H
std::vector< double > bucket_sizes_for_dimension_
int initHashTableOnGpu(const std::vector< JoinColumn > &join_columns, const std::vector< JoinColumnTypeInfo > &join_column_types, const std::vector< JoinBucketInfo > &join_bucket_info, const JoinHashTableInterface::HashType layout, const size_t key_component_width, const size_t key_component_count, const int device_id) override
static std::mutex auto_tuner_cache_mutex_
static std::shared_ptr< OverlapsJoinHashTable > getInstance(const std::shared_ptr< Analyzer::BinOper > condition, const std::vector< InputTableInfo > &query_infos, const Data_Namespace::MemoryLevel memory_level, const int device_count, ColumnCacheMap &column_cache, Executor *executor)
Make hash table from an in-flight SQL query's parse tree etc.
double overlaps_hashjoin_bucket_threshold_
std::pair< size_t, size_t > calculateCounts(size_t shard_count, const Fragmenter_Namespace::TableInfo &query_info, const int device_count, std::vector< BaselineJoinHashTable::ColumnsForDevice > &columns_per_device)
int initHashTableOnCpu(const std::vector< JoinColumn > &join_columns, const std::vector< JoinColumnTypeInfo > &join_column_types, const std::vector< JoinBucketInfo > &join_bucket_info, const JoinHashTableInterface::HashType layout) override
static std::map< HashTableCacheKey, double > auto_tuner_cache_
size_t calculateHashTableSize(size_t number_of_dimensions, size_t emitted_keys_count, size_t entry_count) const
llvm::Value * codegenKey(const CompilationOptions &) override
ColumnsForDevice fetchColumnsForDevice(const std::deque< Fragmenter_Namespace::FragmentInfo > &fragments, const int device_id) override
static auto yieldCacheInvalidator() -> std::function< void()>
static std::shared_ptr< OverlapsJoinHashTable > getSyntheticInstance(std::string_view table1, std::string_view column1, std::string_view table2, std::string_view column2, const Data_Namespace::MemoryLevel memory_level, const int device_count, ColumnCacheMap &column_cache, Executor *executor)
Make hash table from named tables and columns (such as for testing).
~OverlapsJoinHashTable() override
void reifyWithLayout(const int device_count, const JoinHashTableInterface::HashType layout) override
size_t getKeyComponentCount() const override
std::pair< size_t, size_t > approximateTupleCount(const std::vector< ColumnsForDevice > &) const override
OverlapsJoinHashTable(const std::shared_ptr< Analyzer::BinOper > condition, const std::vector< InputTableInfo > &query_infos, const Data_Namespace::MemoryLevel memory_level, const size_t entry_count, ColumnCacheMap &column_cache, Executor *executor, const std::vector< InnerOuter > &inner_outer_pairs)
std::unordered_map< int, std::unordered_map< int, std::shared_ptr< const ColumnarResults > > > ColumnCacheMap
void computeBucketSizes(std::vector< double > &bucket_sizes_for_dimension, const JoinColumn &join_column, const std::vector< InnerOuter > &inner_outer_pairs)
size_t getKeyComponentWidth() const override