Skip to content

Commit 17fb8ef

Browse files
committed
fix: apply grants to the physical layer table on promote
1 parent 522cf31 commit 17fb8ef

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
@@ -1824,6 +1824,9 @@ def promote(
18241824
view_properties=model.render_virtual_properties(**render_kwargs),
18251825
)
18261826

1827+
# Apply grants to the physical layer table
1828+
self._apply_grants(model, table_name, GrantsTargetLayer.PHYSICAL)
1829+
18271830
# Apply grants to the virtual layer view
18281831
self._apply_grants(model, view_name, GrantsTargetLayer.VIRTUAL)
18291832

tests/core/test_snapshot_evaluator.py

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

47874787

47884788
@pytest.mark.parametrize(
4789-
"target_layer,apply_on_create,apply_on_promote",
4789+
"target_layer",
47904790
[
4791-
(GrantsTargetLayer.PHYSICAL, True, False),
4792-
(GrantsTargetLayer.VIRTUAL, False, True),
4793-
(GrantsTargetLayer.ALL, True, True),
4791+
GrantsTargetLayer.PHYSICAL,
4792+
GrantsTargetLayer.VIRTUAL,
4793+
GrantsTargetLayer.ALL,
47944794
],
47954795
)
47964796
def test_grants_target_layer(
47974797
target_layer: GrantsTargetLayer,
4798-
apply_on_create: bool,
4799-
apply_on_promote: bool,
48004798
adapter_mock: Mock,
48014799
mocker: MockerFixture,
48024800
make_snapshot: t.Callable[..., Snapshot],
@@ -4818,19 +4816,17 @@ def test_grants_target_layer(
48184816
snapshot.categorize_as(SnapshotChangeCategory.BREAKING)
48194817

48204818
evaluator.create([snapshot], {})
4821-
if apply_on_create:
4822-
sync_grants_mock.assert_called_once()
4823-
assert sync_grants_mock.call_args[0][1] == grants
4819+
if target_layer == GrantsTargetLayer.VIRTUAL:
4820+
assert sync_grants_mock.call_count == 0
48244821
else:
4825-
sync_grants_mock.assert_not_called()
4826-
4822+
assert sync_grants_mock.call_count == 1
4823+
assert sync_grants_mock.call_args[0][1] == grants
48274824
sync_grants_mock.reset_mock()
48284825
evaluator.promote([snapshot], EnvironmentNamingInfo(name="prod"))
4829-
if apply_on_promote:
4830-
sync_grants_mock.assert_called_once()
4831-
assert sync_grants_mock.call_args[0][1] == grants
4826+
if target_layer == GrantsTargetLayer.ALL:
4827+
assert sync_grants_mock.call_count == 2
48324828
else:
4833-
sync_grants_mock.assert_not_called()
4829+
assert sync_grants_mock.call_count == 1
48344830

48354831

48364832
def test_grants_update(

0 commit comments

Comments
 (0)