Skip to content

Commit d2b1911

Browse files
committed
fix: apply grants to the physical layer table on promote
1 parent f7e3b55 commit d2b1911

2 files changed

Lines changed: 14 additions & 15 deletions

File tree

sqlmesh/core/snapshot/evaluator.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1937,6 +1937,9 @@ def promote(
19371937
view_properties=model.render_virtual_properties(**render_kwargs),
19381938
)
19391939

1940+
# Apply grants to the physical layer table
1941+
self._apply_grants(model, table_name, GrantsTargetLayer.PHYSICAL)
1942+
19401943
# Apply grants to the virtual layer view
19411944
self._apply_grants(model, view_name, GrantsTargetLayer.VIRTUAL)
19421945

tests/core/test_snapshot_evaluator.py

Lines changed: 11 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -5013,17 +5013,15 @@ def test_grants_create_model_kind(
50135013

50145014

50155015
@pytest.mark.parametrize(
5016-
"target_layer,apply_on_create,apply_on_promote",
5016+
"target_layer",
50175017
[
5018-
(GrantsTargetLayer.PHYSICAL, True, False),
5019-
(GrantsTargetLayer.VIRTUAL, False, True),
5020-
(GrantsTargetLayer.ALL, True, True),
5018+
GrantsTargetLayer.PHYSICAL,
5019+
GrantsTargetLayer.VIRTUAL,
5020+
GrantsTargetLayer.ALL,
50215021
],
50225022
)
50235023
def test_grants_target_layer(
50245024
target_layer: GrantsTargetLayer,
5025-
apply_on_create: bool,
5026-
apply_on_promote: bool,
50275025
adapter_mock: Mock,
50285026
mocker: MockerFixture,
50295027
make_snapshot: t.Callable[..., Snapshot],
@@ -5045,19 +5043,17 @@ def test_grants_target_layer(
50455043
snapshot.categorize_as(SnapshotChangeCategory.BREAKING)
50465044

50475045
evaluator.create([snapshot], {})
5048-
if apply_on_create:
5049-
sync_grants_mock.assert_called_once()
5050-
assert sync_grants_mock.call_args[0][1] == grants
5046+
if target_layer == GrantsTargetLayer.VIRTUAL:
5047+
assert sync_grants_mock.call_count == 0
50515048
else:
5052-
sync_grants_mock.assert_not_called()
5053-
5049+
assert sync_grants_mock.call_count == 1
5050+
assert sync_grants_mock.call_args[0][1] == grants
50545051
sync_grants_mock.reset_mock()
50555052
evaluator.promote([snapshot], EnvironmentNamingInfo(name="prod"))
5056-
if apply_on_promote:
5057-
sync_grants_mock.assert_called_once()
5058-
assert sync_grants_mock.call_args[0][1] == grants
5053+
if target_layer == GrantsTargetLayer.ALL:
5054+
assert sync_grants_mock.call_count == 2
50595055
else:
5060-
sync_grants_mock.assert_not_called()
5056+
assert sync_grants_mock.call_count == 1
50615057

50625058

50635059
def test_grants_update(

0 commit comments

Comments
 (0)