From 11847f073ad83535ad1554bebac59974b7459685 Mon Sep 17 00:00:00 2001 From: Trey Spiller Date: Fri, 26 Sep 2025 16:41:22 -0500 Subject: [PATCH] Add fields to target variable --- sqlmesh/dbt/target.py | 17 +++++++++++++-- tests/dbt/test_transformation.py | 36 +++++++++++++++++++++++++++++++- 2 files changed, 50 insertions(+), 3 deletions(-) diff --git a/sqlmesh/dbt/target.py b/sqlmesh/dbt/target.py index f5fd119027..c53c818933 100644 --- a/sqlmesh/dbt/target.py +++ b/sqlmesh/dbt/target.py @@ -45,11 +45,24 @@ # We only serialize a subset of fields in order to avoid persisting sensitive information SERIALIZABLE_FIELDS = { - "type", + # core "name", - "database", "schema_", + "type", + "threads", + # snowflake + "database", "warehouse", + "user", + "role", + "account", + # postgres/redshift + "dbname", + "host", + "port", + # bigquery + "project", + "dataset", } SCHEMA_DIFFER_OVERRIDES = { diff --git a/tests/dbt/test_transformation.py b/tests/dbt/test_transformation.py index 29651f9140..b9db817d29 100644 --- a/tests/dbt/test_transformation.py +++ b/tests/dbt/test_transformation.py @@ -1023,8 +1023,41 @@ def test_target_jinja(sushi_test_project: Project): user="user", password="password", warehouse="warehouse", + role="role", + threads=1, ) + assert context.render("{{ target.threads }}") == "1" + assert context.render("{{ target.database }}") == "test" assert context.render("{{ target.warehouse }}") == "warehouse" + assert context.render("{{ target.user }}") == "user" + assert context.render("{{ target.role }}") == "role" + assert context.render("{{ target.account }}") == "account" + + context = DbtContext() + context._target = PostgresConfig( + name="target", + schema="test", + database="test", + dbname="test", + host="host", + port=5432, + user="user", + password="password", + ) + assert context.render("{{ target.dbname }}") == "test" + assert context.render("{{ target.host }}") == "host" + assert context.render("{{ target.port }}") == "5432" + + context = DbtContext() + context._target = BigQueryConfig( + name="target", + schema="test", + database="test", + project="project", + dataset="dataset", + ) + assert context.render("{{ target.project }}") == "project" + assert context.render("{{ target.dataset }}") == "dataset" @pytest.mark.xdist_group("dbt_manifest") @@ -1965,8 +1998,9 @@ def test_snapshot_json_payload(): assert snapshot_json["node"]["jinja_macros"]["global_objs"]["target"] == { "type": "duckdb", "name": "in_memory", - "schema": "sushi", "database": "memory", + "schema": "sushi", + "threads": 1, "target_name": "in_memory", }