def process_query(self, query: Query, query_settings: QuerySettings) -> None: if not get_config(self.__killswitch, 1): return condition, cond_class = self.__get_reduced_and_classified_query_clause( query.get_condition(), query ) query.set_ast_condition(condition) if cond_class == ConditionClass.NOT_OPTIMIZABLE: return having_cond, having_cond_class = self.__get_reduced_and_classified_query_clause( query.get_having(), query ) query.set_ast_having(having_cond) if having_cond_class == ConditionClass.NOT_OPTIMIZABLE: return if not ( cond_class == ConditionClass.OPTIMIZABLE or having_cond_class == ConditionClass.OPTIMIZABLE ): return metrics.increment("optimizable_query") query.add_experiment("tags_hashmap_applied", 1) if condition is not None: query.set_ast_condition(condition.transform(self.__replace_with_hash)) if having_cond is not None: query.set_ast_having(having_cond.transform(self.__replace_with_hash))
def test_query_experiments() -> None: query = Query( Table("my_table", ColumnSet([])), limitby=LimitBy(100, [ Column( alias=None, table_name="my_table", column_name="environment") ]), limit=100, offset=50, granularity=60, ) query.set_experiments({"optimization1": True}) assert query.get_experiments() == {"optimization1": True} assert query.get_experiment_value("optimization1") == True assert query.get_experiment_value("optimization2") is None query.add_experiment("optimization2", "group1") assert query.get_experiment_value("optimization2") == "group1" query.set_experiments({"optimization3": 0.5}) assert query.get_experiments() == {"optimization3": 0.5}