This is an automated email from the ASF dual-hosted git repository.
roryqi pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/gravitino.git
The following commit(s) were added to refs/heads/main by this push:
new bccd8f67bc [#9746][followup] fix(core): Set namespace when fetching
view entity (#10010)
bccd8f67bc is described below
commit bccd8f67bc68ddd0e2bdf7a301dfa8c83660c896
Author: Bharath Krishna <[email protected]>
AuthorDate: Mon Feb 16 16:17:56 2026 +0530
[#9746][followup] fix(core): Set namespace when fetching view entity
(#10010)
### What changes were proposed in this pull request?
Fix ViewMetaService to properly set the namespace field when building
GenericEntity objects in listViewsByNamespace() and
getViewByIdentifier() methods.
### Why are the changes needed?
Previously, ViewMetaService was not setting the namespace when creating
GenericEntity objects for views, which could cause issues when code
depends on the namespace being properly set. One place we had issue was
in the reverse lookup :
https://github.com/apache/gravitino/blob/a8414f6de3cbc3e507113ee1eba1594e3303756b/core/src/main/java/org/apache/gravitino/cache/ReverseIndexRules.java#L129
where it was giving indexOutOfBoundsException due to no namespace
Fix: #9746
### Does this PR introduce _any_ user-facing change?
No
### How was this patch tested?
Unit tests
---
.../gravitino/storage/relational/service/ViewMetaService.java | 2 ++
.../gravitino/storage/relational/service/TestViewMetaService.java | 6 ++++++
2 files changed, 8 insertions(+)
diff --git
a/core/src/main/java/org/apache/gravitino/storage/relational/service/ViewMetaService.java
b/core/src/main/java/org/apache/gravitino/storage/relational/service/ViewMetaService.java
index 95ce3a1706..a64d85e0d8 100644
---
a/core/src/main/java/org/apache/gravitino/storage/relational/service/ViewMetaService.java
+++
b/core/src/main/java/org/apache/gravitino/storage/relational/service/ViewMetaService.java
@@ -119,6 +119,7 @@ public class ViewMetaService {
GenericEntity.builder()
.withId(viewPO.getViewId())
.withName(viewPO.getViewName())
+ .withNamespace(namespace)
.withEntityType(Entity.EntityType.VIEW)
.build())
.collect(Collectors.toList());
@@ -141,6 +142,7 @@ public class ViewMetaService {
return GenericEntity.builder()
.withId(viewPO.getViewId())
.withName(viewPO.getViewName())
+ .withNamespace(identifier.namespace())
.withEntityType(Entity.EntityType.VIEW)
.build();
}
diff --git
a/core/src/test/java/org/apache/gravitino/storage/relational/service/TestViewMetaService.java
b/core/src/test/java/org/apache/gravitino/storage/relational/service/TestViewMetaService.java
index 9e7aadd88e..327e5f66af 100644
---
a/core/src/test/java/org/apache/gravitino/storage/relational/service/TestViewMetaService.java
+++
b/core/src/test/java/org/apache/gravitino/storage/relational/service/TestViewMetaService.java
@@ -71,6 +71,7 @@ public class TestViewMetaService extends TestJDBCBackend {
assertNotNull(retrievedView);
assertEquals(view.id(), retrievedView.id());
assertEquals(view.name(), retrievedView.name());
+ assertEquals(viewNamespace, retrievedView.namespace());
assertEquals(Entity.EntityType.VIEW, retrievedView.type());
}
@@ -103,6 +104,7 @@ public class TestViewMetaService extends TestJDBCBackend {
GenericEntity retrievedView = backend.get(viewIdent,
Entity.EntityType.VIEW);
assertNotNull(retrievedView);
assertEquals(view.id(), retrievedView.id());
+ assertEquals(viewNamespace, retrievedView.namespace());
}
@TestTemplate
@@ -125,6 +127,8 @@ public class TestViewMetaService extends TestJDBCBackend {
assertTrue(views.stream().anyMatch(v -> v.name().equals("view1")));
assertTrue(views.stream().anyMatch(v -> v.name().equals("view2")));
assertTrue(views.stream().anyMatch(v -> v.name().equals("view3")));
+ // Verify all views have namespace set
+ assertTrue(views.stream().allMatch(v ->
viewNamespace.equals(v.namespace())));
}
@TestTemplate
@@ -160,6 +164,7 @@ public class TestViewMetaService extends TestJDBCBackend {
GenericEntity retrievedView = backend.get(newViewIdent,
Entity.EntityType.VIEW);
assertNotNull(retrievedView);
assertEquals("view_updated", retrievedView.name());
+ assertEquals(viewNamespace, retrievedView.namespace());
}
@TestTemplate
@@ -245,6 +250,7 @@ public class TestViewMetaService extends TestJDBCBackend {
backend.get(NameIdentifier.of(viewNamespace, "lifecycle_view"),
Entity.EntityType.VIEW);
assertEquals(view.id(), viewEntity.id());
assertEquals(view.name(), viewEntity.name());
+ assertEquals(viewNamespace, viewEntity.namespace());
// meta data soft delete
backend.delete(