Skip to content

Commit 0a01c13

Browse files
committed
fix: prevent duplicate alias in --empty mode for inline ref/source
DatabricksRelation inherited require_alias=True from BaseRelation, causing render_limited() to inject a _dbt_limit_subq_* alias that conflicts with user-provided AS aliases when running dbt run --empty. Resolves dbt-labs/dbt-adapters#660 for Databricks, matching the fix already applied to Snowflake (dbt-snowflake#980) and BigQuery (dbt-bigquery#1190).
1 parent 2f11abb commit 0a01c13

4 files changed

Lines changed: 23 additions & 0 deletions

File tree

dbt/adapters/databricks/relation.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,7 @@ class DatabricksRelation(BaseRelation):
7272
quote_policy: Policy = field(default_factory=lambda: DatabricksQuotePolicy())
7373
include_policy: Policy = field(default_factory=lambda: DatabricksIncludePolicy())
7474
quote_character: str = "`"
75+
require_alias: bool = False
7576
is_delta: Optional[bool] = None
7677
create_constraints: list[TypedConstraint] = field(default_factory=list)
7778
alter_constraints: list[TypedConstraint] = field(default_factory=list)

tests/functional/adapter/empty/__init__.py

Whitespace-only changes.
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
from dbt.tests.adapter.empty.test_empty import BaseTestEmpty, BaseTestEmptyInlineSourceRef
2+
3+
4+
class TestDatabricksEmpty(BaseTestEmpty):
5+
pass
6+
7+
8+
class TestDatabricksEmptyInlineSourceRef(BaseTestEmptyInlineSourceRef):
9+
pass

tests/unit/test_relation.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -368,3 +368,16 @@ def test_render_constraints_for_create__with_constraints(
368368
relation.add_constraint(custom_constraint)
369369
relation.add_constraint(pk_constraint)
370370
assert relation.render_constraints_for_create() == "a > 1, PRIMARY KEY (a)"
371+
372+
373+
class TestDatabricksRenderLimited:
374+
def test_render_limited_with_empty_no_alias(self):
375+
relation = DatabricksRelation.create(
376+
database="test_catalog",
377+
schema="test_schema",
378+
identifier="test_model",
379+
limit=0,
380+
)
381+
result = relation.render_limited()
382+
expected = "(select * from `test_catalog`.`test_schema`.`test_model` where false limit 0)"
383+
assert result == expected

0 commit comments

Comments
 (0)