Ejemplo n.º 1
0
    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))
Ejemplo n.º 2
0
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}