From 30ebe3d247f2330a46823502367cbd764b556a52 Mon Sep 17 00:00:00 2001 From: Denis Bilenko Date: Sat, 17 Oct 2026 13:54:57 +0200 Subject: [PATCH 1/4] acc: record that dbt_task.schema gets no default Co-authored-by: Isaac --- .../dbt_task_schema_default/databricks.yml | 25 +++++++++++++++++++ .../dbt_task_schema_default/out.test.toml | 2 ++ .../dbt_task_schema_default/output.txt | 19 ++++++++++++++ .../validate/dbt_task_schema_default/script | 2 ++ 4 files changed, 48 insertions(+) create mode 100644 acceptance/bundle/validate/dbt_task_schema_default/databricks.yml create mode 100644 acceptance/bundle/validate/dbt_task_schema_default/out.test.toml create mode 100644 acceptance/bundle/validate/dbt_task_schema_default/output.txt create mode 100644 acceptance/bundle/validate/dbt_task_schema_default/script diff --git a/acceptance/bundle/validate/dbt_task_schema_default/databricks.yml b/acceptance/bundle/validate/dbt_task_schema_default/databricks.yml new file mode 100644 index 00000000000..81d01d3b4ff --- /dev/null +++ b/acceptance/bundle/validate/dbt_task_schema_default/databricks.yml @@ -0,0 +1,25 @@ +bundle: + name: test-bundle + +resources: + jobs: + my_job: + name: my job + tasks: + - task_key: dbt + existing_cluster_id: 0123-456789-abcdefgh + dbt_task: + commands: ["dbt run"] + - task_key: dbt_with_schema + existing_cluster_id: 0123-456789-abcdefgh + dbt_task: + commands: ["dbt run"] + schema: custom + - task_key: loop + for_each_task: + inputs: "[1]" + task: + task_key: loop_inner + existing_cluster_id: 0123-456789-abcdefgh + dbt_task: + commands: ["dbt run"] diff --git a/acceptance/bundle/validate/dbt_task_schema_default/out.test.toml b/acceptance/bundle/validate/dbt_task_schema_default/out.test.toml new file mode 100644 index 00000000000..a927a5fbc06 --- /dev/null +++ b/acceptance/bundle/validate/dbt_task_schema_default/out.test.toml @@ -0,0 +1,2 @@ +Cloud = false +EnvMatrix.DMS = ["", "true"] diff --git a/acceptance/bundle/validate/dbt_task_schema_default/output.txt b/acceptance/bundle/validate/dbt_task_schema_default/output.txt new file mode 100644 index 00000000000..5b6e8259387 --- /dev/null +++ b/acceptance/bundle/validate/dbt_task_schema_default/output.txt @@ -0,0 +1,19 @@ + +>>> [CLI] bundle validate -o json +[ + { + "task_key": "dbt", + "schema": null, + "inner_schema": null + }, + { + "task_key": "dbt_with_schema", + "schema": "custom", + "inner_schema": null + }, + { + "task_key": "loop", + "schema": null, + "inner_schema": null + } +] diff --git a/acceptance/bundle/validate/dbt_task_schema_default/script b/acceptance/bundle/validate/dbt_task_schema_default/script new file mode 100644 index 00000000000..b10835ff83f --- /dev/null +++ b/acceptance/bundle/validate/dbt_task_schema_default/script @@ -0,0 +1,2 @@ +# A dbt_task without a schema gets the default "default", also inside for_each_task; an explicit schema is kept. +trace $CLI bundle validate -o json | jq '[.resources.jobs.my_job.tasks[] | {task_key, schema: .dbt_task.schema, inner_schema: .for_each_task.task.dbt_task.schema}]' From 1a84a8405b9f7d159f0c1dab9631d0a96f8116f7 Mon Sep 17 00:00:00 2001 From: Denis Bilenko Date: Sat, 17 Oct 2026 13:59:50 +0200 Subject: [PATCH 2/4] Apply the dbt_task.schema default to job tasks The default pointed at resources.jobs.*.task[*], which is not a field, so dbt tasks without a schema never got "default". Co-authored-by: Isaac --- acceptance/bundle/paths/nominal/output.job.json | 3 ++- acceptance/bundle/resources/jobs/task-source/out.git_job.txt | 4 +++- acceptance/bundle/validate/dbt_task_schema_default/output.txt | 4 ++-- bundle/config/mutator/resourcemutator/resource_mutator.go | 4 ++-- 4 files changed, 9 insertions(+), 6 deletions(-) diff --git a/acceptance/bundle/paths/nominal/output.job.json b/acceptance/bundle/paths/nominal/output.job.json index b34dbcfa8eb..3ec8d661ec2 100644 --- a/acceptance/bundle/paths/nominal/output.job.json +++ b/acceptance/bundle/paths/nominal/output.job.json @@ -5,7 +5,8 @@ "dbt run", "dbt run" ], - "project_directory": "/Workspace/Users/[USERNAME]/.bundle/nominal/development/files/src/dbt_project" + "project_directory": "/Workspace/Users/[USERNAME]/.bundle/nominal/development/files/src/dbt_project", + "schema": "default" }, "job_cluster_key": "default", "task_key": "dbt_example" diff --git a/acceptance/bundle/resources/jobs/task-source/out.git_job.txt b/acceptance/bundle/resources/jobs/task-source/out.git_job.txt index 0a9a22942c8..323e80eb69f 100644 --- a/acceptance/bundle/resources/jobs/task-source/out.git_job.txt +++ b/acceptance/bundle/resources/jobs/task-source/out.git_job.txt @@ -22,6 +22,7 @@ "dbt run" ], "project_directory": "./dbt_project", + "schema": "default", "source": "GIT" }, "new_cluster": { @@ -109,7 +110,8 @@ "commands": [ "dbt run" ], - "project_directory": "/Workspace/Users/[USERNAME]/.bundle/task-source/default/files/dbt_project" + "project_directory": "/Workspace/Users/[USERNAME]/.bundle/task-source/default/files/dbt_project", + "schema": "default" }, "new_cluster": { "custom_tags": { diff --git a/acceptance/bundle/validate/dbt_task_schema_default/output.txt b/acceptance/bundle/validate/dbt_task_schema_default/output.txt index 5b6e8259387..b2d8a19755b 100644 --- a/acceptance/bundle/validate/dbt_task_schema_default/output.txt +++ b/acceptance/bundle/validate/dbt_task_schema_default/output.txt @@ -3,7 +3,7 @@ [ { "task_key": "dbt", - "schema": null, + "schema": "default", "inner_schema": null }, { @@ -14,6 +14,6 @@ { "task_key": "loop", "schema": null, - "inner_schema": null + "inner_schema": "default" } ] diff --git a/bundle/config/mutator/resourcemutator/resource_mutator.go b/bundle/config/mutator/resourcemutator/resource_mutator.go index 4d0b3bd47ab..730cc9e5b5f 100644 --- a/bundle/config/mutator/resourcemutator/resource_mutator.go +++ b/bundle/config/mutator/resourcemutator/resource_mutator.go @@ -74,8 +74,8 @@ func applyInitializeMutators(ctx context.Context, b *bundle.Bundle) { }}, // This is converted from single-task to multi-task - {"resources.jobs.*.task[*].dbt_task.schema", "default"}, - {"resources.jobs.*.task[*].for_each_task.task.dbt_task.schema", "default"}, + {"resources.jobs.*.tasks[*].dbt_task.schema", "default"}, + {"resources.jobs.*.tasks[*].for_each_task.task.dbt_task.schema", "default"}, // https://github.com/databricks/terraform-provider-databricks/blob/v1.75.0/clusters/resource_cluster.go {"resources.jobs.*.job_clusters[*].new_cluster.workload_type.clients.notebooks", true}, From f0bdea27a8bcfdaa1573298ca872e0b116d485d2 Mon Sep 17 00:00:00 2001 From: Denis Bilenko Date: Sat, 17 Oct 2026 14:00:30 +0200 Subject: [PATCH 3/4] Changelog Co-authored-by: Isaac --- .nextchanges/bundles/7097.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 .nextchanges/bundles/7097.md diff --git a/.nextchanges/bundles/7097.md b/.nextchanges/bundles/7097.md new file mode 100644 index 00000000000..66d4448ccdf --- /dev/null +++ b/.nextchanges/bundles/7097.md @@ -0,0 +1 @@ +* Job tasks with a `dbt_task` but no `schema` (including tasks inside `for_each_task`) now get the default schema `"default"`. ([#7097](https://github.com/databricks/cli/pull/7097)) From b12f129d43850994ee9bad95578627526dc81a9c Mon Sep 17 00:00:00 2001 From: Denis Bilenko Date: Mon, 19 Oct 2026 12:59:16 +0200 Subject: [PATCH 4/4] Remove the dbt_task.schema default instead of fixing its path The default pointed at resources.jobs.*.task[*], which never matched, so it has never been applied. Rather than activate it, remove it. It was copied from the Terraform provider (SetDefault("default")) in #2767 to mirror what terraform applied. The terraform engine is gone, and the API already documents "If not provided, the `default` schema is used". Applying it client-side would change the resolved config and request of every existing dbt task and add schema to tasks without a warehouse_id, where it is ignored. Drop the acceptance test and changelog fragment from the fix. Co-authored-by: Isaac --- .nextchanges/bundles/7097.md | 1 - .../bundle/paths/nominal/output.job.json | 3 +-- .../jobs/task-source/out.git_job.txt | 4 +-- .../dbt_task_schema_default/databricks.yml | 25 ------------------- .../dbt_task_schema_default/out.test.toml | 2 -- .../dbt_task_schema_default/output.txt | 19 -------------- .../validate/dbt_task_schema_default/script | 2 -- .../resourcemutator/resource_mutator.go | 4 --- 8 files changed, 2 insertions(+), 58 deletions(-) delete mode 100644 .nextchanges/bundles/7097.md delete mode 100644 acceptance/bundle/validate/dbt_task_schema_default/databricks.yml delete mode 100644 acceptance/bundle/validate/dbt_task_schema_default/out.test.toml delete mode 100644 acceptance/bundle/validate/dbt_task_schema_default/output.txt delete mode 100644 acceptance/bundle/validate/dbt_task_schema_default/script diff --git a/.nextchanges/bundles/7097.md b/.nextchanges/bundles/7097.md deleted file mode 100644 index 66d4448ccdf..00000000000 --- a/.nextchanges/bundles/7097.md +++ /dev/null @@ -1 +0,0 @@ -* Job tasks with a `dbt_task` but no `schema` (including tasks inside `for_each_task`) now get the default schema `"default"`. ([#7097](https://github.com/databricks/cli/pull/7097)) diff --git a/acceptance/bundle/paths/nominal/output.job.json b/acceptance/bundle/paths/nominal/output.job.json index 3ec8d661ec2..b34dbcfa8eb 100644 --- a/acceptance/bundle/paths/nominal/output.job.json +++ b/acceptance/bundle/paths/nominal/output.job.json @@ -5,8 +5,7 @@ "dbt run", "dbt run" ], - "project_directory": "/Workspace/Users/[USERNAME]/.bundle/nominal/development/files/src/dbt_project", - "schema": "default" + "project_directory": "/Workspace/Users/[USERNAME]/.bundle/nominal/development/files/src/dbt_project" }, "job_cluster_key": "default", "task_key": "dbt_example" diff --git a/acceptance/bundle/resources/jobs/task-source/out.git_job.txt b/acceptance/bundle/resources/jobs/task-source/out.git_job.txt index 323e80eb69f..0a9a22942c8 100644 --- a/acceptance/bundle/resources/jobs/task-source/out.git_job.txt +++ b/acceptance/bundle/resources/jobs/task-source/out.git_job.txt @@ -22,7 +22,6 @@ "dbt run" ], "project_directory": "./dbt_project", - "schema": "default", "source": "GIT" }, "new_cluster": { @@ -110,8 +109,7 @@ "commands": [ "dbt run" ], - "project_directory": "/Workspace/Users/[USERNAME]/.bundle/task-source/default/files/dbt_project", - "schema": "default" + "project_directory": "/Workspace/Users/[USERNAME]/.bundle/task-source/default/files/dbt_project" }, "new_cluster": { "custom_tags": { diff --git a/acceptance/bundle/validate/dbt_task_schema_default/databricks.yml b/acceptance/bundle/validate/dbt_task_schema_default/databricks.yml deleted file mode 100644 index 81d01d3b4ff..00000000000 --- a/acceptance/bundle/validate/dbt_task_schema_default/databricks.yml +++ /dev/null @@ -1,25 +0,0 @@ -bundle: - name: test-bundle - -resources: - jobs: - my_job: - name: my job - tasks: - - task_key: dbt - existing_cluster_id: 0123-456789-abcdefgh - dbt_task: - commands: ["dbt run"] - - task_key: dbt_with_schema - existing_cluster_id: 0123-456789-abcdefgh - dbt_task: - commands: ["dbt run"] - schema: custom - - task_key: loop - for_each_task: - inputs: "[1]" - task: - task_key: loop_inner - existing_cluster_id: 0123-456789-abcdefgh - dbt_task: - commands: ["dbt run"] diff --git a/acceptance/bundle/validate/dbt_task_schema_default/out.test.toml b/acceptance/bundle/validate/dbt_task_schema_default/out.test.toml deleted file mode 100644 index a927a5fbc06..00000000000 --- a/acceptance/bundle/validate/dbt_task_schema_default/out.test.toml +++ /dev/null @@ -1,2 +0,0 @@ -Cloud = false -EnvMatrix.DMS = ["", "true"] diff --git a/acceptance/bundle/validate/dbt_task_schema_default/output.txt b/acceptance/bundle/validate/dbt_task_schema_default/output.txt deleted file mode 100644 index b2d8a19755b..00000000000 --- a/acceptance/bundle/validate/dbt_task_schema_default/output.txt +++ /dev/null @@ -1,19 +0,0 @@ - ->>> [CLI] bundle validate -o json -[ - { - "task_key": "dbt", - "schema": "default", - "inner_schema": null - }, - { - "task_key": "dbt_with_schema", - "schema": "custom", - "inner_schema": null - }, - { - "task_key": "loop", - "schema": null, - "inner_schema": "default" - } -] diff --git a/acceptance/bundle/validate/dbt_task_schema_default/script b/acceptance/bundle/validate/dbt_task_schema_default/script deleted file mode 100644 index b10835ff83f..00000000000 --- a/acceptance/bundle/validate/dbt_task_schema_default/script +++ /dev/null @@ -1,2 +0,0 @@ -# A dbt_task without a schema gets the default "default", also inside for_each_task; an explicit schema is kept. -trace $CLI bundle validate -o json | jq '[.resources.jobs.my_job.tasks[] | {task_key, schema: .dbt_task.schema, inner_schema: .for_each_task.task.dbt_task.schema}]' diff --git a/bundle/config/mutator/resourcemutator/resource_mutator.go b/bundle/config/mutator/resourcemutator/resource_mutator.go index 730cc9e5b5f..02f1ba5f33b 100644 --- a/bundle/config/mutator/resourcemutator/resource_mutator.go +++ b/bundle/config/mutator/resourcemutator/resource_mutator.go @@ -73,10 +73,6 @@ func applyInitializeMutators(ctx context.Context, b *bundle.Bundle) { "enabled": dyn.V(true), }}, - // This is converted from single-task to multi-task - {"resources.jobs.*.tasks[*].dbt_task.schema", "default"}, - {"resources.jobs.*.tasks[*].for_each_task.task.dbt_task.schema", "default"}, - // https://github.com/databricks/terraform-provider-databricks/blob/v1.75.0/clusters/resource_cluster.go {"resources.jobs.*.job_clusters[*].new_cluster.workload_type.clients.notebooks", true}, {"resources.jobs.*.job_clusters[*].new_cluster.workload_type.clients.jobs", true},