17 #ifndef OMNISCI_QUERYHINT_H
18 #define OMNISCI_QUERYHINT_H
23 #include <boost/algorithm/string.hpp>
62 : global_hint(global_hint), hint_name(hint_name){};
73 bool has_kv_type_options)
82 bool has_kv_type_options,
83 std::vector<std::string>& list_options)
93 bool has_kv_type_options,
94 std::unordered_map<std::string, std::string>& kv_options)
105 void setKVOptions(std::unordered_map<std::string, std::string>& kv_options) {
168 for (
int i = 0; i < num_hints; ++i) {
170 updated_query_hints.registered_hint.at(i) = global_hints.
registered_hint[i];
173 updated_query_hints.cpu_mode =
true;
177 updated_query_hints.columnar_output =
true;
181 updated_query_hints.rowwise_output =
true;
185 updated_query_hints.overlaps_bucket_threshold =
194 updated_query_hints.overlaps_allow_gpu_build =
true;
198 updated_query_hints.overlaps_no_cache =
true;
202 updated_query_hints.overlaps_keys_per_bin =
207 updated_query_hints.keep_result = global_hints.
keep_result;
211 updated_query_hints.keep_table_function_result =
218 return updated_query_hints;
241 const auto lowered_hint_name = boost::algorithm::to_lower_copy(hint_name);
247 const auto identity = [](
const bool b) {
return b; };
252 const auto hint_class =
static_cast<int>(hint);
257 const auto hint_class =
static_cast<int>(hint);
263 using Hints = std::unordered_map<QueryHint, ExplainedQueryHint>;
265 #endif // OMNISCI_QUERYHINT_H
std::unordered_map< std::string, std::string > kv_options_
bool isGlobalHint() const
const std::vector< int > & getInteritPath()
bool overlaps_allow_gpu_build
void setListOptions(std::vector< std::string > &list_options)
double overlaps_keys_per_bin
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)
ExplainedQueryHint(QueryHint hint, bool global_hint, bool is_marker, bool has_kv_type_options, std::vector< std::string > &list_options)
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)
const std::vector< std::string > & getListOptions()
double g_overlaps_target_entries_per_bin
size_t g_overlaps_max_table_size_bytes
static RegisteredQueryHint defaults()
bool isHintRegistered(const QueryHint hint) const
std::unordered_map< QueryHint, ExplainedQueryHint > Hints
const std::unordered_map< std::string, std::string > & getKVOptions()
RegisteredQueryHint operator||(const RegisteredQueryHint &global_hints) const
bool g_enable_watchdog false
std::vector< int > inherit_paths_
bool has_kv_type_options_
double overlaps_bucket_threshold
const QueryHint getHint() 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