Skip to content

Commit 9f2dbb5

Browse files
committed
remove object_store from view
1 parent cde5cf1 commit 9f2dbb5

6 files changed

Lines changed: 17 additions & 118 deletions

File tree

catalogs/iceberg-file-catalog/src/lib.rs

Lines changed: 3 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -180,13 +180,7 @@ impl Catalog for FileCatalog {
180180
.await?,
181181
)),
182182
TabularMetadata::View(metadata) => Ok(Tabular::View(
183-
View::new(
184-
identifier.clone(),
185-
self.clone(),
186-
object_store.clone(),
187-
metadata,
188-
)
189-
.await?,
183+
View::new(identifier.clone(), self.clone(), metadata).await?,
190184
)),
191185
TabularMetadata::MaterializedView(metadata) => Ok(Tabular::MaterializedView(
192186
MaterializedView::new(
@@ -274,13 +268,7 @@ impl Catalog for FileCatalog {
274268
identifier.clone(),
275269
(metadata_location.clone(), metadata.clone().into()),
276270
);
277-
Ok(View::new(
278-
identifier.clone(),
279-
self.clone(),
280-
object_store.clone(),
281-
metadata,
282-
)
283-
.await?)
271+
Ok(View::new(identifier.clone(), self.clone(), metadata).await?)
284272
}
285273

286274
async fn create_materialized_view(
@@ -456,13 +444,7 @@ impl Catalog for FileCatalog {
456444
(metadata_location.clone(), metadata.clone()),
457445
);
458446
if let TabularMetadata::View(metadata) = metadata {
459-
Ok(View::new(
460-
identifier.clone(),
461-
self.clone(),
462-
object_store.clone(),
463-
metadata,
464-
)
465-
.await?)
447+
Ok(View::new(identifier.clone(), self.clone(), metadata).await?)
466448
} else {
467449
Err(IcebergError::InvalidFormat(
468450
"Entity is not a view".to_owned(),

catalogs/iceberg-glue-catalog/src/lib.rs

Lines changed: 3 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -285,13 +285,7 @@ impl Catalog for GlueCatalog {
285285
.await?,
286286
)),
287287
TabularMetadata::View(metadata) => Ok(Tabular::View(
288-
View::new(
289-
identifier.clone(),
290-
self.clone(),
291-
object_store.clone(),
292-
metadata,
293-
)
294-
.await?,
288+
View::new(identifier.clone(), self.clone(), metadata).await?,
295289
)),
296290
TabularMetadata::MaterializedView(metadata) => Ok(Tabular::MaterializedView(
297291
MaterializedView::new(
@@ -448,13 +442,7 @@ impl Catalog for GlueCatalog {
448442
metadata.clone().into(),
449443
),
450444
);
451-
Ok(View::new(
452-
identifier.clone(),
453-
self.clone(),
454-
object_store.clone(),
455-
metadata,
456-
)
457-
.await?)
445+
Ok(View::new(identifier.clone(), self.clone(), metadata).await?)
458446
}
459447

460448
async fn create_materialized_view(
@@ -783,13 +771,7 @@ impl Catalog for GlueCatalog {
783771
.insert(identifier.clone(), (version_id, metadata.clone()));
784772

785773
if let TabularMetadata::View(metadata) = metadata {
786-
Ok(View::new(
787-
identifier.clone(),
788-
self.clone(),
789-
object_store.clone(),
790-
metadata,
791-
)
792-
.await?)
774+
Ok(View::new(identifier.clone(), self.clone(), metadata).await?)
793775
} else {
794776
Err(IcebergError::InvalidFormat(
795777
"Entity is not a view".to_owned(),

catalogs/iceberg-rest-catalog/src/catalog.rs

Lines changed: 5 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -268,14 +268,9 @@ impl Catalog for RestCatalog {
268268
.await
269269
.map(|x| x.metadata);
270270
match tabular_metadata {
271-
Ok(TabularMetadata::View(view)) => {
272-
let object_store = self
273-
.object_store_builder
274-
.build(Bucket::from_path(&view.location)?)?;
275-
Ok(Tabular::View(
276-
View::new(identifier.clone(), self.clone(), object_store, view).await?,
277-
))
278-
}
271+
Ok(TabularMetadata::View(view)) => Ok(Tabular::View(
272+
View::new(identifier.clone(), self.clone(), view).await?,
273+
)),
279274
Ok(TabularMetadata::MaterializedView(matview)) => {
280275
let object_store = self
281276
.object_store_builder
@@ -387,11 +382,7 @@ impl Catalog for RestCatalog {
387382
let clone = self.clone();
388383
async move {
389384
if let TabularMetadata::View(metadata) = response.metadata {
390-
let object_store = clone
391-
.object_store_builder
392-
.build(Bucket::from_path(&metadata.location)?)?;
393-
394-
View::new(identifier.clone(), clone, object_store, metadata).await
385+
View::new(identifier.clone(), clone, metadata).await
395386
} else {
396387
Err(Error::InvalidFormat(
397388
"Create view didn't return view metadata.".to_owned(),
@@ -416,10 +407,7 @@ impl Catalog for RestCatalog {
416407
let identifier = identifier.clone();
417408
async move {
418409
if let TabularMetadata::View(metadata) = response.metadata {
419-
let object_store = clone
420-
.object_store_builder
421-
.build(Bucket::from_path(&metadata.location)?)?;
422-
View::new(identifier.clone(), clone, object_store, metadata).await
410+
View::new(identifier.clone(), clone, metadata).await
423411
} else {
424412
Err(Error::InvalidFormat(
425413
"Create view didn't return view metadata.".to_owned(),

catalogs/iceberg-s3tables-catalog/src/lib.rs

Lines changed: 3 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -271,13 +271,7 @@ impl Catalog for S3TablesCatalog {
271271
.await?,
272272
)),
273273
TabularMetadata::View(metadata) => Ok(Tabular::View(
274-
View::new(
275-
identifier.clone(),
276-
self.clone(),
277-
object_store.clone(),
278-
metadata,
279-
)
280-
.await?,
274+
View::new(identifier.clone(), self.clone(), metadata).await?,
281275
)),
282276
TabularMetadata::MaterializedView(metadata) => Ok(Tabular::MaterializedView(
283277
MaterializedView::new(
@@ -417,13 +411,7 @@ impl Catalog for S3TablesCatalog {
417411
identifier.clone(),
418412
(table.version_token, metadata.clone().into()),
419413
);
420-
Ok(View::new(
421-
identifier.clone(),
422-
self.clone(),
423-
object_store.clone(),
424-
metadata,
425-
)
426-
.await?)
414+
Ok(View::new(identifier.clone(), self.clone(), metadata).await?)
427415
}
428416

429417
async fn create_materialized_view(
@@ -702,13 +690,7 @@ impl Catalog for S3TablesCatalog {
702690
.insert(identifier.clone(), (version_token, metadata.clone()));
703691

704692
if let TabularMetadata::View(metadata) = metadata {
705-
Ok(View::new(
706-
identifier.clone(),
707-
self.clone(),
708-
object_store.clone(),
709-
metadata,
710-
)
711-
.await?)
693+
Ok(View::new(identifier.clone(), self.clone(), metadata).await?)
712694
} else {
713695
Err(IcebergError::InvalidFormat(
714696
"Entity is not a view".to_owned(),

catalogs/iceberg-sql-catalog/src/lib.rs

Lines changed: 3 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -307,13 +307,7 @@ impl Catalog for SqlCatalog {
307307
.await?,
308308
)),
309309
TabularMetadata::View(metadata) => Ok(Tabular::View(
310-
View::new(
311-
identifier.clone(),
312-
self.clone(),
313-
object_store.clone(),
314-
metadata,
315-
)
316-
.await?,
310+
View::new(identifier.clone(), self.clone(), metadata).await?,
317311
)),
318312
TabularMetadata::MaterializedView(metadata) => Ok(Tabular::MaterializedView(
319313
MaterializedView::new(
@@ -398,13 +392,7 @@ impl Catalog for SqlCatalog {
398392
identifier.clone(),
399393
(metadata_location.clone(), metadata.clone().into()),
400394
);
401-
Ok(View::new(
402-
identifier.clone(),
403-
self.clone(),
404-
object_store.clone(),
405-
metadata,
406-
)
407-
.await?)
395+
Ok(View::new(identifier.clone(), self.clone(), metadata).await?)
408396
}
409397

410398
async fn create_materialized_view(
@@ -571,13 +559,7 @@ impl Catalog for SqlCatalog {
571559
(metadata_location.clone(), metadata.clone()),
572560
);
573561
if let TabularMetadata::View(metadata) = metadata {
574-
Ok(View::new(
575-
identifier.clone(),
576-
self.clone(),
577-
object_store.clone(),
578-
metadata,
579-
)
580-
.await?)
562+
Ok(View::new(identifier.clone(), self.clone(), metadata).await?)
581563
} else {
582564
Err(IcebergError::InvalidFormat(
583565
"Entity is not a view".to_owned(),

iceberg-rust/src/view/mod.rs

Lines changed: 0 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,6 @@
3939
use std::sync::Arc;
4040

4141
use iceberg_rust_spec::spec::{schema::Schema, view_metadata::ViewMetadata};
42-
use object_store::ObjectStore;
4342

4443
use crate::{
4544
catalog::{create::CreateViewBuilder, identifier::Identifier, Catalog},
@@ -75,8 +74,6 @@ pub struct View {
7574
metadata: ViewMetadata,
7675
/// Catalog of the table
7776
catalog: Arc<dyn Catalog>,
78-
/// Object store
79-
object_store: Arc<dyn ObjectStore>,
8077
}
8178

8279
/// Public interface of the table.
@@ -110,14 +107,12 @@ impl View {
110107
pub async fn new(
111108
identifier: Identifier,
112109
catalog: Arc<dyn Catalog>,
113-
object_store: Arc<dyn ObjectStore>,
114110
metadata: ViewMetadata,
115111
) -> Result<Self, Error> {
116112
Ok(View {
117113
identifier,
118114
metadata,
119115
catalog,
120-
object_store,
121116
})
122117
}
123118
/// Gets the unique identifier for this view in the catalog
@@ -144,18 +139,6 @@ impl View {
144139
pub fn catalog(&self) -> Arc<dyn Catalog> {
145140
self.catalog.clone()
146141
}
147-
/// Gets the object store for this view's storage location
148-
///
149-
/// The object store provides:
150-
/// - Access to the underlying storage system (S3, local filesystem, etc)
151-
/// - Read/write operations for view data and metadata
152-
/// - Storage-specific configuration and credentials
153-
///
154-
/// # Returns
155-
/// * `Arc<dyn ObjectStore>` - A thread-safe reference to the configured object store
156-
pub fn object_store(&self) -> Arc<dyn ObjectStore> {
157-
self.object_store.clone()
158-
}
159142
/// Gets the current schema for this view, optionally for a specific branch
160143
///
161144
/// # Arguments

0 commit comments

Comments
 (0)