OmniSciDB
c1a53651b2
|
#include <OverlapsJoinHashTable.h>
Classes | |
struct | AlternativeCacheKeyForOverlapsHashJoin |
Public Member Functions | |
OverlapsJoinHashTable (const std::shared_ptr< Analyzer::BinOper > condition, const JoinType join_type, const std::vector< InputTableInfo > &query_infos, const Data_Namespace::MemoryLevel memory_level, ColumnCacheMap &column_cache, Executor *executor, const std::vector< InnerOuter > &inner_outer_pairs, const int device_count, const RegisteredQueryHint &query_hints, const HashTableBuildDagMap &hashtable_build_dag_map, const TableIdToNodeMap &table_id_to_node_map) | |
virtual | ~OverlapsJoinHashTable () |
![]() | |
virtual std::string | toStringFlat64 (const ExecutorDeviceType device_type, const int device_id) const |
virtual std::string | toStringFlat32 (const ExecutorDeviceType device_type, const int device_id) const |
JoinColumn | fetchJoinColumn (const Analyzer::ColumnVar *hash_col, const std::vector< Fragmenter_Namespace::FragmentInfo > &fragment_info, const Data_Namespace::MemoryLevel effective_memory_level, const int device_id, std::vector< std::shared_ptr< Chunk_NS::Chunk >> &chunks_owner, DeviceAllocator *dev_buff_owner, std::vector< std::shared_ptr< void >> &malloc_owner, Executor *executor, ColumnCacheMap *column_cache) |
HashTable * | getHashTableForDevice (const size_t device_id) const |
size_t | getJoinHashBufferSize (const ExecutorDeviceType device_type) |
size_t | getJoinHashBufferSize (const ExecutorDeviceType device_type, const int device_id) const |
int8_t * | getJoinHashBuffer (const ExecutorDeviceType device_type, const int device_id) const |
void | freeHashBufferMemory () |
Static Public Member Functions | |
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 JoinType join_type, const int device_count, ColumnCacheMap &column_cache, Executor *executor, const HashTableBuildDagMap &hashtable_build_dag_map, const RegisteredQueryHint &query_hint, const TableIdToNodeMap &table_id_to_node_map) |
Make hash table from an in-flight SQL query's parse tree etc. More... | |
static void | invalidateCache () |
static void | markCachedItemAsDirty (size_t table_key) |
static HashtableRecycler * | getHashTableCache () |
static OverlapsTuningParamRecycler * | getOverlapsTuningParamCache () |
![]() | |
static bool | layoutRequiresAdditionalBuffers (HashType layout) noexcept |
static std::string | getHashTypeString (HashType ht) noexcept |
static HashJoinMatchingSet | codegenMatchingSet (const std::vector< llvm::Value * > &hash_join_idx_args_in, const bool is_sharded, const bool col_is_nullable, const bool is_bw_eq, const int64_t sub_buff_size, Executor *executor, const bool is_bucketized=false) |
static llvm::Value * | codegenHashTableLoad (const size_t table_idx, Executor *executor) |
static std::shared_ptr< HashJoin > | getInstance (const std::shared_ptr< Analyzer::BinOper > qual_bin_oper, const std::vector< InputTableInfo > &query_infos, const Data_Namespace::MemoryLevel memory_level, const JoinType join_type, const HashType preferred_hash_type, const int device_count, ColumnCacheMap &column_cache, Executor *executor, const HashTableBuildDagMap &hashtable_build_dag_map, const RegisteredQueryHint &query_hint, const TableIdToNodeMap &table_id_to_node_map) |
Make hash table from an in-flight SQL query's parse tree etc. More... | |
static std::shared_ptr< HashJoin > | getSyntheticInstance (std::string_view table1, std::string_view column1, const Catalog_Namespace::Catalog &catalog1, std::string_view table2, std::string_view column2, const Catalog_Namespace::Catalog &catalog2, const Data_Namespace::MemoryLevel memory_level, const HashType preferred_hash_type, const int device_count, ColumnCacheMap &column_cache, Executor *executor) |
Make hash table from named tables and columns (such as for testing). More... | |
static std::shared_ptr< HashJoin > | getSyntheticInstance (const std::shared_ptr< Analyzer::BinOper > qual_bin_oper, const Data_Namespace::MemoryLevel memory_level, const HashType preferred_hash_type, const int device_count, ColumnCacheMap &column_cache, Executor *executor) |
Make hash table from named tables and columns (such as for testing). More... | |
static std::pair< std::string, std::shared_ptr< HashJoin > > | getSyntheticInstance (std::vector< std::shared_ptr< Analyzer::BinOper >>, const Data_Namespace::MemoryLevel memory_level, const HashType preferred_hash_type, const int device_count, ColumnCacheMap &column_cache, Executor *executor) |
static shared::TableKey | getInnerTableId (const std::vector< InnerOuter > &inner_outer_pairs) |
static bool | canAccessHashTable (bool allow_hash_table_recycling, bool invalid_cache_key, JoinType join_type) |
static void | checkHashJoinReplicationConstraint (const shared::TableKey &table_key, const size_t shard_count, const Executor *executor) |
static std::pair< InnerOuter, InnerOuterStringOpInfos > | normalizeColumnPair (const Analyzer::Expr *lhs, const Analyzer::Expr *rhs, const TemporaryTables *temporary_tables, const bool is_overlaps_join=false) |
template<typename T > | |
static const T * | getHashJoinColumn (const Analyzer::Expr *expr) |
static std::pair< std::vector < InnerOuter >, std::vector < InnerOuterStringOpInfos > > | normalizeColumnPairs (const Analyzer::BinOper *condition, const TemporaryTables *temporary_tables) |
static std::vector< int > | collectFragmentIds (const std::vector< Fragmenter_Namespace::FragmentInfo > &fragments) |
static CompositeKeyInfo | getCompositeKeyInfo (const std::vector< InnerOuter > &inner_outer_pairs, const Executor *executor, const std::vector< InnerOuterStringOpInfos > &inner_outer_string_op_infos_pairs={}) |
static std::vector< const StringDictionaryProxy::IdMap * > | translateCompositeStrDictProxies (const CompositeKeyInfo &composite_key_info, const std::vector< InnerOuterStringOpInfos > &string_op_infos_for_keys, const Executor *executor) |
static std::pair< const StringDictionaryProxy *, StringDictionaryProxy * > | getStrDictProxies (const InnerOuter &cols, const Executor *executor, const bool has_string_ops) |
static const StringDictionaryProxy::IdMap * | translateInnerToOuterStrDictProxies (const InnerOuter &cols, const InnerOuterStringOpInfos &inner_outer_string_op_infos, ExpressionRange &old_col_range, const Executor *executor) |
Protected Member Functions | |
void | reify (const HashType preferred_layout) |
virtual void | reifyWithLayout (const HashType layout) |
virtual 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::ThreadLocalIds parent_thread_local_ids) |
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) |
virtual std::pair< size_t, size_t > | approximateTupleCount (const std::vector< double > &inverse_bucket_sizes_for_dimension, std::vector< ColumnsForDevice > &, const size_t chosen_max_hashtable_size, const double chosen_bucket_threshold) |
virtual 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 noexceptoverride |
Data_Namespace::MemoryLevel | getMemoryLevel () const noexceptoverride |
int | getDeviceCount () const noexceptoverride |
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 &, const size_t) override |
std::string | toString (const ExecutorDeviceType device_type, const int device_id=0, bool raw=false) const override |
DecodedJoinHashBufferSet | toSet (const ExecutorDeviceType device_type, const int device_id) const override |
llvm::Value * | codegenSlot (const CompilationOptions &, const size_t) override |
const RegisteredQueryHint & | getRegisteredQueryHint () |
size_t | getEntryCount () const |
size_t | getEmittedKeysCount () const |
size_t | getComponentBufferSize () const noexceptoverride |
size_t | shardCount () const |
Data_Namespace::MemoryLevel | getEffectiveMemoryLevel (const std::vector< InnerOuter > &inner_outer_pairs) const |
shared::TableKey | getInnerTableId () const noexceptoverride |
int | getInnerTableRteIdx () const noexceptoverride |
size_t | getKeyBufferSize () const noexcept |
size_t | offsetBufferOff () const noexceptoverride |
size_t | countBufferOff () const noexceptoverride |
size_t | payloadBufferOff () const noexceptoverride |
std::string | getHashJoinType () const final |
bool | isBitwiseEq () const override |
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) |
void | putHashTableOnCpuToCache (QueryPlanHash key, CacheItemType item_type, std::shared_ptr< HashTable > hashtable_ptr, DeviceIdentifier device_identifier, size_t hashtable_building_time) |
llvm::Value * | codegenKey (const CompilationOptions &) |
std::vector< llvm::Value * > | codegenManyKey (const CompilationOptions &) |
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, std::vector< std::vector< Fragmenter_Namespace::FragmentInfo >> &fragments_per_device, int device_count) |
QueryPlanHash | getCacheKey (int device_id) 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 std::shared_ptr < Analyzer::BinOper > | condition_ |
const JoinType | join_type_ |
const std::vector < InputTableInfo > & | query_infos_ |
const Data_Namespace::MemoryLevel | memory_level_ |
Executor * | executor_ |
ColumnCacheMap & | column_cache_ |
std::vector< InnerOuter > | inner_outer_pairs_ |
const int | device_count_ |
RegisteredQueryHint | query_hints_ |
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_ |
HashTableBuildDagMap | hashtable_build_dag_map_ |
QueryPlanDAG | query_plan_dag_ |
std::vector< QueryPlanHash > | hashtable_cache_key_ |
HashtableCacheMetaInfo | hashtable_cache_meta_info_ |
std::unordered_set< size_t > | table_keys_ |
const TableIdToNodeMap | table_id_to_node_map_ |
![]() | |
std::vector< std::shared_ptr < HashTable > > | hash_tables_for_device_ |
Static Protected Attributes | |
static std::unique_ptr < HashtableRecycler > | hash_table_cache_ |
static std::unique_ptr < OverlapsTuningParamRecycler > | auto_tuner_cache_ |
Additional Inherited Members | |
![]() | |
static llvm::Value * | codegenColOrStringOper (const Analyzer::Expr *col_or_string_oper, const std::vector< StringOps_Namespace::StringOpInfo > &string_op_infos, CodeGenerator &code_generator, const CompilationOptions &co) |
Definition at line 24 of file OverlapsJoinHashTable.h.
|
inline |
Definition at line 26 of file OverlapsJoinHashTable.h.
References CHECK_GT, device_count_, and HashJoin::hash_tables_for_device_.
|
inlinevirtual |
Definition at line 52 of file OverlapsJoinHashTable.h.
|
protectedvirtual |
Reimplemented in RangeJoinHashTable.
Definition at line 979 of file OverlapsJoinHashTable.cpp.
References gpu_enabled::accumulate(), approximate_distinct_tuples_on_device_overlaps(), approximate_distinct_tuples_overlaps(), threading_serial::async(), Bitmap, CHECK, CHECK_EQ, CHECK_GT, CPU, DataRecyclerUtil::CPU_DEVICE_IDENTIFIER, Data_Namespace::CPU_LEVEL, cpu_threads(), device_count_, executor_, getApproximateTupleCountFromCache(), getEffectiveMemoryLevel(), getQueryEngineCudaStreamForDevice(), GPU, Data_Namespace::GPU_LEVEL, hashtable_cache_key_, hll_size(), hll_unify(), inner_outer_pairs_, OVERLAPS_HT, transfer_flat_object_to_gpu(), transfer_vector_of_flat_objects_to_gpu(), UNREACHABLE, and VLOG.
Referenced by computeHashTableCounts().
|
protected |
Definition at line 909 of file OverlapsJoinHashTable.cpp.
References getKeyComponentWidth().
Referenced by RangeJoinHashTable::reifyWithLayout(), and reifyWithLayout().
|
protected |
Definition at line 1469 of file OverlapsJoinHashTable.cpp.
References AUTOMATIC_IR_METADATA, CodeGenerator::castArrayPointer(), CHECK, CHECK_EQ, CodeGenerator::codegen(), executor_, Catalog_Namespace::get_metadata_for_column(), getKeyComponentCount(), getKeyComponentWidth(), inner_outer_pairs_, inverse_bucket_sizes_for_dimension_, kPOINT, kTINYINT, LL_BUILDER, LL_CONTEXT, LL_INT, CodeGenerator::posArg(), and UNREACHABLE.
Referenced by codegenMatchingSet().
|
protected |
Definition at line 1582 of file OverlapsJoinHashTable.cpp.
References AUTOMATIC_IR_METADATA, CHECK, CHECK_EQ, CodeGenerator::codegen(), executor_, Catalog_Namespace::get_metadata_for_column(), HashJoin::getHashTableForDevice(), getHashType(), getKeyComponentWidth(), inner_outer_pairs_, ManyToMany, CodeGenerator::posArg(), and VLOG.
Referenced by codegenMatchingSet().
|
overrideprotectedvirtual |
Implements HashJoin.
Definition at line 1628 of file OverlapsJoinHashTable.cpp.
References AUTOMATIC_IR_METADATA, CHECK, HashJoin::codegenHashTableLoad(), codegenKey(), codegenManyKey(), HashJoin::codegenMatchingSet(), executor_, get_int_array_type(), get_int_type(), getComponentBufferSize(), getEntryCount(), getHashType(), getKeyComponentCount(), getKeyComponentWidth(), inverse_bucket_sizes_for_dimension_, LL_BUILDER, LL_CONTEXT, LL_FP, LL_INT, ManyToMany, offsetBufferOff(), OneToMany, to_string(), UNREACHABLE, and VLOG.
|
inlineoverrideprotectedvirtual |
Implements HashJoin.
Definition at line 209 of file OverlapsJoinHashTable.h.
References UNREACHABLE.
|
protectedvirtual |
Definition at line 960 of file OverlapsJoinHashTable.cpp.
References approximateTupleCount(), CHECK, device_count_, get_entries_per_device(), and memory_level_.
Referenced by reifyWithLayout().
|
inlineoverrideprotectedvirtualnoexcept |
Implements HashJoin.
Definition at line 267 of file OverlapsJoinHashTable.h.
References getComponentBufferSize(), getHashType(), getKeyBufferSize(), HashJoin::layoutRequiresAdditionalBuffers(), and offsetBufferOff().
Referenced by payloadBufferOff(), toSet(), and toString().
|
protected |
Definition at line 922 of file OverlapsJoinHashTable.cpp.
References CHECK, column_cache_, executor_, HashJoin::fetchJoinColumn(), get_column_descriptor_maybe(), get_join_column_type_kind(), getEffectiveMemoryLevel(), and inner_outer_pairs_.
Referenced by RangeJoinHashTable::reifyWithLayout(), and reifyWithLayout().
|
inlineprotected |
Definition at line 339 of file OverlapsJoinHashTable.h.
References HashJoin::collectFragmentIds(), hash_table_cache_, hashtable_cache_key_, and table_keys_.
Referenced by RangeJoinHashTable::reifyWithLayout(), and reifyWithLayout().
|
inlineprotected |
Definition at line 320 of file OverlapsJoinHashTable.h.
References OverlapsJoinHashTable::AlternativeCacheKeyForOverlapsHashJoin::bucket_threshold, OverlapsJoinHashTable::AlternativeCacheKeyForOverlapsHashJoin::chunk_key_hash, OverlapsJoinHashTable::AlternativeCacheKeyForOverlapsHashJoin::inner_outer_pairs, OverlapsJoinHashTable::AlternativeCacheKeyForOverlapsHashJoin::inverse_bucket_sizes, OverlapsJoinHashTable::AlternativeCacheKeyForOverlapsHashJoin::max_hashtable_size, OverlapsJoinHashTable::AlternativeCacheKeyForOverlapsHashJoin::num_elements, and OverlapsJoinHashTable::AlternativeCacheKeyForOverlapsHashJoin::optype.
Referenced by RangeJoinHashTable::reifyWithLayout(), and reifyWithLayout().
|
protected |
Definition at line 1858 of file OverlapsJoinHashTable.cpp.
References CHECK, getOverlapsHashTableMetaInfo(), hash_table_cache_, and HashtableCacheMetaInfo::overlaps_meta_info.
Referenced by approximateTupleCount().
|
inlineprotected |
Definition at line 358 of file OverlapsJoinHashTable.h.
References hashtable_cache_key_.
|
inlineoverrideprotectedvirtualnoexcept |
Implements HashJoin.
Definition at line 228 of file OverlapsJoinHashTable.h.
References CHECK, and HashJoin::hash_tables_for_device_.
Referenced by codegenMatchingSet(), RangeJoinHashTable::codegenMatchingSetWithOffset(), countBufferOff(), and payloadBufferOff().
|
inlineoverrideprotectedvirtualnoexcept |
Implements HashJoin.
Definition at line 170 of file OverlapsJoinHashTable.h.
References device_count_.
|
protected |
Definition at line 1819 of file OverlapsJoinHashTable.cpp.
References Data_Namespace::CPU_LEVEL, executor_, Data_Namespace::GPU_LEVEL, RegisteredQueryHint::isHintRegistered(), kOverlapsAllowGpuBuild, memory_level_, RegisteredQueryHint::overlaps_allow_gpu_build, and query_hints_.
Referenced by approximateTupleCount(), fetchColumnsForDevice(), reifyForDevice(), RangeJoinHashTable::reifyWithLayout(), and reifyWithLayout().
|
inlineprotected |
Definition at line 222 of file OverlapsJoinHashTable.h.
References CHECK, and HashJoin::getHashTableForDevice().
|
inlineprotected |
Definition at line 216 of file OverlapsJoinHashTable.h.
References CHECK, and HashJoin::getHashTableForDevice().
Referenced by codegenMatchingSet(), RangeJoinHashTable::codegenMatchingSetWithOffset(), and getKeyBufferSize().
|
inlinefinalprotectedvirtual |
Implements HashJoin.
Definition at line 283 of file OverlapsJoinHashTable.h.
|
inlinestatic |
Definition at line 92 of file OverlapsJoinHashTable.h.
References CHECK, and hash_table_cache_.
Referenced by QueryRunner::QueryRunner::getCachedHashtableWithoutCacheKey(), QueryRunner::QueryRunner::getCacheItemMetric(), and QueryRunner::QueryRunner::getNumberOfCachedItem().
|
inlineoverrideprotectedvirtualnoexcept |
Implements HashJoin.
Reimplemented in RangeJoinHashTable.
Definition at line 157 of file OverlapsJoinHashTable.h.
References CHECK, HashJoin::getHashTableForDevice(), and layout_override_.
Referenced by codegenManyKey(), codegenMatchingSet(), countBufferOff(), getKeyBufferSize(), payloadBufferOff(), toSet(), and toString().
|
inlineprotected |
Definition at line 362 of file OverlapsJoinHashTable.h.
References inner_outer_pairs_.
Referenced by RangeJoinHashTable::isProbeCompressed().
|
overrideprotectedvirtualnoexcept |
Implements HashJoin.
Definition at line 1831 of file OverlapsJoinHashTable.cpp.
References CHECK, HashJoin::getInnerTableId(), and inner_outer_pairs_.
Referenced by RangeJoinHashTable::reifyWithLayout().
|
inlineoverrideprotectedvirtualnoexcept |
Implements HashJoin.
Definition at line 248 of file OverlapsJoinHashTable.h.
References CHECK, and inner_outer_pairs_.
|
static |
Make hash table from an in-flight SQL query's parse tree etc.
Definition at line 37 of file OverlapsJoinHashTable.cpp.
References CHECK, CHECK_EQ, get_inner_query_info(), HashJoin::getHashTypeString(), HashJoin::getInnerTableId(), RangeJoinHashTable::getInstance(), Fragmenter_Namespace::TableInfo::getNumTuplesUpperBound(), InputTableInfo::info, ManyToMany, HashJoin::normalizeColumnPairs(), OneToMany, VLOG, and VLOGGING.
Referenced by HashJoin::getInstance().
|
inlineprotectednoexcept |
Definition at line 254 of file OverlapsJoinHashTable.h.
References CHECK, getEntryCount(), getHashType(), getKeyComponentCount(), getKeyComponentWidth(), and HashJoin::layoutRequiresAdditionalBuffers().
Referenced by countBufferOff(), offsetBufferOff(), and payloadBufferOff().
|
protected |
Definition at line 1168 of file OverlapsJoinHashTable.cpp.
References CHECK, and inverse_bucket_sizes_for_dimension_.
Referenced by RangeJoinHashTable::codegenKey(), codegenKey(), codegenMatchingSet(), RangeJoinHashTable::codegenMatchingSetWithOffset(), getKeyBufferSize(), RangeJoinHashTable::initHashTableOnCpu(), initHashTableOnCpu(), toSet(), and toString().
|
protected |
Definition at line 1164 of file OverlapsJoinHashTable.cpp.
Referenced by calculateHashTableSize(), RangeJoinHashTable::codegenKey(), codegenKey(), codegenManyKey(), codegenMatchingSet(), RangeJoinHashTable::codegenMatchingSetWithOffset(), getKeyBufferSize(), RangeJoinHashTable::initHashTableOnCpu(), initHashTableOnCpu(), RangeJoinHashTable::reifyForDevice(), reifyForDevice(), toSet(), and toString().
|
inlineoverrideprotectedvirtualnoexcept |
Implements HashJoin.
Definition at line 166 of file OverlapsJoinHashTable.h.
References memory_level_.
|
inlineprotected |
Definition at line 306 of file OverlapsJoinHashTable.h.
References hashtable_cache_meta_info_, and HashtableCacheMetaInfo::overlaps_meta_info.
Referenced by getApproximateTupleCountFromCache(), initHashTableOnCpuFromCache(), and putHashTableOnCpuToCache().
|
inlinestatic |
Definition at line 97 of file OverlapsJoinHashTable.h.
References auto_tuner_cache_, and CHECK.
Referenced by QueryRunner::QueryRunner::getNumberOfCachedItem().
|
inlineprotected |
Definition at line 214 of file OverlapsJoinHashTable.h.
References query_hints_.
|
protected |
Definition at line 1297 of file OverlapsJoinHashTable.cpp.
References CHECK, composite_key_info_, DataRecyclerUtil::CPU_DEVICE_IDENTIFIER, cpu_hash_table_buff_mutex_, DEBUG_TIMER, getKeyComponentCount(), getKeyComponentWidth(), hashtable_cache_key_, BaselineJoinHashTableBuilder::initHashTableOnCpu(), initHashTableOnCpuFromCache(), join_type_, layout_override_, HashJoin::layoutRequiresAdditionalBuffers(), ManyToMany, OneToMany, OVERLAPS_HT, putHashTableOnCpuToCache(), query_hints_, to_string(), and VLOG.
Referenced by reifyForDevice().
|
protected |
Definition at line 1840 of file OverlapsJoinHashTable.cpp.
References CHECK, DEBUG_TIMER, getOverlapsHashTableMetaInfo(), hash_table_cache_, HashtableCacheMetaInfo::overlaps_meta_info, and VLOG.
Referenced by initHashTableOnCpu(), and RangeJoinHashTable::reifyWithLayout().
|
inlinestatic |
Definition at line 67 of file OverlapsJoinHashTable.h.
References auto_tuner_cache_, CHECK, and hash_table_cache_.
|
overrideprotectedvirtual |
Implements HashJoin.
Definition at line 1895 of file OverlapsJoinHashTable.cpp.
References condition_, and kBW_EQ.
|
inlinestatic |
Definition at line 75 of file OverlapsJoinHashTable.h.
References auto_tuner_cache_, CHECK, DataRecyclerUtil::CPU_DEVICE_IDENTIFIER, hash_table_cache_, OVERLAPS_AUTO_TUNER_PARAM, and OVERLAPS_HT.
|
inlineoverrideprotectedvirtualnoexcept |
Implements HashJoin.
Definition at line 265 of file OverlapsJoinHashTable.h.
References getKeyBufferSize().
Referenced by codegenMatchingSet(), RangeJoinHashTable::codegenMatchingSetWithOffset(), countBufferOff(), toSet(), and toString().
|
inlineoverrideprotectedvirtualnoexcept |
Implements HashJoin.
Definition at line 275 of file OverlapsJoinHashTable.h.
References countBufferOff(), getComponentBufferSize(), getHashType(), getKeyBufferSize(), and HashJoin::layoutRequiresAdditionalBuffers().
Referenced by toSet(), and toString().
|
protected |
Definition at line 1874 of file OverlapsJoinHashTable.cpp.
References CHECK, CPU, getOverlapsHashTableMetaInfo(), hash_table_cache_, HashtableCacheMetaInfo::overlaps_meta_info, and query_hints_.
Referenced by RangeJoinHashTable::initHashTableOnCpu(), and initHashTableOnCpu().
|
protected |
Definition at line 1173 of file OverlapsJoinHashTable.cpp.
References CHECK, CHECK_EQ, CHECK_LT, composite_key_info_, condition_, DEBUG_TIMER, device_count_, executor_, HashJoin::getCompositeKeyInfo(), inner_outer_pairs_, ManyToMany, OneToMany, reifyWithLayout(), and VLOG.
|
protected |
Definition at line 1240 of file OverlapsJoinHashTable.cpp.
References CHECK, CHECK_EQ, CHECK_LT, Data_Namespace::CPU_LEVEL, DEBUG_TIMER_NEW_THREAD, getEffectiveMemoryLevel(), getKeyComponentWidth(), Data_Namespace::GPU_LEVEL, HashJoin::hash_tables_for_device_, initHashTableOnCpu(), inner_outer_pairs_, ColumnsForDevice::join_buckets, ColumnsForDevice::join_column_types, ColumnsForDevice::join_columns, HashJoin::layoutRequiresAdditionalBuffers(), memory_level_, logger::ThreadLocalIds::setNewThreadId(), logger::ThreadLocalIds::thread_id_, UNREACHABLE, and VLOG.
Referenced by reifyImpl().
|
protectedvirtual |
Definition at line 1200 of file OverlapsJoinHashTable.cpp.
References threading_serial::async(), chosen_overlaps_bucket_threshold_, chosen_overlaps_max_table_size_bytes_, device_count_, Fragmenter_Namespace::TableInfo::fragments, inverse_bucket_sizes_for_dimension_, only_shards_for_device(), reifyForDevice(), setOverlapsHashtableMetaInfo(), and logger::thread_local_ids().
Referenced by reifyWithLayout().
|
protectedvirtual |
Reimplemented in RangeJoinHashTable.
Definition at line 534 of file OverlapsJoinHashTable.cpp.
References gpu_enabled::accumulate(), auto_tuner_cache_, CompositeKeyInfo::cache_key_chunks, calculateHashTableSize(), CHECK, CHECK_EQ, CHECK_GE, HashJoin::collectFragmentIds(), composite_key_info_, computeHashTableCounts(), condition_, DataRecyclerUtil::CPU_DEVICE_IDENTIFIER, DEBUG_TIMER, device_count_, executor_, fetchColumnsForDevice(), g_overlaps_max_table_size_bytes, g_overlaps_target_entries_per_bin, generateCacheKey(), get_inner_query_info(), getAlternativeCacheKey(), DataRecyclerUtil::getAlternativeTableKeys(), getEffectiveMemoryLevel(), HashtableRecycler::getHashtableAccessPathInfo(), HashJoin::getHashTypeString(), HashJoin::getInnerTableId(), getQueryEngineCudaStreamForDevice(), Data_Namespace::GPU_LEVEL, hash_table_cache_, hashtable_build_dag_map_, hashtable_cache_key_, hashtable_cache_meta_info_, InputTableInfo::info, inner_outer_pairs_, inverse_bucket_sizes_for_dimension_, RegisteredQueryHint::isHintRegistered(), HashtableRecycler::isInvalidHashTableCacheKey(), join_type_, kOverlapsAllowGpuBuild, kOverlapsBucketThreshold, kOverlapsKeysPerBin, kOverlapsMaxSize, kOverlapsNoCache, HashJoin::layoutRequiresAdditionalBuffers(), memory_level_, only_shards_for_device(), RegisteredQueryHint::overlaps_allow_gpu_build, OVERLAPS_AUTO_TUNER_PARAM, RegisteredQueryHint::overlaps_bucket_threshold, OVERLAPS_HT, RegisteredQueryHint::overlaps_keys_per_bin, RegisteredQueryHint::overlaps_max_size, query_hints_, query_infos_, reifyImpl(), setInverseBucketSizeInfo(), setOverlapsHashtableMetaInfo(), shardCount(), table_keys_, and VLOG.
Referenced by reify().
|
protected |
Definition at line 1148 of file OverlapsJoinHashTable.cpp.
References CHECK_EQ, inner_outer_pairs_, and inverse_bucket_sizes_for_dimension_.
Referenced by RangeJoinHashTable::reifyWithLayout(), and reifyWithLayout().
|
inlineprotected |
Definition at line 364 of file OverlapsJoinHashTable.h.
References OverlapsHashTableMetaInfo::bucket_sizes, hashtable_cache_meta_info_, OverlapsHashTableMetaInfo::overlaps_bucket_threshold, OverlapsHashTableMetaInfo::overlaps_max_table_size_bytes, and HashtableCacheMetaInfo::overlaps_meta_info.
Referenced by reifyImpl(), RangeJoinHashTable::reifyWithLayout(), and reifyWithLayout().
|
inlineprotected |
Definition at line 235 of file OverlapsJoinHashTable.h.
References condition_, executor_, BaselineJoinHashTable::getShardCountForCondition(), Data_Namespace::GPU_LEVEL, inner_outer_pairs_, and memory_level_.
Referenced by RangeJoinHashTable::reifyWithLayout(), and reifyWithLayout().
|
overrideprotectedvirtual |
Implements HashJoin.
Definition at line 1783 of file OverlapsJoinHashTable.cpp.
References CHECK, countBufferOff(), executor_, HashJoin::getHashTableForDevice(), getHashType(), HashJoin::getJoinHashBuffer(), getKeyComponentCount(), getKeyComponentWidth(), getQueryEngineCudaStreamForDevice(), GPU, offsetBufferOff(), OneToOne, payloadBufferOff(), and HashTable::toSet().
|
overrideprotectedvirtual |
Implements HashJoin.
Definition at line 1741 of file OverlapsJoinHashTable.cpp.
References CHECK, CHECK_LT, countBufferOff(), executor_, getHashType(), HashJoin::getHashTypeString(), HashJoin::getJoinHashBuffer(), getKeyComponentCount(), getKeyComponentWidth(), getQueryEngineCudaStreamForDevice(), GPU, HashJoin::hash_tables_for_device_, offsetBufferOff(), OneToOne, payloadBufferOff(), and HashTable::toString().
|
staticprotected |
Definition at line 407 of file OverlapsJoinHashTable.h.
Referenced by getOverlapsTuningParamCache(), invalidateCache(), markCachedItemAsDirty(), and reifyWithLayout().
|
protected |
Definition at line 389 of file OverlapsJoinHashTable.h.
Referenced by reifyImpl().
|
protected |
Definition at line 390 of file OverlapsJoinHashTable.h.
Referenced by reifyImpl().
|
protected |
Definition at line 382 of file OverlapsJoinHashTable.h.
Referenced by fetchColumnsForDevice().
|
protected |
Definition at line 391 of file OverlapsJoinHashTable.h.
Referenced by initHashTableOnCpu(), reify(), RangeJoinHashTable::reifyWithLayout(), and reifyWithLayout().
|
protected |
Definition at line 376 of file OverlapsJoinHashTable.h.
Referenced by isBitwiseEq(), reify(), RangeJoinHashTable::reifyWithLayout(), reifyWithLayout(), and shardCount().
|
protected |
Definition at line 396 of file OverlapsJoinHashTable.h.
Referenced by initHashTableOnCpu(), and RangeJoinHashTable::reifyWithLayout().
|
protected |
Definition at line 385 of file OverlapsJoinHashTable.h.
Referenced by RangeJoinHashTable::approximateTupleCount(), approximateTupleCount(), computeHashTableCounts(), RangeJoinHashTable::computeRangeHashTableCounts(), getDeviceCount(), OverlapsJoinHashTable(), reify(), reifyImpl(), RangeJoinHashTable::reifyWithLayout(), and reifyWithLayout().
|
protected |
Definition at line 381 of file OverlapsJoinHashTable.h.
Referenced by RangeJoinHashTable::approximateTupleCount(), approximateTupleCount(), RangeJoinHashTable::codegenKey(), codegenKey(), codegenManyKey(), codegenMatchingSet(), RangeJoinHashTable::codegenMatchingSetWithOffset(), fetchColumnsForDevice(), getEffectiveMemoryLevel(), RangeJoinHashTable::initHashTableOnCpu(), reify(), RangeJoinHashTable::reifyWithLayout(), reifyWithLayout(), shardCount(), toSet(), and toString().
|
staticprotected |
Definition at line 405 of file OverlapsJoinHashTable.h.
Referenced by generateCacheKey(), getApproximateTupleCountFromCache(), getHashTableCache(), initHashTableOnCpuFromCache(), invalidateCache(), markCachedItemAsDirty(), putHashTableOnCpuToCache(), RangeJoinHashTable::reifyWithLayout(), and reifyWithLayout().
|
protected |
Definition at line 409 of file OverlapsJoinHashTable.h.
Referenced by RangeJoinHashTable::reifyWithLayout(), and reifyWithLayout().
|
protected |
Definition at line 411 of file OverlapsJoinHashTable.h.
Referenced by approximateTupleCount(), generateCacheKey(), getCacheKey(), RangeJoinHashTable::initHashTableOnCpu(), initHashTableOnCpu(), RangeJoinHashTable::reifyWithLayout(), and reifyWithLayout().
|
protected |
Definition at line 412 of file OverlapsJoinHashTable.h.
Referenced by getOverlapsHashTableMetaInfo(), reifyWithLayout(), and setOverlapsHashtableMetaInfo().
|
protected |
Definition at line 384 of file OverlapsJoinHashTable.h.
Referenced by RangeJoinHashTable::approximateTupleCount(), approximateTupleCount(), RangeJoinHashTable::codegenKey(), codegenKey(), codegenManyKey(), fetchColumnsForDevice(), getInnerOuterPairs(), getInnerTableId(), getInnerTableRteIdx(), RangeJoinHashTable::initHashTableOnCpu(), reify(), reifyForDevice(), RangeJoinHashTable::reifyWithLayout(), reifyWithLayout(), setInverseBucketSizeInfo(), and shardCount().
|
protected |
Definition at line 388 of file OverlapsJoinHashTable.h.
Referenced by RangeJoinHashTable::codegenKey(), codegenKey(), codegenMatchingSet(), RangeJoinHashTable::computeRangeHashTableCounts(), getKeyComponentCount(), reifyImpl(), RangeJoinHashTable::reifyWithLayout(), reifyWithLayout(), and setInverseBucketSizeInfo().
|
protected |
Definition at line 377 of file OverlapsJoinHashTable.h.
Referenced by RangeJoinHashTable::initHashTableOnCpu(), initHashTableOnCpu(), RangeJoinHashTable::reifyWithLayout(), and reifyWithLayout().
|
protected |
Definition at line 394 of file OverlapsJoinHashTable.h.
Referenced by getHashType(), initHashTableOnCpu(), and RangeJoinHashTable::reifyWithLayout().
|
protected |
Definition at line 379 of file OverlapsJoinHashTable.h.
Referenced by computeHashTableCounts(), RangeJoinHashTable::computeRangeHashTableCounts(), getEffectiveMemoryLevel(), getMemoryLevel(), RangeJoinHashTable::reifyForDevice(), reifyForDevice(), RangeJoinHashTable::reifyWithLayout(), reifyWithLayout(), and shardCount().
|
protected |
Definition at line 386 of file OverlapsJoinHashTable.h.
Referenced by getEffectiveMemoryLevel(), getRegisteredQueryHint(), RangeJoinHashTable::initHashTableOnCpu(), initHashTableOnCpu(), putHashTableOnCpuToCache(), and reifyWithLayout().
|
protected |
Definition at line 378 of file OverlapsJoinHashTable.h.
Referenced by RangeJoinHashTable::reifyWithLayout(), and reifyWithLayout().
|
protected |
Definition at line 410 of file OverlapsJoinHashTable.h.
|
protected |
Definition at line 414 of file OverlapsJoinHashTable.h.
|
protected |
Definition at line 413 of file OverlapsJoinHashTable.h.
Referenced by generateCacheKey(), RangeJoinHashTable::reifyWithLayout(), and reifyWithLayout().