Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Errors re-running pipeline with foreign_key constraints #425

Open
sheluchin opened this issue Aug 14, 2024 · 1 comment
Open

Errors re-running pipeline with foreign_key constraints #425

sheluchin opened this issue Aug 14, 2024 · 1 comment

Comments

@sheluchin
Copy link

Hi all, I'm trying to understand why my run succeeds on the first try and fails on the second. It has something to do with the way I'm defining foreign keys. Here's a minimal repro:

$ tree models/test/
models/test/
├── bar.sql
├── baz.sql
├── foo.sql
└── schema.yml

-- foo.sql
{{ config(materialized='table') }}

select 1 as id, 2 as extra

-- bar.sql
{{ config(materialized='table') }}

select 100 as id, 200 as extra

-- baz.sql
{{ config(materialized='table') }}

select
	1000 as id,
	1 as foo_id,
	100 as bar_id,
	3000 as extra

-- schema.yml
version: 2

models:
  - name: foo
    config:
      contract:
        enforced: true
    columns:
      - name: id
        data_type: int
        data_tests:
          - unique
          - not_null
        constraints:
          - type: not_null
          - type: unique
          - type: primary_key
      - name: extra
        data_type: int
  - name: bar
    config:
      contract:
        enforced: true
    columns:
      - name: id
        data_type: int
        data_tests:
          - unique
          - not_null
        constraints:
          - type: not_null
          - type: unique
          - type: primary_key
      - name: extra
        data_type: int
  - name: baz
    config:
      contract:
        enforced: true
    columns:
      - name: id
        data_type: int
        data_tests:
          - unique
          - not_null
        constraints:
          - type: not_null
          - type: unique
          - type: primary_key
      - name: extra
        data_type: int
      - name: foo_id
        data_type: int
        data_tests:
          - not_null
        constraints:
          - type: not_null
          - type: foreign_key
            columns: [foo_id]
            expression: "foo (id)"
      - name: bar_id
        data_type: int
        data_tests:
          - not_null
        constraints:
          - type: not_null
          - type: foreign_key
            columns: [bar_id]
            expression: "bar (id)"

execution:

+12:37 $ dbt run -s test
16:37:55  Running with dbt=1.8.5
16:37:55  Registered adapter: duckdb=1.8.1
16:37:56  Found 8 models, 35 data tests, 408 macros
16:37:56
16:37:56  Concurrency: 1 threads (target='dev')
16:37:56
16:37:56  1 of 3 START sql table model main.bar .......................................... [RUN]
16:37:56  1 of 3 OK created sql table model main.bar ..................................... [OK in 0.23s]
16:37:56  2 of 3 START sql table model main.foo .......................................... [RUN]
16:37:56  2 of 3 OK created sql table model main.foo ..................................... [OK in 0.08s]
16:37:56  3 of 3 START sql table model main.baz .......................................... [RUN]
16:37:56  3 of 3 OK created sql table model main.baz ..................................... [OK in 0.09s]
16:37:56
16:37:56  Finished running 3 table models in 0 hours 0 minutes and 0.62 seconds (0.62s).
16:37:56
16:37:56  Completed successfully
16:37:56
16:37:56  Done. PASS=3 WARN=0 ERROR=0 SKIP=0 TOTAL=3

+12:37 $ dbt run -s test
16:38:01  Running with dbt=1.8.5
16:38:01  Registered adapter: duckdb=1.8.1
16:38:01  Found 8 models, 35 data tests, 408 macros
16:38:01
16:38:01  Concurrency: 1 threads (target='dev')
16:38:01
16:38:01  1 of 3 START sql table model main.bar .......................................... [RUN]
16:38:02  1 of 3 ERROR creating sql table model main.bar ................................. [ERROR in 0.17s]
16:38:02  2 of 3 START sql table model main.foo .......................................... [RUN]
16:38:02  2 of 3 ERROR creating sql table model main.foo ................................. [ERROR in 0.05s]
16:38:02  3 of 3 SKIP relation main.baz .................................................. [SKIP]
16:38:02
16:38:02  Finished running 3 table models in 0 hours 0 minutes and 0.45 seconds (0.45s).
16:38:02
16:38:02  Completed with 2 errors and 0 warnings:
16:38:02
16:38:02    Runtime Error in model bar (models/test/bar.sql)
  Cannot alter entry "bar" because there are entries that depend on it.
16:38:02
16:38:02    Runtime Error in model foo (models/test/foo.sql)
  Cannot alter entry "foo" because there are entries that depend on it.
16:38:02
16:38:02  Done. PASS=0 WARN=0 ERROR=2 SKIP=1 TOTAL=3

A little bit of discussion on this issue in the Slack thread.

Likely related to duckdb/duckdb#46 (comment).

@jwills
Copy link
Collaborator

jwills commented Aug 14, 2024

cc @matsonj

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants