Skip to content

Commit 228c223

Browse files
Merge pull request #13 from trygforsikring/release/v0.224.0
metadata changes to the master
2 parents 4f833af + adc5c11 commit 228c223

2 files changed

Lines changed: 66 additions & 13 deletions

File tree

sqlmesh/core/snapshot/evaluator.py

Lines changed: 21 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@
6666
SnapshotIdBatch,
6767
SnapshotInfoLike,
6868
SnapshotTableCleanupTask,
69+
SnapshotChangeCategory,
6970
)
7071
from sqlmesh.core.snapshot.execution_tracker import QueryExecutionTracker
7172
from sqlmesh.utils import random_id, CorrelationId, AttributeDict
@@ -2760,20 +2761,27 @@ def migrate(
27602761
**kwargs: t.Any,
27612762
) -> None:
27622763
logger.info("Migrating view '%s'", target_table_name)
2763-
model = snapshot.model
2764-
render_kwargs = dict(
2765-
execution_time=now(), snapshots=kwargs["snapshots"], engine_adapter=self.adapter
2766-
)
2764+
if (
2765+
snapshot.is_forward_only
2766+
or bool(snapshot.model.physical_version)
2767+
or not snapshot.virtual_environment_mode.is_full
2768+
or snapshot.change_category == SnapshotChangeCategory.INDIRECT_NON_BREAKING
2769+
or not self.adapter.COMMENT_CREATION_VIEW.is_unsupported
2770+
):
2771+
model = snapshot.model
2772+
render_kwargs = dict(
2773+
execution_time=now(), snapshots=kwargs["snapshots"], engine_adapter=self.adapter
2774+
)
27672775

2768-
self.adapter.create_view(
2769-
target_table_name,
2770-
model.render_query_or_raise(**render_kwargs),
2771-
model.columns_to_types,
2772-
materialized=self._is_materialized_view(model),
2773-
view_properties=model.render_physical_properties(**render_kwargs),
2774-
table_description=model.description,
2775-
column_descriptions=model.column_descriptions,
2776-
)
2776+
self.adapter.create_view(
2777+
target_table_name,
2778+
model.render_query_or_raise(**render_kwargs),
2779+
model.columns_to_types,
2780+
materialized=self._is_materialized_view(model),
2781+
view_properties=model.render_physical_properties(**render_kwargs),
2782+
table_description=model.description,
2783+
column_descriptions=model.column_descriptions,
2784+
)
27772785

27782786
# Apply grants after view migration
27792787
deployability_index = kwargs.get("deployability_index")

tests/core/test_snapshot_evaluator.py

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
DataObject,
2525
DataObjectType,
2626
InsertOverwriteStrategy,
27+
CommentCreationView,
2728
)
2829
from sqlmesh.core.environment import EnvironmentNamingInfo
2930
from sqlmesh.core.macros import RuntimeStage, macro, MacroEvaluator, MacroFunc
@@ -1519,6 +1520,50 @@ def test_migrate_view(
15191520
)
15201521

15211522

1523+
@pytest.mark.parametrize(
1524+
"change_category",
1525+
[
1526+
SnapshotChangeCategory.BREAKING,
1527+
SnapshotChangeCategory.NON_BREAKING,
1528+
SnapshotChangeCategory.METADATA,
1529+
],
1530+
)
1531+
def test_migrate_view_recreation_not_needed(
1532+
mocker: MockerFixture,
1533+
make_snapshot,
1534+
make_mocked_engine_adapter,
1535+
change_category: SnapshotChangeCategory,
1536+
):
1537+
model = SqlModel(
1538+
name="test_schema.test_model",
1539+
kind=ViewKind(),
1540+
description="my_description",
1541+
query=parse_one("SELECT c, a FROM tbl"),
1542+
)
1543+
snapshot = make_snapshot(model, version="1")
1544+
snapshot.change_category = change_category
1545+
snapshot.forward_only = False
1546+
1547+
adapter = make_mocked_engine_adapter(EngineAdapter)
1548+
adapter.COMMENT_CREATION_VIEW = CommentCreationView.UNSUPPORTED
1549+
adapter.with_settings = lambda **kwargs: adapter
1550+
mocker.patch(
1551+
"sqlmesh.core.engine_adapter.base.EngineAdapter.get_data_objects",
1552+
return_value=[
1553+
DataObject(
1554+
schema="sqlmesh__test_schema",
1555+
name=f"test_schema__test_model__{snapshot.version}",
1556+
type="view",
1557+
)
1558+
],
1559+
)
1560+
1561+
evaluator = SnapshotEvaluator(adapter)
1562+
evaluator.migrate([snapshot], {})
1563+
1564+
adapter.cursor.execute.assert_not_called()
1565+
1566+
15221567
def test_migrate_snapshot_data_object_type_mismatch(
15231568
mocker: MockerFixture,
15241569
make_snapshot,

0 commit comments

Comments
 (0)