-
Notifications
You must be signed in to change notification settings - Fork 34
Open
Description
Issue Summary
dbt build model_name --empty executes select * from schema.model_name where false limit 0 statements.
These aren't valid in Synapse/T-SQL and return Incorrect syntax near 'limit'. errors.
Versions
dbt-core v1.8.9
dbt-synapse v1.8.1
Cause
SynapseRelation extends BaseRelation but doesn't override the default adapter's render_limited() class method, causing the above behaviour.
dbt-synapse/dbt/adapters/synapse/synapse_relation.py
Lines 10 to 11 in beedf08
| @dataclass(frozen=True, eq=False, repr=False) | |
| class SynapseRelation(BaseRelation): |
Possible fix
dbt-fabric has implemented a render_limited() class method that should work for Synapse as well
@classmethod
# from https://github.com/microsoft/dbt-fabric/blob/525fe95c960beb3c8dc0b34130111d6284aa3eab/dbt/adapters/fabric/fabric_relation.py#L20
def render_limited(self) -> str:
rendered = self.render()
if self.limit is None:
return rendered
elif self.limit == 0:
return f"(select * from {rendered} where 1=0) {self._render_limited_alias()}"
else:
return f"(select TOP {self.limit} * from {rendered}) {self._render_limited_alias()}"alittlesliceoftom
Metadata
Metadata
Assignees
Labels
No labels