17 #ifndef OMNISCI_QUERYHINT_H
18 #define OMNISCI_QUERYHINT_H
23 #include <boost/algorithm/string.hpp>
88 : global_hint(global_hint), hint_name(hint_name){};
106 bool has_kv_type_options)
115 bool has_kv_type_options,
116 std::vector<std::string>& list_options)
126 bool has_kv_type_options,
127 std::unordered_map<std::string, std::string>& kv_options)
138 void setKVOptions(std::unordered_map<std::string, std::string>& kv_options) {
150 const std::unordered_map<std::string, std::string>&
getKVOptions()
const {
215 for (
int i = 0; i < num_hints; ++i) {
217 updated_query_hints.registered_hint.at(i) =
true;
218 switch (static_cast<QueryHint>(i)) {
220 updated_query_hints.cpu_mode =
true;
223 updated_query_hints.columnar_output =
true;
226 updated_query_hints.rowwise_output =
true;
232 updated_query_hints.cuda_grid_size_multiplier =
236 updated_query_hints.opt_cuda_grid_and_block_size =
true;
239 updated_query_hints.overlaps_bucket_threshold =
246 updated_query_hints.overlaps_allow_gpu_build =
true;
249 updated_query_hints.overlaps_no_cache =
true;
252 updated_query_hints.overlaps_keys_per_bin =
256 updated_query_hints.keep_result = global_hints.
keep_result;
259 updated_query_hints.keep_table_function_result =
263 updated_query_hints.aggregate_tree_fanout =
268 updated_query_hints.watchdog = global_hints.
watchdog;
279 updated_query_hints.use_loop_join = global_hints.
use_loop_join;
282 updated_query_hints.loop_join_inner_table_max_num_rows =
286 updated_query_hints.max_join_hash_table_size =
294 return updated_query_hints;
333 const auto lowered_hint_name = boost::algorithm::to_lower_copy(hint_name);
339 const auto identity = [](
const bool b) {
return b; };
344 const auto hint_class =
static_cast<int>(hint);
349 const auto hint_class =
static_cast<int>(hint);
355 using Hints = std::unordered_map<QueryHint, ExplainedQueryHint>;
357 #endif // OMNISCI_QUERYHINT_H
std::unordered_map< std::string, std::string > kv_options_
bool isGlobalHint() const
bool overlaps_allow_gpu_build
const std::vector< int > & getInteritPath() const
const std::unordered_map< std::string, std::string > & getKVOptions() const
void setListOptions(std::vector< std::string > &list_options)
double overlaps_keys_per_bin
std::optional< bool > dynamic_watchdog
double cuda_grid_size_multiplier
ExplainedQueryHint(QueryHint hint, bool global_hint, bool is_marker, bool has_kv_type_options)
std::vector< bool > registered_hint
void setKVOptions(std::unordered_map< std::string, std::string > &kv_options)
unsigned g_trivial_loop_join_threshold
ExplainedQueryHint(QueryHint hint, bool global_hint, bool is_marker, bool has_kv_type_options, std::vector< std::string > &list_options)
size_t max_join_hash_table_size
bool opt_cuda_grid_and_block_size
bool hasKvOptions() const
bool keep_table_function_result
static const std::unordered_map< std::string, QueryHint > SupportedQueryHints
static QueryHint translateQueryHint(const std::string &hint_name)
std::vector< std::string > list_options_
void registerHint(const QueryHint hint)
HintIdentifier(bool global_hint, const std::string &hint_name)
double g_overlaps_target_entries_per_bin
size_t g_overlaps_max_table_size_bytes
std::optional< bool > watchdog
static RegisteredQueryHint defaults()
bool isHintRegistered(const QueryHint hint) const
std::unordered_map< QueryHint, ExplainedQueryHint > Hints
std::optional< bool > use_loop_join
RegisteredQueryHint operator||(const RegisteredQueryHint &global_hints) const
bool g_enable_watchdog false
size_t loop_join_inner_table_max_num_rows
std::vector< int > inherit_paths_
bool has_kv_type_options_
bool any_of(std::vector< Analyzer::Expr * > const &target_exprs)
double overlaps_bucket_threshold
size_t aggregate_tree_fanout
const QueryHint getHint() const
const std::vector< std::string > & getListOptions() const
void setInheritPaths(std::vector< int > &interit_paths)
ExplainedQueryHint(QueryHint hint, bool global_hint, bool is_marker, bool has_kv_type_options, std::unordered_map< std::string, std::string > &kv_options)
bool isAnyQueryHintDelivered() const