Skip to content

Commit 5e094e9

Browse files
committed
fixing mr conflict
Signed-off-by: Cortland Goffena <30168413+cmgoffena13@users.noreply.github.com>
1 parent cc8d8b0 commit 5e094e9

2 files changed

Lines changed: 55 additions & 2 deletions

File tree

‎sqlmesh/core/engine_adapter/fabric.py‎

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,14 +11,14 @@
1111
from sqlmesh.core.engine_adapter.shared import (
1212
CommentCreationTable,
1313
CommentCreationView,
14+
DataObject,
1415
InsertOverwriteStrategy,
1516
)
1617
from sqlmesh.utils.errors import SQLMeshError
1718
from sqlmesh.utils.connection_pool import ConnectionPool
1819
from sqlmesh.core.schema_diff import TableAlterOperation
1920
from sqlmesh.utils import random_id
2021

21-
2222
logger = logging.getLogger(__name__)
2323

2424

@@ -224,6 +224,31 @@ def set_current_catalog(self, catalog_name: t.Optional[str]) -> None:
224224

225225
self._target_catalog = target_catalog
226226

227+
def _get_data_objects(
228+
self, schema_name: t.Union[str, exp.Table], object_names: t.Optional[t.Set[str]] = None
229+
) -> t.List[DataObject]:
230+
objects = super()._get_data_objects(schema_name, object_names)
231+
# Fabric uses None as "default catalog" so we skip reconnects. Other engines
232+
# return a real warehouse name here; fill it in so this listing matches them
233+
# and so the data-object cache key matches lookups that use that name.
234+
catalog = (
235+
self.get_current_catalog()
236+
or self._default_catalog
237+
or self._extra_config.get("database")
238+
)
239+
if not catalog:
240+
return objects
241+
return [
242+
DataObject(
243+
catalog=obj.catalog or catalog,
244+
schema=obj.schema_name,
245+
name=obj.name,
246+
type=obj.type,
247+
clustering_key=obj.clustering_key,
248+
)
249+
for obj in objects
250+
]
251+
227252
def alter_table(
228253
self,
229254
alter_expressions: t.Union[t.List[exp.Alter], t.List[TableAlterOperation]],

‎tests/core/engine_adapter/test_fabric.py‎

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
from sqlmesh.core.engine_adapter import FabricEngineAdapter
1212
from sqlmesh.core.engine_adapter.fabric import FabricHttpClient
1313
from tests.core.engine_adapter import to_sql_calls
14-
from sqlmesh.core.engine_adapter.shared import DataObject
14+
from sqlmesh.core.engine_adapter.shared import DataObject, DataObjectType
1515

1616
pytestmark = [pytest.mark.engine, pytest.mark.fabric]
1717

@@ -494,3 +494,31 @@ def test_create_warehouse_unrelated_conflict_still_raises(
494494

495495
with pytest.raises(requests.HTTPError):
496496
fabric_http_client.create_warehouse("my_warehouse")
497+
498+
499+
def test_get_data_objects_uses_default_catalog_when_current_is_none(
500+
make_mocked_engine_adapter: t.Callable,
501+
mocker: MockerFixture,
502+
) -> None:
503+
adapter = make_mocked_engine_adapter(
504+
FabricEngineAdapter,
505+
default_catalog="ci_abc",
506+
database="ci_abc",
507+
patch_get_data_objects=False,
508+
)
509+
assert adapter.get_current_catalog() is None
510+
511+
mocker.patch.object(
512+
adapter,
513+
"fetchdf",
514+
return_value=pd.DataFrame([{"name": "test_table", "schema_name": "dbo", "type": "TABLE"}]),
515+
)
516+
517+
assert adapter._get_data_objects("dbo") == [
518+
DataObject(
519+
catalog="ci_abc",
520+
schema="dbo",
521+
name="test_table",
522+
type=DataObjectType.TABLE,
523+
)
524+
]

0 commit comments

Comments
 (0)