dbt-labs / dbt-labs/dbt-adapters

[Bug] Model reference and AS with `--empty` run fails

Open
#660 4 comments 1 reaction 0 assignees View on GitHub
pkg:dbt-postgres type:bug
Dominant language
Python
Stars
233
Forks
362
Avg merge
3d 22h
Merged PRs (30d)
9

Description

### Is this a new bug in dbt-core?

- [X] I believe this is a new bug in dbt-core
- [X] I have searched the existing issues, and I could not find an existing issue for this bug

### Current Behavior

I have a simple model that fails to create using the `--empty` flag in a `run` when there is a reference to another (simple) model and a `AS` statement.

### Expected Behavior

Using the `--empty` flag in the run command should not have any impact in this case.

### Steps To Reproduce

`bug.sql` file in `models` dir :
```
SELECT sometable.column FROM {{ref("somemodel")}} AS sometable
```

that depends on the `somemodel.sql` file in `models` dir :
```
SELECT column FROM table
```

`dbt run --empty` produces the following error :
![image](https://github.com/user-attachments/assets/03964259-d458-40f5-bb51-b14a9fd01e88)

I think that the problem comes from the auto generation of the underlying SQL request in the `target/run` directory :

```
create view "db"."schema_dev"."bug__dbt_tmp"


as (
SELECT sometable.column FROM (select * from "db"."schema_dev"."somemodel" where false limit 0) _dbt_limit_subq_somemodel AS sometable
);
```

Indeed an automatic table name is added (`_dbt_limit_subq_somemodel`). And as there is already a `AS` statement, it makes the whole request fails.

The bug is no more presen when a full run (i.e. without the `--empty` flag) is performed, as it creates a correct request as follow (`target/run`) :
```
create view "db"."schema_dev"."bug__dbt_tmp"


as (
SELECT sometable.column FROM "db"."schema_dev"."somemodel" AS sometable
);
```

Moreover, the problem is not present, with or without the `--empty` flag, when there is no model dependence. For example as with the following model named `nobug.sql` :
```
SELECT sometable.column FROM film AS sometable
```

It produces a correct request file in the `target/run` dir (same file generated with or without the `--empty` flag) :
```

create view "db"."schema_dev"."nobug__dbt_tmp"


as (
SELECT sometable.column FROM table AS sometable
);
```

### Relevant log output

_No response_

### Environment

```markdown
- OS:Ubuntu 22.04
- Python:3.10.3
- dbt:1.8.5
```

### Which database adapter are you using with dbt?

postgres

### Additional Context

It seems to fail with either a `ref` or a `source` dependence.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.