Skip to content

Commit 4bf5e7a

Browse files
authored
Fix: Propagate table properties as options when creating views in BQ (#2517)
1 parent dc06db6 commit 4bf5e7a

File tree

2 files changed

+35
-0
lines changed

2 files changed

+35
-0
lines changed

sqlmesh/core/engine_adapter/bigquery.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -568,6 +568,8 @@ def _build_view_properties_exp(
568568
),
569569
)
570570

571+
properties.extend(self._table_properties_to_expressions(table_properties))
572+
571573
if properties:
572574
return exp.Properties(expressions=properties)
573575
return None

tests/core/engine_adapter/test_bigquery.py

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -719,3 +719,36 @@ def test_drop_schema(
719719
sql_calls = _to_sql_calls(execute_mock)
720720

721721
assert sql_calls == ensure_list(expected)
722+
723+
724+
def test_view_table_properties(make_mocked_engine_adapter: t.Callable, mocker: MockerFixture):
725+
adapter = make_mocked_engine_adapter(BigQueryEngineAdapter)
726+
execute_mock = mocker.patch(
727+
"sqlmesh.core.engine_adapter.bigquery.BigQueryEngineAdapter.execute"
728+
)
729+
730+
adapter.create_view(
731+
"test_table",
732+
parse_one("SELECT 1"),
733+
table_description="some description",
734+
table_properties={
735+
"labels": exp.Array(
736+
expressions=[
737+
exp.Tuple(
738+
expressions=[
739+
exp.Literal.string("test-label"),
740+
exp.Literal.string("label-value"),
741+
]
742+
)
743+
]
744+
),
745+
},
746+
)
747+
748+
adapter.create_view("test_table", parse_one("SELECT 1"), table_properties={})
749+
750+
sql_calls = _to_sql_calls(execute_mock)
751+
assert sql_calls == [
752+
"CREATE OR REPLACE VIEW `test_table` OPTIONS (description='some description', labels=[('test-label', 'label-value')]) AS SELECT 1",
753+
"CREATE OR REPLACE VIEW `test_table` AS SELECT 1",
754+
]

0 commit comments

Comments
 (0)