OmniSciDB
a5dc49c757
|
#include <BoundingBoxIntersectJoinHashTable.h>
Classes | |
struct | AlternativeCacheKeyForBoundingBoxIntersection |
Public Member Functions | |
BoundingBoxIntersectJoinHashTable (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 | ~BoundingBoxIntersectJoinHashTable () |
Public Member Functions inherited from HashJoin | |
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 < BoundingBoxIntersectJoinHashTable > | 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 BoundingBoxIntersectTuningParamRecycler * | getBoundingBoxIntersectTuningParamCache () |
Static Public Member Functions inherited from HashJoin | |
static size_t | getMaximumNumHashEntriesCanHold (MemoryLevel memory_level, const Executor *executor, size_t rowid_size) noexcept |
static std::string | generateTooManyHashEntriesErrMsg (size_t num_entries, size_t threshold, MemoryLevel memory_level) |
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_bbox_intersect=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 BaselineHashTableEntryInfo hash_table_entry_info, 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 < BoundingBoxIntersectMetaInfo > | getBoundingBoxIntersectMetaInfo () |
QueryPlanHash | getAlternativeCacheKey (AlternativeCacheKeyForBoundingBoxIntersection &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 | setBoundingBoxIntersectionMetaInfo (size_t max_table_size_bytes, double bucket_threshold, std::vector< double > &bucket_sizes) |
Static Protected Attributes | |
static std::unique_ptr < HashtableRecycler > | hash_table_cache_ |
static std::unique_ptr < BoundingBoxIntersectTuningParamRecycler > | auto_tuner_cache_ |
Additional Inherited Members | |
Static Public Attributes inherited from HashJoin | |
static constexpr size_t | MAX_NUM_HASH_ENTRIES = size_t(1) << 31 |
Static Protected Member Functions inherited from HashJoin | |
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 29 of file BoundingBoxIntersectJoinHashTable.h.
|
inline |
Definition at line 31 of file BoundingBoxIntersectJoinHashTable.h.
References CHECK_GT, device_count_, and HashJoin::hash_tables_for_device_.
|
inlinevirtual |
Definition at line 57 of file BoundingBoxIntersectJoinHashTable.h.
|
protectedvirtual |
Reimplemented in RangeJoinHashTable.
Definition at line 1005 of file BoundingBoxIntersectJoinHashTable.cpp.
References gpu_enabled::accumulate(), approximate_distinct_tuples_bbox_intersect(), approximate_distinct_tuples_on_device_bbox_intersect(), threading_serial::async(), BBOX_INTERSECT_HT, 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_, transfer_flat_object_to_gpu(), transfer_vector_of_flat_objects_to_gpu(), UNREACHABLE, and VLOG.
Referenced by computeHashTableCounts().
|
protected |
Definition at line 933 of file BoundingBoxIntersectJoinHashTable.cpp.
References getKeyComponentWidth().
Referenced by RangeJoinHashTable::reifyWithLayout(), and reifyWithLayout().
|
protected |
Definition at line 1483 of file BoundingBoxIntersectJoinHashTable.cpp.
References AUTOMATIC_IR_METADATA, CodeGenerator::castArrayPointer(), CHECK, CHECK_EQ, CodeGenerator::codegen(), 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 1596 of file BoundingBoxIntersectJoinHashTable.cpp.
References AUTOMATIC_IR_METADATA, CHECK, CHECK_EQ, CodeGenerator::codegen(), 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 1642 of file BoundingBoxIntersectJoinHashTable.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_, kMaxBBoxOverlapsCount, 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 BoundingBoxIntersectJoinHashTable.h.
References UNREACHABLE.
|
protectedvirtual |
Definition at line 986 of file BoundingBoxIntersectJoinHashTable.cpp.
References approximateTupleCount(), CHECK, device_count_, get_entries_per_device(), and memory_level_.
Referenced by reifyWithLayout().
|
inlineoverrideprotectedvirtualnoexcept |
Implements HashJoin.
Definition at line 271 of file BoundingBoxIntersectJoinHashTable.h.
References getComponentBufferSize(), getHashType(), getKeyBufferSize(), HashJoin::layoutRequiresAdditionalBuffers(), and offsetBufferOff().
Referenced by payloadBufferOff(), toSet(), and toString().
|
protected |
Definition at line 947 of file BoundingBoxIntersectJoinHashTable.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 346 of file BoundingBoxIntersectJoinHashTable.h.
References HashJoin::collectFragmentIds(), hash_table_cache_, hash_value(), hashtable_cache_key_, and table_keys_.
Referenced by RangeJoinHashTable::reifyWithLayout(), and reifyWithLayout().
|
inlineprotected |
Definition at line 326 of file BoundingBoxIntersectJoinHashTable.h.
References BoundingBoxIntersectJoinHashTable::AlternativeCacheKeyForBoundingBoxIntersection::bucket_threshold, BoundingBoxIntersectJoinHashTable::AlternativeCacheKeyForBoundingBoxIntersection::chunk_key_hash, BoundingBoxIntersectJoinHashTable::AlternativeCacheKeyForBoundingBoxIntersection::inner_outer_pairs, BoundingBoxIntersectJoinHashTable::AlternativeCacheKeyForBoundingBoxIntersection::inverse_bucket_sizes, BoundingBoxIntersectJoinHashTable::AlternativeCacheKeyForBoundingBoxIntersection::max_hashtable_size, BoundingBoxIntersectJoinHashTable::AlternativeCacheKeyForBoundingBoxIntersection::num_elements, and BoundingBoxIntersectJoinHashTable::AlternativeCacheKeyForBoundingBoxIntersection::optype.
Referenced by RangeJoinHashTable::reifyWithLayout(), and reifyWithLayout().
|
protected |
Definition at line 1877 of file BoundingBoxIntersectJoinHashTable.cpp.
References HashtableCacheMetaInfo::bbox_intersect_meta_info, CHECK, getBoundingBoxIntersectMetaInfo(), and hash_table_cache_.
Referenced by approximateTupleCount().
|
inlineprotected |
Definition at line 312 of file BoundingBoxIntersectJoinHashTable.h.
References HashtableCacheMetaInfo::bbox_intersect_meta_info, and hashtable_cache_meta_info_.
Referenced by getApproximateTupleCountFromCache(), initHashTableOnCpuFromCache(), and putHashTableOnCpuToCache().
|
inlinestatic |
Definition at line 104 of file BoundingBoxIntersectJoinHashTable.h.
References auto_tuner_cache_, and CHECK.
Referenced by QueryRunner::QueryRunner::getNumberOfCachedItem(), and anonymous_namespace{DBHandler.cpp}::log_cache_size().
|
inlineprotected |
Definition at line 365 of file BoundingBoxIntersectJoinHashTable.h.
References hashtable_cache_key_.
|
inlineoverrideprotectedvirtualnoexcept |
Implements HashJoin.
Definition at line 230 of file BoundingBoxIntersectJoinHashTable.h.
References CHECK, and HashJoin::hash_tables_for_device_.
Referenced by codegenMatchingSet(), RangeJoinHashTable::codegenMatchingSetWithOffset(), countBufferOff(), and payloadBufferOff().
|
inlineoverrideprotectedvirtualnoexcept |
Implements HashJoin.
Definition at line 177 of file BoundingBoxIntersectJoinHashTable.h.
References device_count_.
|
protected |
Definition at line 1838 of file BoundingBoxIntersectJoinHashTable.cpp.
References RegisteredQueryHint::bbox_intersect_allow_gpu_build, Data_Namespace::CPU_LEVEL, Data_Namespace::GPU_LEVEL, RegisteredQueryHint::isHintRegistered(), kBBoxIntersectAllowGpuBuild, memory_level_, and query_hints_.
Referenced by approximateTupleCount(), fetchColumnsForDevice(), reifyForDevice(), RangeJoinHashTable::reifyWithLayout(), and reifyWithLayout().
|
inlineprotected |
Definition at line 224 of file BoundingBoxIntersectJoinHashTable.h.
References CHECK, and HashJoin::getHashTableForDevice().
|
inlineprotected |
Definition at line 218 of file BoundingBoxIntersectJoinHashTable.h.
References CHECK, and HashJoin::getHashTableForDevice().
Referenced by codegenMatchingSet(), RangeJoinHashTable::codegenMatchingSetWithOffset(), and getKeyBufferSize().
|
inlinefinalprotectedvirtual |
Implements HashJoin.
Definition at line 287 of file BoundingBoxIntersectJoinHashTable.h.
|
inlinestatic |
Definition at line 98 of file BoundingBoxIntersectJoinHashTable.h.
References CHECK, and hash_table_cache_.
Referenced by QueryRunner::QueryRunner::getCachedHashtableWithoutCacheKey(), QueryRunner::QueryRunner::getCacheItemMetric(), QueryRunner::QueryRunner::getNumberOfCachedItem(), anonymous_namespace{DBHandler.cpp}::log_cache_size(), and CommandLineOptions::parse_command_line().
|
inlineoverrideprotectedvirtualnoexcept |
Implements HashJoin.
Reimplemented in RangeJoinHashTable.
Definition at line 164 of file BoundingBoxIntersectJoinHashTable.h.
References CHECK, HashJoin::getHashTableForDevice(), and layout_override_.
Referenced by codegenManyKey(), codegenMatchingSet(), countBufferOff(), getKeyBufferSize(), payloadBufferOff(), toSet(), and toString().
|
inlineprotected |
Definition at line 369 of file BoundingBoxIntersectJoinHashTable.h.
References inner_outer_pairs_.
Referenced by RangeJoinHashTable::isProbeCompressed().
|
overrideprotectedvirtualnoexcept |
Implements HashJoin.
Definition at line 1850 of file BoundingBoxIntersectJoinHashTable.cpp.
References CHECK, HashJoin::getInnerTableId(), and inner_outer_pairs_.
Referenced by RangeJoinHashTable::reifyWithLayout().
|
inlineoverrideprotectedvirtualnoexcept |
Implements HashJoin.
Definition at line 250 of file BoundingBoxIntersectJoinHashTable.h.
References CHECK, and inner_outer_pairs_.
|
static |
Make hash table from an in-flight SQL query's parse tree etc.
Definition at line 40 of file BoundingBoxIntersectJoinHashTable.cpp.
References CHECK, CHECK_EQ, RegisteredQueryHint::force_baseline_hash_join, RegisteredQueryHint::force_one_to_many_hash_join, get_inner_query_info(), HashJoin::getHashTypeString(), HashJoin::getInnerTableId(), RangeJoinHashTable::getInstance(), Fragmenter_Namespace::TableInfo::getNumTuplesUpperBound(), InputTableInfo::info, logger::INFO, LOG, ManyToMany, HashJoin::MAX_NUM_HASH_ENTRIES, HashJoin::normalizeColumnPairs(), OneToMany, VLOG, and VLOGGING.
Referenced by HashJoin::getInstance().
|
inlineprotectednoexcept |
Definition at line 256 of file BoundingBoxIntersectJoinHashTable.h.
References CHECK, getEntryCount(), getHashType(), getKeyComponentCount(), getKeyComponentWidth(), and HashJoin::layoutRequiresAdditionalBuffers().
Referenced by countBufferOff(), offsetBufferOff(), and payloadBufferOff().
|
protected |
Definition at line 1196 of file BoundingBoxIntersectJoinHashTable.cpp.
References CHECK, and inverse_bucket_sizes_for_dimension_.
Referenced by RangeJoinHashTable::codegenKey(), codegenKey(), codegenMatchingSet(), RangeJoinHashTable::codegenMatchingSetWithOffset(), getKeyBufferSize(), RangeJoinHashTable::reifyForDevice(), reifyForDevice(), toSet(), and toString().
|
protected |
Definition at line 1192 of file BoundingBoxIntersectJoinHashTable.cpp.
Referenced by calculateHashTableSize(), RangeJoinHashTable::codegenKey(), codegenKey(), codegenManyKey(), codegenMatchingSet(), RangeJoinHashTable::codegenMatchingSetWithOffset(), getKeyBufferSize(), RangeJoinHashTable::reifyForDevice(), reifyForDevice(), toSet(), and toString().
|
inlineoverrideprotectedvirtualnoexcept |
Implements HashJoin.
Definition at line 173 of file BoundingBoxIntersectJoinHashTable.h.
References memory_level_.
|
inlineprotected |
Definition at line 214 of file BoundingBoxIntersectJoinHashTable.h.
References query_hints_.
|
protected |
Definition at line 1328 of file BoundingBoxIntersectJoinHashTable.cpp.
References BBOX_INTERSECT_HT, CHECK, composite_key_info_, DataRecyclerUtil::CPU_DEVICE_IDENTIFIER, cpu_hash_table_buff_mutex_, DEBUG_TIMER, executor_, HashTableEntryInfo::getHashTableLayout(), hashtable_cache_key_, BaselineJoinHashTableBuilder::initHashTableOnCpu(), initHashTableOnCpuFromCache(), join_type_, layout_override_, HashJoin::layoutRequiresAdditionalBuffers(), ManyToMany, OneToMany, putHashTableOnCpuToCache(), query_hints_, to_string(), and VLOG.
Referenced by reifyForDevice().
|
protected |
Definition at line 1859 of file BoundingBoxIntersectJoinHashTable.cpp.
References HashtableCacheMetaInfo::bbox_intersect_meta_info, CHECK, DEBUG_TIMER, getBoundingBoxIntersectMetaInfo(), hash_table_cache_, and VLOG.
Referenced by initHashTableOnCpu(), and RangeJoinHashTable::reifyWithLayout().
|
inlinestatic |
Definition at line 72 of file BoundingBoxIntersectJoinHashTable.h.
References auto_tuner_cache_, CHECK, and hash_table_cache_.
|
overrideprotectedvirtual |
Implements HashJoin.
Definition at line 1914 of file BoundingBoxIntersectJoinHashTable.cpp.
References condition_, and kBW_EQ.
|
inlinestatic |
Definition at line 80 of file BoundingBoxIntersectJoinHashTable.h.
References auto_tuner_cache_, BBOX_INTERSECT_AUTO_TUNER_PARAM, BBOX_INTERSECT_HT, CHECK, DataRecyclerUtil::CPU_DEVICE_IDENTIFIER, and hash_table_cache_.
|
inlineoverrideprotectedvirtualnoexcept |
Implements HashJoin.
Definition at line 267 of file BoundingBoxIntersectJoinHashTable.h.
References getKeyBufferSize().
Referenced by codegenMatchingSet(), RangeJoinHashTable::codegenMatchingSetWithOffset(), countBufferOff(), toSet(), and toString().
|
inlineoverrideprotectedvirtualnoexcept |
Implements HashJoin.
Definition at line 279 of file BoundingBoxIntersectJoinHashTable.h.
References countBufferOff(), getComponentBufferSize(), getHashType(), getKeyBufferSize(), and HashJoin::layoutRequiresAdditionalBuffers().
Referenced by toSet(), and toString().
|
protected |
Definition at line 1893 of file BoundingBoxIntersectJoinHashTable.cpp.
References HashtableCacheMetaInfo::bbox_intersect_meta_info, CHECK, CPU, getBoundingBoxIntersectMetaInfo(), hash_table_cache_, and query_hints_.
Referenced by RangeJoinHashTable::initHashTableOnCpu(), and initHashTableOnCpu().
|
protected |
Definition at line 1201 of file BoundingBoxIntersectJoinHashTable.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 1270 of file BoundingBoxIntersectJoinHashTable.cpp.
References CHECK, CHECK_EQ, CHECK_LT, Data_Namespace::CPU_LEVEL, DEBUG_TIMER_NEW_THREAD, getEffectiveMemoryLevel(), getKeyComponentCount(), 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 1229 of file BoundingBoxIntersectJoinHashTable.cpp.
References threading_serial::async(), chosen_bbox_intersect_bucket_threshold_, chosen_bbox_intersect_max_table_size_bytes_, device_count_, Fragmenter_Namespace::TableInfo::fragments, inverse_bucket_sizes_for_dimension_, only_shards_for_device(), reifyForDevice(), setBoundingBoxIntersectionMetaInfo(), and logger::thread_local_ids().
Referenced by reifyWithLayout().
|
protectedvirtual |
Reimplemented in RangeJoinHashTable.
Definition at line 553 of file BoundingBoxIntersectJoinHashTable.cpp.
References gpu_enabled::accumulate(), auto_tuner_cache_, RegisteredQueryHint::bbox_intersect_allow_gpu_build, BBOX_INTERSECT_AUTO_TUNER_PARAM, RegisteredQueryHint::bbox_intersect_bucket_threshold, BBOX_INTERSECT_HT, RegisteredQueryHint::bbox_intersect_keys_per_bin, RegisteredQueryHint::bbox_intersect_max_size, 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_bbox_intersect_max_table_size_bytes, g_bbox_intersect_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_, hash_value(), 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_, kBBoxIntersectAllowGpuBuild, kBBoxIntersectBucketThreshold, kBBoxIntersectKeysPerBin, kBBoxIntersectMaxSize, kBBoxIntersectNoCache, HashJoin::layoutRequiresAdditionalBuffers(), memory_level_, only_shards_for_device(), query_hints_, query_infos_, reifyImpl(), setBoundingBoxIntersectionMetaInfo(), setInverseBucketSizeInfo(), shardCount(), table_keys_, and VLOG.
Referenced by reify().
|
inlineprotected |
Definition at line 373 of file BoundingBoxIntersectJoinHashTable.h.
References BoundingBoxIntersectMetaInfo::bbox_intersect_bucket_threshold, BoundingBoxIntersectMetaInfo::bbox_intersect_max_table_size_bytes, HashtableCacheMetaInfo::bbox_intersect_meta_info, BoundingBoxIntersectMetaInfo::bucket_sizes, and hashtable_cache_meta_info_.
Referenced by reifyImpl(), RangeJoinHashTable::reifyWithLayout(), and reifyWithLayout().
|
protected |
Definition at line 1176 of file BoundingBoxIntersectJoinHashTable.cpp.
References CHECK_EQ, inner_outer_pairs_, and inverse_bucket_sizes_for_dimension_.
Referenced by RangeJoinHashTable::reifyWithLayout(), and reifyWithLayout().
|
inlineprotected |
Definition at line 237 of file BoundingBoxIntersectJoinHashTable.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 1802 of file BoundingBoxIntersectJoinHashTable.cpp.
References CHECK, countBufferOff(), HashJoin::getHashTableForDevice(), getHashType(), HashJoin::getJoinHashBuffer(), getKeyComponentCount(), getKeyComponentWidth(), getQueryEngineCudaStreamForDevice(), GPU, offsetBufferOff(), OneToOne, payloadBufferOff(), and HashTable::toSet().
|
overrideprotectedvirtual |
Implements HashJoin.
Definition at line 1756 of file BoundingBoxIntersectJoinHashTable.cpp.
References CHECK, CHECK_LT, countBufferOff(), getHashType(), HashJoin::getHashTypeString(), HashJoin::getJoinHashBuffer(), getKeyComponentCount(), getKeyComponentWidth(), getQueryEngineCudaStreamForDevice(), GPU, HashJoin::hash_tables_for_device_, offsetBufferOff(), OneToOne, payloadBufferOff(), and HashTable::toString().
|
staticprotected |
Definition at line 416 of file BoundingBoxIntersectJoinHashTable.h.
Referenced by getBoundingBoxIntersectTuningParamCache(), invalidateCache(), markCachedItemAsDirty(), and reifyWithLayout().
|
protected |
Definition at line 398 of file BoundingBoxIntersectJoinHashTable.h.
Referenced by reifyImpl().
|
protected |
Definition at line 399 of file BoundingBoxIntersectJoinHashTable.h.
Referenced by reifyImpl().
|
protected |
Definition at line 391 of file BoundingBoxIntersectJoinHashTable.h.
Referenced by fetchColumnsForDevice().
|
protected |
Definition at line 400 of file BoundingBoxIntersectJoinHashTable.h.
Referenced by initHashTableOnCpu(), reify(), RangeJoinHashTable::reifyWithLayout(), and reifyWithLayout().
|
protected |
Definition at line 385 of file BoundingBoxIntersectJoinHashTable.h.
Referenced by isBitwiseEq(), reify(), RangeJoinHashTable::reifyWithLayout(), reifyWithLayout(), and shardCount().
|
protected |
Definition at line 405 of file BoundingBoxIntersectJoinHashTable.h.
Referenced by initHashTableOnCpu(), and RangeJoinHashTable::reifyWithLayout().
|
protected |
Definition at line 394 of file BoundingBoxIntersectJoinHashTable.h.
Referenced by RangeJoinHashTable::approximateTupleCount(), approximateTupleCount(), BoundingBoxIntersectJoinHashTable(), computeHashTableCounts(), RangeJoinHashTable::computeRangeHashTableCounts(), getDeviceCount(), reify(), reifyImpl(), RangeJoinHashTable::reifyWithLayout(), and reifyWithLayout().
|
protected |
Definition at line 390 of file BoundingBoxIntersectJoinHashTable.h.
Referenced by RangeJoinHashTable::approximateTupleCount(), approximateTupleCount(), RangeJoinHashTable::codegenKey(), codegenMatchingSet(), RangeJoinHashTable::codegenMatchingSetWithOffset(), fetchColumnsForDevice(), RangeJoinHashTable::initHashTableOnCpu(), initHashTableOnCpu(), reify(), RangeJoinHashTable::reifyWithLayout(), reifyWithLayout(), and shardCount().
|
staticprotected |
Definition at line 414 of file BoundingBoxIntersectJoinHashTable.h.
Referenced by generateCacheKey(), getApproximateTupleCountFromCache(), getHashTableCache(), initHashTableOnCpuFromCache(), invalidateCache(), markCachedItemAsDirty(), putHashTableOnCpuToCache(), RangeJoinHashTable::reifyWithLayout(), and reifyWithLayout().
|
protected |
Definition at line 418 of file BoundingBoxIntersectJoinHashTable.h.
Referenced by RangeJoinHashTable::reifyWithLayout(), and reifyWithLayout().
|
protected |
Definition at line 420 of file BoundingBoxIntersectJoinHashTable.h.
Referenced by approximateTupleCount(), generateCacheKey(), getCacheKey(), RangeJoinHashTable::initHashTableOnCpu(), initHashTableOnCpu(), RangeJoinHashTable::reifyWithLayout(), and reifyWithLayout().
|
protected |
Definition at line 421 of file BoundingBoxIntersectJoinHashTable.h.
Referenced by getBoundingBoxIntersectMetaInfo(), reifyWithLayout(), and setBoundingBoxIntersectionMetaInfo().
|
protected |
Definition at line 393 of file BoundingBoxIntersectJoinHashTable.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 397 of file BoundingBoxIntersectJoinHashTable.h.
Referenced by RangeJoinHashTable::codegenKey(), codegenKey(), codegenMatchingSet(), RangeJoinHashTable::computeRangeHashTableCounts(), getKeyComponentCount(), reifyImpl(), RangeJoinHashTable::reifyWithLayout(), reifyWithLayout(), and setInverseBucketSizeInfo().
|
protected |
Definition at line 386 of file BoundingBoxIntersectJoinHashTable.h.
Referenced by RangeJoinHashTable::initHashTableOnCpu(), initHashTableOnCpu(), RangeJoinHashTable::reifyWithLayout(), and reifyWithLayout().
|
protected |
Definition at line 403 of file BoundingBoxIntersectJoinHashTable.h.
Referenced by getHashType(), initHashTableOnCpu(), and RangeJoinHashTable::reifyWithLayout().
|
protected |
Definition at line 388 of file BoundingBoxIntersectJoinHashTable.h.
Referenced by computeHashTableCounts(), RangeJoinHashTable::computeRangeHashTableCounts(), getEffectiveMemoryLevel(), getMemoryLevel(), RangeJoinHashTable::reifyForDevice(), reifyForDevice(), RangeJoinHashTable::reifyWithLayout(), reifyWithLayout(), and shardCount().
|
protected |
Definition at line 395 of file BoundingBoxIntersectJoinHashTable.h.
Referenced by getEffectiveMemoryLevel(), getRegisteredQueryHint(), RangeJoinHashTable::initHashTableOnCpu(), initHashTableOnCpu(), putHashTableOnCpuToCache(), and reifyWithLayout().
|
protected |
Definition at line 387 of file BoundingBoxIntersectJoinHashTable.h.
Referenced by RangeJoinHashTable::reifyWithLayout(), and reifyWithLayout().
|
protected |
Definition at line 419 of file BoundingBoxIntersectJoinHashTable.h.
|
protected |
Definition at line 423 of file BoundingBoxIntersectJoinHashTable.h.
|
protected |
Definition at line 422 of file BoundingBoxIntersectJoinHashTable.h.
Referenced by generateCacheKey(), RangeJoinHashTable::reifyWithLayout(), and reifyWithLayout().