Skip to content

Commit 2318ffc

Browse files
authored
Comment suppport mssql fabric fix (#5862)
Signed-off-by: Ujfalusi Sándor <ujfalusi.sandor@gmail.com>
1 parent 991a327 commit 2318ffc

3 files changed

Lines changed: 47 additions & 0 deletions

File tree

sqlmesh/core/engine_adapter/fabric.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@
99
from tenacity import retry, stop_after_attempt, wait_exponential, retry_if_result
1010
from sqlmesh.core.engine_adapter.mssql import MSSQLEngineAdapter
1111
from sqlmesh.core.engine_adapter.shared import (
12+
CommentCreationTable,
13+
CommentCreationView,
1214
InsertOverwriteStrategy,
1315
)
1416
from sqlmesh.utils.errors import SQLMeshError
@@ -30,6 +32,10 @@ class FabricEngineAdapter(MSSQLEngineAdapter):
3032
SUPPORTS_TRANSACTIONS = False
3133
SUPPORTS_CREATE_DROP_CATALOG = True
3234
INSERT_OVERWRITE_STRATEGY = InsertOverwriteStrategy.DELETE_INSERT
35+
# There is no standard method to handle comments in Fabric for now, so we disable it.
36+
# Otherwise, it would be inherited from MSSQL and would not work.
37+
COMMENT_CREATION_TABLE = CommentCreationTable.UNSUPPORTED
38+
COMMENT_CREATION_VIEW = CommentCreationView.UNSUPPORTED
3339

3440
def __init__(
3541
self, connection_factory_or_pool: t.Union[t.Callable, t.Any], *args: t.Any, **kwargs: t.Any

tests/core/engine_adapter/test_fabric.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -286,3 +286,23 @@ def test_merge_exists(
286286
f"MERGE INTO [target] AS [__MERGE_TARGET__] USING (SELECT CAST([id] AS INT) AS [id], CAST([ts] AS DATETIME2(6)) AS [ts] FROM [__temp_target_{temp_table_id}]) AS [__MERGE_SOURCE__] ON [__MERGE_TARGET__].[id] = [__MERGE_SOURCE__].[id] AND [__MERGE_TARGET__].[ts] = [__MERGE_SOURCE__].[ts] WHEN NOT MATCHED THEN INSERT ([id], [ts]) VALUES ([__MERGE_SOURCE__].[id], [__MERGE_SOURCE__].[ts]);",
287287
f"DROP TABLE IF EXISTS [__temp_target_{temp_table_id}];",
288288
]
289+
290+
291+
def test_comments(make_mocked_engine_adapter: t.Callable, mocker: MockerFixture):
292+
adapter = make_mocked_engine_adapter(FabricEngineAdapter)
293+
comment = "\\"
294+
295+
create_table_comment_mock = mocker.patch.object(adapter, "_create_table_comment")
296+
create_column_comments_mock = mocker.patch.object(adapter, "_create_column_comments")
297+
mocker.patch.object(adapter, "_create_table")
298+
299+
adapter.create_table(
300+
"test_table",
301+
{"a": exp.DataType.build("INT"), "b": exp.DataType.build("INT")},
302+
table_description=comment,
303+
column_descriptions={"a": comment},
304+
)
305+
306+
create_table_comment_mock.assert_not_called()
307+
create_column_comments_mock.assert_not_called()
308+
assert to_sql_calls(adapter) == []

tests/core/engine_adapter/test_mssql.py

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1002,3 +1002,24 @@ def python_scd2_model(context, **kwargs):
10021002
snapshot: Snapshot = make_snapshot(m)
10031003
assert snapshot.node.physical_properties == m.physical_properties
10041004
assert snapshot.node.physical_properties.get("mssql_merge_exists")
1005+
1006+
1007+
def test_comments(make_mocked_engine_adapter: t.Callable, mocker: MockerFixture):
1008+
adapter = make_mocked_engine_adapter(MSSQLEngineAdapter)
1009+
table = exp.to_table("test_table")
1010+
comment = "\\"
1011+
1012+
mocker.patch.object(adapter, "_create_table")
1013+
1014+
adapter.create_table(
1015+
"test_table",
1016+
{"a": exp.DataType.build("INT"), "b": exp.DataType.build("INT")},
1017+
table_description=comment,
1018+
column_descriptions={"a": comment},
1019+
)
1020+
1021+
sql_calls = to_sql_calls(adapter)
1022+
assert sql_calls == [
1023+
adapter._build_create_comment_table_exp(table, comment),
1024+
adapter._build_create_comment_column_exp(table, "a", comment),
1025+
]

0 commit comments

Comments
 (0)