This is an automated email from the ASF dual-hosted git repository.

roryqi pushed a commit to branch branch-1.2
in repository https://gitbox.apache.org/repos/asf/gravitino.git


The following commit(s) were added to refs/heads/branch-1.2 by this push:
     new 550d04110b [Cherry-pick to branch-1.2] [#10458] fix(core): Include 
VIEW in cascade owner relation cleanup for schema and catalog deletion (#10678) 
(#10680)
550d04110b is described below

commit 550d04110b48d8500a5aabf2a23e92d96df22380
Author: github-actions[bot] 
<41898282+github-actions[bot]@users.noreply.github.com>
AuthorDate: Mon Apr 6 13:54:23 2026 +0800

    [Cherry-pick to branch-1.2] [#10458] fix(core): Include VIEW in cascade 
owner relation cleanup for schema and catalog deletion (#10678) (#10680)
    
    **Cherry-pick Information:**
    - Original commit: 04f5dda1585e6401810688bc2116ea3877ef4851
    - Target branch: `branch-1.2`
    - Status: ✅ Clean cherry-pick (no conflicts)
    
    Co-authored-by: Sachin Ranjalkar 
<[email protected]>
---
 .../provider/base/OwnerMetaBaseSQLProvider.java    | 11 ++++
 .../postgresql/OwnerMetaPostgreSQLProvider.java    | 11 ++++
 .../relational/service/TestOwnerMetaService.java   | 61 ++++++++++++++++++----
 3 files changed, 72 insertions(+), 11 deletions(-)

diff --git 
a/core/src/main/java/org/apache/gravitino/storage/relational/mapper/provider/base/OwnerMetaBaseSQLProvider.java
 
b/core/src/main/java/org/apache/gravitino/storage/relational/mapper/provider/base/OwnerMetaBaseSQLProvider.java
index ece7bfc22a..a7ce2b8247 100644
--- 
a/core/src/main/java/org/apache/gravitino/storage/relational/mapper/provider/base/OwnerMetaBaseSQLProvider.java
+++ 
b/core/src/main/java/org/apache/gravitino/storage/relational/mapper/provider/base/OwnerMetaBaseSQLProvider.java
@@ -29,6 +29,7 @@ import 
org.apache.gravitino.storage.relational.mapper.SchemaMetaMapper;
 import org.apache.gravitino.storage.relational.mapper.TableMetaMapper;
 import org.apache.gravitino.storage.relational.mapper.TopicMetaMapper;
 import org.apache.gravitino.storage.relational.mapper.UserMetaMapper;
+import org.apache.gravitino.storage.relational.mapper.ViewMetaMapper;
 import org.apache.gravitino.storage.relational.po.OwnerRelPO;
 import org.apache.ibatis.annotations.Param;
 
@@ -183,6 +184,11 @@ public class OwnerMetaBaseSQLProvider {
         + ModelMetaMapper.TABLE_NAME
         + " mt WHERE mt.catalog_id = #{catalogId} AND"
         + " mt.model_id = ot.metadata_object_id AND ot.metadata_object_type = 
'MODEL'"
+        + " UNION"
+        + " SELECT vt.catalog_id FROM "
+        + ViewMetaMapper.TABLE_NAME
+        + " vt WHERE vt.catalog_id = #{catalogId} AND"
+        + " vt.view_id = ot.metadata_object_id AND ot.metadata_object_type = 
'VIEW'"
         + ")";
   }
 
@@ -216,6 +222,11 @@ public class OwnerMetaBaseSQLProvider {
         + ModelMetaMapper.TABLE_NAME
         + " mt WHERE mt.schema_id = #{schemaId} AND"
         + " mt.model_id = ot.metadata_object_id AND ot.metadata_object_type = 
'MODEL'"
+        + " UNION"
+        + " SELECT vt.schema_id FROM "
+        + ViewMetaMapper.TABLE_NAME
+        + " vt WHERE vt.schema_id = #{schemaId} AND"
+        + " vt.view_id = ot.metadata_object_id AND ot.metadata_object_type = 
'VIEW'"
         + ")";
   }
 
diff --git 
a/core/src/main/java/org/apache/gravitino/storage/relational/mapper/provider/postgresql/OwnerMetaPostgreSQLProvider.java
 
b/core/src/main/java/org/apache/gravitino/storage/relational/mapper/provider/postgresql/OwnerMetaPostgreSQLProvider.java
index ec50c68fb1..4012bf52d5 100644
--- 
a/core/src/main/java/org/apache/gravitino/storage/relational/mapper/provider/postgresql/OwnerMetaPostgreSQLProvider.java
+++ 
b/core/src/main/java/org/apache/gravitino/storage/relational/mapper/provider/postgresql/OwnerMetaPostgreSQLProvider.java
@@ -26,6 +26,7 @@ import 
org.apache.gravitino.storage.relational.mapper.ModelMetaMapper;
 import org.apache.gravitino.storage.relational.mapper.SchemaMetaMapper;
 import org.apache.gravitino.storage.relational.mapper.TableMetaMapper;
 import org.apache.gravitino.storage.relational.mapper.TopicMetaMapper;
+import org.apache.gravitino.storage.relational.mapper.ViewMetaMapper;
 import 
org.apache.gravitino.storage.relational.mapper.provider.base.OwnerMetaBaseSQLProvider;
 import org.apache.ibatis.annotations.Param;
 
@@ -90,6 +91,11 @@ public class OwnerMetaPostgreSQLProvider extends 
OwnerMetaBaseSQLProvider {
         + ModelMetaMapper.TABLE_NAME
         + " mt WHERE mt.catalog_id = #{catalogId} AND"
         + " mt.model_id = ot.metadata_object_id AND ot.metadata_object_type = 
'MODEL'"
+        + " UNION"
+        + " SELECT vt.catalog_id FROM "
+        + ViewMetaMapper.TABLE_NAME
+        + " vt WHERE vt.catalog_id = #{catalogId} AND"
+        + " vt.view_id = ot.metadata_object_id AND ot.metadata_object_type = 
'VIEW'"
         + ")";
   }
 
@@ -123,6 +129,11 @@ public class OwnerMetaPostgreSQLProvider extends 
OwnerMetaBaseSQLProvider {
         + ModelMetaMapper.TABLE_NAME
         + " mt WHERE mt.schema_id = #{schemaId} AND"
         + " mt.model_id = ot.metadata_object_id AND ot.metadata_object_type = 
'MODEL'"
+        + " UNION"
+        + " SELECT vt.schema_id FROM "
+        + ViewMetaMapper.TABLE_NAME
+        + " vt WHERE vt.schema_id = #{schemaId} AND"
+        + " vt.view_id = ot.metadata_object_id AND ot.metadata_object_type = 
'VIEW'"
         + ")";
   }
 
diff --git 
a/core/src/test/java/org/apache/gravitino/storage/relational/service/TestOwnerMetaService.java
 
b/core/src/test/java/org/apache/gravitino/storage/relational/service/TestOwnerMetaService.java
index 8d1ad4ca93..541095f782 100644
--- 
a/core/src/test/java/org/apache/gravitino/storage/relational/service/TestOwnerMetaService.java
+++ 
b/core/src/test/java/org/apache/gravitino/storage/relational/service/TestOwnerMetaService.java
@@ -37,6 +37,7 @@ import org.apache.gravitino.meta.AuditInfo;
 import org.apache.gravitino.meta.BaseMetalake;
 import org.apache.gravitino.meta.CatalogEntity;
 import org.apache.gravitino.meta.FilesetEntity;
+import org.apache.gravitino.meta.GenericEntity;
 import org.apache.gravitino.meta.GroupEntity;
 import org.apache.gravitino.meta.ModelEntity;
 import org.apache.gravitino.meta.RoleEntity;
@@ -247,6 +248,12 @@ class TestOwnerMetaService extends TestJDBCBackend {
             null,
             AUDIT_INFO);
     backend.insert(model, false);
+    GenericEntity view =
+        createViewEntity(
+            RandomIdGenerator.INSTANCE.nextId(),
+            Namespace.of(TestOwnerMetaService.METALAKE_NAME, CATALOG_NAME, 
SCHEMA_NAME),
+            "view");
+    backend.insert(view, false);
 
     UserEntity user =
         createUserEntity(
@@ -268,38 +275,45 @@ class TestOwnerMetaService extends TestJDBCBackend {
         .setOwner(topic.nameIdentifier(), topic.type(), user.nameIdentifier(), 
user.type());
     OwnerMetaService.getInstance()
         .setOwner(model.nameIdentifier(), model.type(), user.nameIdentifier(), 
user.type());
+    OwnerMetaService.getInstance()
+        .setOwner(view.nameIdentifier(), view.type(), user.nameIdentifier(), 
user.type());
+
+    Assertions.assertEquals(7, countAllOwnerRel(user.id()));
+    Assertions.assertEquals(7, countActiveOwnerRel(user.id()));
 
-    Assertions.assertEquals(6, countAllOwnerRel(user.id()));
+    // Test to delete view
+    ViewMetaService.getInstance().deleteView(view.nameIdentifier());
+    Assertions.assertEquals(7, countAllOwnerRel(user.id()));
     Assertions.assertEquals(6, countActiveOwnerRel(user.id()));
 
     // Test to delete model
     ModelMetaService.getInstance().deleteModel(model.nameIdentifier());
-    Assertions.assertEquals(6, countAllOwnerRel(user.id()));
+    Assertions.assertEquals(7, countAllOwnerRel(user.id()));
     Assertions.assertEquals(5, countActiveOwnerRel(user.id()));
 
     // Test to delete table
     TableMetaService.getInstance().deleteTable(table.nameIdentifier());
-    Assertions.assertEquals(6, countAllOwnerRel(user.id()));
+    Assertions.assertEquals(7, countAllOwnerRel(user.id()));
     Assertions.assertEquals(4, countActiveOwnerRel(user.id()));
 
     // Test to delete topic
     TopicMetaService.getInstance().deleteTopic(topic.nameIdentifier());
-    Assertions.assertEquals(6, countAllOwnerRel(user.id()));
+    Assertions.assertEquals(7, countAllOwnerRel(user.id()));
     Assertions.assertEquals(3, countActiveOwnerRel(user.id()));
 
     // Test to delete fileset
     FilesetMetaService.getInstance().deleteFileset(fileset.nameIdentifier());
-    Assertions.assertEquals(6, countAllOwnerRel(user.id()));
+    Assertions.assertEquals(7, countAllOwnerRel(user.id()));
     Assertions.assertEquals(2, countActiveOwnerRel(user.id()));
 
     // Test to delete schema
     SchemaMetaService.getInstance().deleteSchema(schema.nameIdentifier(), 
false);
-    Assertions.assertEquals(6, countAllOwnerRel(user.id()));
+    Assertions.assertEquals(7, countAllOwnerRel(user.id()));
     Assertions.assertEquals(1, countActiveOwnerRel(user.id()));
 
     // Test to delete catalog
     CatalogMetaService.getInstance().deleteCatalog(catalog.nameIdentifier(), 
false);
-    Assertions.assertEquals(6, countAllOwnerRel(user.id()));
+    Assertions.assertEquals(7, countAllOwnerRel(user.id()));
     Assertions.assertEquals(0, countActiveOwnerRel(user.id()));
 
     // Test to delete catalog with cascade mode
@@ -350,6 +364,12 @@ class TestOwnerMetaService extends TestJDBCBackend {
             null,
             AUDIT_INFO);
     backend.insert(model, false);
+    view =
+        createViewEntity(
+            RandomIdGenerator.INSTANCE.nextId(),
+            Namespace.of(TestOwnerMetaService.METALAKE_NAME, CATALOG_NAME, 
SCHEMA_NAME),
+            "view");
+    backend.insert(view, false);
 
     OwnerMetaService.getInstance()
         .setOwner(catalog.nameIdentifier(), catalog.type(), 
user.nameIdentifier(), user.type());
@@ -363,9 +383,11 @@ class TestOwnerMetaService extends TestJDBCBackend {
         .setOwner(topic.nameIdentifier(), topic.type(), user.nameIdentifier(), 
user.type());
     OwnerMetaService.getInstance()
         .setOwner(model.nameIdentifier(), model.type(), user.nameIdentifier(), 
user.type());
+    OwnerMetaService.getInstance()
+        .setOwner(view.nameIdentifier(), view.type(), user.nameIdentifier(), 
user.type());
 
     CatalogMetaService.getInstance().deleteCatalog(catalog.nameIdentifier(), 
true);
-    Assertions.assertEquals(12, countAllOwnerRel(user.id()));
+    Assertions.assertEquals(14, countAllOwnerRel(user.id()));
     Assertions.assertEquals(0, countActiveOwnerRel(user.id()));
 
     // Test to delete schema with cascade mode
@@ -420,6 +442,13 @@ class TestOwnerMetaService extends TestJDBCBackend {
             AUDIT_INFO);
     backend.insert(model, false);
 
+    view =
+        createViewEntity(
+            RandomIdGenerator.INSTANCE.nextId(),
+            Namespace.of(TestOwnerMetaService.METALAKE_NAME, CATALOG_NAME, 
SCHEMA_NAME),
+            "view");
+    backend.insert(view, false);
+
     OwnerMetaService.getInstance()
         .setOwner(schema.nameIdentifier(), schema.type(), 
user.nameIdentifier(), user.type());
     OwnerMetaService.getInstance()
@@ -432,9 +461,11 @@ class TestOwnerMetaService extends TestJDBCBackend {
         .setOwner(topic.nameIdentifier(), topic.type(), user.nameIdentifier(), 
user.type());
     OwnerMetaService.getInstance()
         .setOwner(model.nameIdentifier(), model.type(), user.nameIdentifier(), 
user.type());
+    OwnerMetaService.getInstance()
+        .setOwner(view.nameIdentifier(), view.type(), user.nameIdentifier(), 
user.type());
 
     SchemaMetaService.getInstance().deleteSchema(schema.nameIdentifier(), 
true);
-    Assertions.assertEquals(18, countAllOwnerRel(user.id()));
+    Assertions.assertEquals(21, countAllOwnerRel(user.id()));
     Assertions.assertEquals(1, countActiveOwnerRel(user.id()));
 
     // Test to delete user
@@ -466,7 +497,6 @@ class TestOwnerMetaService extends TestJDBCBackend {
             Namespace.of(TestOwnerMetaService.METALAKE_NAME, CATALOG_NAME, 
SCHEMA_NAME),
             "topic",
             AUDIT_INFO);
-
     backend.insert(topic, false);
 
     model =
@@ -480,6 +510,13 @@ class TestOwnerMetaService extends TestJDBCBackend {
             AUDIT_INFO);
     backend.insert(model, false);
 
+    view =
+        createViewEntity(
+            RandomIdGenerator.INSTANCE.nextId(),
+            Namespace.of(TestOwnerMetaService.METALAKE_NAME, CATALOG_NAME, 
SCHEMA_NAME),
+            "view");
+    backend.insert(view, false);
+
     OwnerMetaService.getInstance()
         .setOwner(schema.nameIdentifier(), schema.type(), 
user.nameIdentifier(), user.type());
     OwnerMetaService.getInstance()
@@ -492,9 +529,11 @@ class TestOwnerMetaService extends TestJDBCBackend {
         .setOwner(topic.nameIdentifier(), topic.type(), user.nameIdentifier(), 
user.type());
     OwnerMetaService.getInstance()
         .setOwner(model.nameIdentifier(), model.type(), user.nameIdentifier(), 
user.type());
+    OwnerMetaService.getInstance()
+        .setOwner(view.nameIdentifier(), view.type(), user.nameIdentifier(), 
user.type());
 
     UserMetaService.getInstance().deleteUser(user.nameIdentifier());
-    Assertions.assertEquals(24, countAllOwnerRel(user.id()));
+    Assertions.assertEquals(28, countAllOwnerRel(user.id()));
     Assertions.assertEquals(0, countActiveOwnerRel(user.id()));
   }
 

Reply via email to