Skip to content

Commit bd6c1e2

Browse files
authored
A few fixes (#4129)
1 parent b31c898 commit bd6c1e2

3 files changed

Lines changed: 10 additions & 8 deletions

File tree

sqlmesh/core/context.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -363,7 +363,7 @@ def __init__(
363363
self._environment_statements: t.List[EnvironmentStatements] = []
364364
self._excluded_requirements: t.Set[str] = set()
365365
self._default_catalog: t.Optional[str] = None
366-
self._default_catalog_per_gateway: t.Dict[str, str] = {}
366+
self._default_catalog_per_gateway: t.Optional[t.Dict[str, str]] = None
367367
self._linters: t.Dict[str, Linter] = {}
368368
self._loaded: bool = False
369369

@@ -2222,7 +2222,7 @@ def engine_adapters(self) -> t.Dict[str, EngineAdapter]:
22222222
@cached_property
22232223
def default_catalog_per_gateway(self) -> t.Dict[str, str]:
22242224
"""Returns the catalogs for each engine adapter in a multi virtual layer setup when the catalog isn't shared."""
2225-
if self.gateway_managed_virtual_layer:
2225+
if self._default_catalog_per_gateway is None:
22262226
self._default_catalog_per_gateway = {
22272227
name: adapter.default_catalog
22282228
for name, adapter in self.engine_adapters.items()

sqlmesh/core/context_diff.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,9 @@ class ContextDiff(PydanticModel):
5353
"""Whether the currently stored environment record is in unfinalized state."""
5454
normalize_environment_name: bool
5555
"""Whether the environment name should be normalized."""
56-
gateway_managed_virtual_layer: bool = False
56+
previous_gateway_managed_virtual_layer: bool
57+
"""Whether the previous environment's virtual layer's views were created by the model specified gateways."""
58+
gateway_managed_virtual_layer: bool
5759
"""Whether the virtual layer's views will be created by the model specified gateways."""
5860
create_from: str
5961
"""The name of the environment the target environment will be created from if new."""
@@ -121,7 +123,7 @@ def create(
121123
env = state_reader.get_environment(environment)
122124

123125
create_from_env_exists = False
124-
if env is None or env.expired or env.gateway_managed != gateway_managed_virtual_layer:
126+
if env is None or env.expired:
125127
env = state_reader.get_environment(create_from.lower())
126128

127129
if not env and create_from != c.PROD:
@@ -229,6 +231,7 @@ def create(
229231
diff_rendered=diff_rendered,
230232
previous_environment_statements=previous_environment_statements,
231233
environment_statements=environment_statements,
234+
previous_gateway_managed_virtual_layer=env.gateway_managed if env else False,
232235
gateway_managed_virtual_layer=gateway_managed_virtual_layer,
233236
)
234237

@@ -277,6 +280,7 @@ def has_changes(self) -> bool:
277280
or self.is_unfinalized_environment
278281
or self.has_requirement_changes
279282
or self.has_environment_statements_changes
283+
or self.previous_gateway_managed_virtual_layer != self.gateway_managed_virtual_layer
280284
)
281285

282286
@property

sqlmesh/core/state_sync/db/facade.py

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -199,10 +199,7 @@ def promote(
199199
)
200200
!= table_infos[name].qualified_view_name.for_environment(environment.naming_info)
201201
}
202-
if (
203-
not existing_environment.expired
204-
and existing_environment.gateway_managed == environment.gateway_managed
205-
):
202+
if not existing_environment.expired:
206203
if environment.previous_plan_id != existing_environment.plan_id:
207204
raise ConflictingPlanError(
208205
f"Plan '{environment.plan_id}' is no longer valid for the target environment '{environment.name}'. "
@@ -229,6 +226,7 @@ def promote(
229226
existing_environment
230227
and existing_environment.finalized_ts
231228
and not existing_environment.expired
229+
and existing_environment.gateway_managed == environment.gateway_managed
232230
):
233231
# Only promote new snapshots.
234232
added_table_infos -= set(existing_environment.promoted_snapshots)

0 commit comments

Comments
 (0)