Skip to content

Commit 751c38d

Browse files
authored
Fix: Resolve physical tables correctly when the query optimization is disabled for a model (#5074)
1 parent 5ea134f commit 751c38d

File tree

2 files changed

+36
-3
lines changed

2 files changed

+36
-3
lines changed

sqlmesh/core/renderer.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -523,8 +523,6 @@ def render(
523523
runtime_stage, start, end, execution_time, *kwargs.values()
524524
)
525525

526-
needs_optimization = needs_optimization and self._optimize_query_flag
527-
528526
if should_cache and self._optimized_cache:
529527
query = self._optimized_cache
530528
else:
@@ -560,7 +558,7 @@ def render(
560558
)
561559
raise
562560

563-
if needs_optimization:
561+
if needs_optimization and self._optimize_query_flag:
564562
deps = d.find_tables(
565563
query, default_catalog=self._default_catalog, dialect=self._dialect
566564
)

tests/core/test_model.py

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11061,3 +11061,38 @@ def entrypoint(context, **kwargs):
1106111061

1106211062
assert model_daily is not None
1106311063
assert model_daily.cron == "@daily"
11064+
11065+
11066+
def test_render_query_optimize_query_false(assert_exp_eq, sushi_context):
11067+
snapshots = sushi_context.snapshots
11068+
11069+
model = sushi_context.get_model("sushi.top_waiters")
11070+
model = model.copy(update={"optimize_query": False})
11071+
11072+
upstream_model_version = sushi_context.get_snapshot("sushi.waiter_revenue_by_day").version
11073+
11074+
assert_exp_eq(
11075+
model.render_query(snapshots=snapshots).sql(),
11076+
f"""
11077+
WITH "test_macros" AS (
11078+
SELECT
11079+
2 AS "lit_two",
11080+
"revenue" * 2.0 AS "sql_exp",
11081+
CAST("revenue" AS TEXT) AS "sql_lit"
11082+
FROM "memory"."sqlmesh__sushi"."sushi__waiter_revenue_by_day__{upstream_model_version}" AS "waiter_revenue_by_day" /* memory.sushi.waiter_revenue_by_day */
11083+
)
11084+
SELECT
11085+
CAST("waiter_id" AS INT) AS "waiter_id",
11086+
CAST("revenue" AS DOUBLE) AS "revenue"
11087+
FROM "memory"."sqlmesh__sushi"."sushi__waiter_revenue_by_day__{upstream_model_version}" AS "waiter_revenue_by_day" /* memory.sushi.waiter_revenue_by_day */
11088+
WHERE
11089+
"event_date" = (
11090+
SELECT
11091+
MAX("event_date")
11092+
FROM "memory"."sqlmesh__sushi"."sushi__waiter_revenue_by_day__{upstream_model_version}" AS "waiter_revenue_by_day" /* memory.sushi.waiter_revenue_by_day */
11093+
)
11094+
ORDER BY
11095+
"revenue" DESC
11096+
LIMIT 10
11097+
""",
11098+
)

0 commit comments

Comments
 (0)