Class OverlapsJoinHashTable¶
-
class
OverlapsJoinHashTable
: public HashJoin¶ Subclassed by RangeJoinHashTable
Public Static Functions
Make hash table from an in-flight SQL query’s parse tree etc.
-
static void
invalidateCache
()¶
-
static void
markCachedItemAsDirty
(size_t table_key)¶
-
static HashtableRecycler *
getHashTableCache
()¶
-
static OverlapsTuningParamRecycler *
getOverlapsTuningParamCache
()¶
Protected Functions
-
void
reify
(const HashType preferred_layout)¶
-
void
reifyWithLayout
(const HashType layout)¶
-
void
reifyImpl
(std::vector<ColumnsForDevice> &columns_per_device, const Fragmenter_Namespace::TableInfo &query_info, const HashType layout, const size_t shard_count, const size_t entry_count, const size_t emitted_keys_count, const bool skip_hashtable_caching, const size_t chosen_max_hashtable_size, const double chosen_bucket_threshold)¶
-
void
reifyForDevice
(const ColumnsForDevice &columns_for_device, const HashType layout, const size_t entry_count, const size_t emitted_keys_count, const bool skip_hashtable_caching, const int device_id, const logger::ThreadId parent_thread_id)¶
-
size_t
calculateHashTableSize
(size_t number_of_dimensions, size_t emitted_keys_count, size_t entry_count) const¶
-
ColumnsForDevice
fetchColumnsForDevice
(const std::vector<Fragmenter_Namespace::FragmentInfo> &fragments, const int device_id, DeviceAllocator *dev_buff_owner)¶
-
std::pair<size_t, size_t>
approximateTupleCount
(const std::vector<double> &inverse_bucket_sizes_for_dimension, std::vector<ColumnsForDevice> &columns_per_device, const size_t chosen_max_hashtable_size, const double chosen_bucket_threshold)¶
-
std::pair<size_t, size_t>
computeHashTableCounts
(const size_t shard_count, const std::vector<double> &inverse_bucket_sizes_for_dimension, std::vector<ColumnsForDevice> &columns_per_device, const size_t chosen_max_hashtable_size, const double chosen_bucket_threshold)¶
-
void
setInverseBucketSizeInfo
(const std::vector<double> &inverse_bucket_sizes, std::vector<ColumnsForDevice> &columns_per_device, const size_t device_count)¶
-
size_t
getKeyComponentWidth
() const¶
-
size_t
getKeyComponentCount
() const¶
-
HashType
getHashType
() const¶
-
Data_Namespace::MemoryLevel
getMemoryLevel
() const¶
-
int
getDeviceCount
() const¶
-
std::shared_ptr<BaselineHashTable>
initHashTableOnCpu
(const std::vector<JoinColumn> &join_columns, const std::vector<JoinColumnTypeInfo> &join_column_types, const std::vector<JoinBucketInfo> &join_bucket_info, const HashType layout, const size_t entry_count, const size_t emitted_keys_count, const bool skip_hashtable_caching)¶
-
HashJoinMatchingSet
codegenMatchingSet
(const CompilationOptions &co, const size_t index)¶
-
std::string
toString
(const ExecutorDeviceType device_type, const int device_id = 0, bool raw = false) const¶
-
std::set<DecodedJoinHashBufferEntry>
toSet
(const ExecutorDeviceType device_type, const int device_id) const¶
-
llvm::Value *
codegenSlot
(const CompilationOptions&, const size_t)¶
-
const RegisteredQueryHint &
getRegisteredQueryHint
()¶
-
void
registerQueryHint
(const RegisteredQueryHint &query_hint)¶
-
size_t
getEntryCount
() const¶
-
size_t
getEmittedKeysCount
() const¶
-
size_t
getComponentBufferSize
() const¶
-
size_t
shardCount
() const¶
-
Data_Namespace::MemoryLevel
getEffectiveMemoryLevel
(const std::vector<InnerOuter> &inner_outer_pairs) const¶
-
int
getInnerTableId
() const¶
-
int
getInnerTableRteIdx
() const¶
-
size_t
getKeyBufferSize
() const¶
-
size_t
offsetBufferOff
() const¶
-
size_t
countBufferOff
() const¶
-
size_t
payloadBufferOff
() const¶
-
std::string
getHashJoinType
() const¶
-
bool
isBitwiseEq
() const¶
-
std::shared_ptr<HashTable>
initHashTableOnCpuFromCache
(QueryPlanHash key, CacheItemType item_type, DeviceIdentifier device_identifier)¶
-
std::optional<std::pair<size_t, size_t>>
getApproximateTupleCountFromCache
(QueryPlanHash key, CacheItemType item_type, DeviceIdentifier device_identifier)¶
-
llvm::Value *
codegenKey
(const CompilationOptions &co)¶
-
std::vector<llvm::Value *>
codegenManyKey
(const CompilationOptions &co)¶
-
std::optional<OverlapsHashTableMetaInfo>
getOverlapsHashTableMetaInfo
()¶
-
QueryPlanHash
getAlternativeCacheKey
(AlternativeCacheKeyForOverlapsHashJoin &info)¶
-
void
generateCacheKey
(const size_t max_hashtable_size, const double bucket_threshold, const std::vector<double> &bucket_sizes)¶
-
QueryPlanHash
getCacheKey
() const¶
-
const std::vector<InnerOuter> &
getInnerOuterPairs
() const¶
-
void
setOverlapsHashtableMetaInfo
(size_t max_table_size_bytes, double bucket_threshold, std::vector<double> &bucket_sizes)¶
Protected Attributes
-
const JoinType
join_type_
¶
-
const std::vector<InputTableInfo> &
query_infos_
¶
-
const Data_Namespace::MemoryLevel
memory_level_
¶
-
ColumnCacheMap &
column_cache_
¶
-
std::vector<InnerOuter>
inner_outer_pairs_
¶
-
const int
device_count_
¶
-
std::vector<double>
inverse_bucket_sizes_for_dimension_
¶
-
double
chosen_overlaps_bucket_threshold_
¶
-
size_t
chosen_overlaps_max_table_size_bytes_
¶
-
CompositeKeyInfo
composite_key_info_
¶
-
std::optional<HashType>
layout_override_
¶
-
std::mutex
cpu_hash_table_buff_mutex_
¶
-
RegisteredQueryHint
query_hint_
¶
-
QueryPlanDAG
query_plan_dag_
¶
-
QueryPlanHash
hashtable_cache_key_
¶
-
HashtableCacheMetaInfo
hashtable_cache_meta_info_
¶
-
std::unordered_set<size_t>
table_keys_
¶
-
const TableIdToNodeMap
table_id_to_node_map_
¶
Protected Static Attributes
-
std::unique_ptr<HashtableRecycler>
hash_table_cache_
= std::make_unique<HashtableRecycler>(CacheItemType::OVERLAPS_HT, )¶
-
std::unique_ptr<OverlapsTuningParamRecycler>
auto_tuner_cache_
= std::make_unique<OverlapsTuningParamRecycler>()¶
-
struct
AlternativeCacheKeyForOverlapsHashJoin
¶