Skip to content

Missing dry-run support (--empty) #263

@baldwicc

Description

@baldwicc

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.

@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()}"

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions