diff --git a/sqlmesh/core/renderer.py b/sqlmesh/core/renderer.py index dc89e15af6..8b733d4c55 100644 --- a/sqlmesh/core/renderer.py +++ b/sqlmesh/core/renderer.py @@ -523,8 +523,6 @@ def render( runtime_stage, start, end, execution_time, *kwargs.values() ) - needs_optimization = needs_optimization and self._optimize_query_flag - if should_cache and self._optimized_cache: query = self._optimized_cache else: @@ -560,7 +558,7 @@ def render( ) raise - if needs_optimization: + if needs_optimization and self._optimize_query_flag: deps = d.find_tables( query, default_catalog=self._default_catalog, dialect=self._dialect ) diff --git a/tests/core/test_model.py b/tests/core/test_model.py index b7c74f90a2..4c2f30e2f7 100644 --- a/tests/core/test_model.py +++ b/tests/core/test_model.py @@ -11061,3 +11061,38 @@ def entrypoint(context, **kwargs): assert model_daily is not None assert model_daily.cron == "@daily" + + +def test_render_query_optimize_query_false(assert_exp_eq, sushi_context): + snapshots = sushi_context.snapshots + + model = sushi_context.get_model("sushi.top_waiters") + model = model.copy(update={"optimize_query": False}) + + upstream_model_version = sushi_context.get_snapshot("sushi.waiter_revenue_by_day").version + + assert_exp_eq( + model.render_query(snapshots=snapshots).sql(), + f""" + WITH "test_macros" AS ( + SELECT + 2 AS "lit_two", + "revenue" * 2.0 AS "sql_exp", + CAST("revenue" AS TEXT) AS "sql_lit" + FROM "memory"."sqlmesh__sushi"."sushi__waiter_revenue_by_day__{upstream_model_version}" AS "waiter_revenue_by_day" /* memory.sushi.waiter_revenue_by_day */ + ) + SELECT + CAST("waiter_id" AS INT) AS "waiter_id", + CAST("revenue" AS DOUBLE) AS "revenue" + FROM "memory"."sqlmesh__sushi"."sushi__waiter_revenue_by_day__{upstream_model_version}" AS "waiter_revenue_by_day" /* memory.sushi.waiter_revenue_by_day */ + WHERE + "event_date" = ( + SELECT + MAX("event_date") + FROM "memory"."sqlmesh__sushi"."sushi__waiter_revenue_by_day__{upstream_model_version}" AS "waiter_revenue_by_day" /* memory.sushi.waiter_revenue_by_day */ + ) + ORDER BY + "revenue" DESC + LIMIT 10 + """, + )