From 2fb0e96aee567507daacdb8e3db1658a3e5f92ee Mon Sep 17 00:00:00 2001 From: wangbo <506340561@qq.com> Date: Fri, 7 Jun 2024 12:05:41 +0800 Subject: [PATCH 1/2] Fix show role stmt missing grouo info --- .../src/main/java/org/apache/doris/analysis/ShowRolesStmt.java | 1 + .../main/java/org/apache/doris/mysql/privilege/RoleManager.java | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/ShowRolesStmt.java b/fe/fe-core/src/main/java/org/apache/doris/analysis/ShowRolesStmt.java index 5131b99497c98f..bbb66b274438ee 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/analysis/ShowRolesStmt.java +++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/ShowRolesStmt.java @@ -44,6 +44,7 @@ public class ShowRolesStmt extends ShowStmt { builder.addColumn(new Column("CloudClusterPrivs", ScalarType.createVarchar(300))); builder.addColumn(new Column("CloudStagePrivs", ScalarType.createVarchar(300))); builder.addColumn(new Column("StorageVaultPrivs", ScalarType.createVarchar(300))); + builder.addColumn(new Column("WorkloadGroupPrivs", ScalarType.createVarchar(300))); META_DATA = builder.build(); } diff --git a/fe/fe-core/src/main/java/org/apache/doris/mysql/privilege/RoleManager.java b/fe/fe-core/src/main/java/org/apache/doris/mysql/privilege/RoleManager.java index be86b69a5c307a..93bd7f72fdc270 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/mysql/privilege/RoleManager.java +++ b/fe/fe-core/src/main/java/org/apache/doris/mysql/privilege/RoleManager.java @@ -199,7 +199,7 @@ public void getRoleInfo(List> results) { )); Stream.of(PrivLevel.GLOBAL, PrivLevel.CATALOG, PrivLevel.DATABASE, PrivLevel.TABLE, PrivLevel.RESOURCE, - PrivLevel.CLUSTER, PrivLevel.STAGE, PrivLevel.STORAGE_VAULT) + PrivLevel.CLUSTER, PrivLevel.STAGE, PrivLevel.STORAGE_VAULT, PrivLevel.WORKLOAD_GROUP) .forEach(level -> { String infoItem = infoMap.get(level); if (Strings.isNullOrEmpty(infoItem)) { From 54cd0e3d30abb82e664081a07abd90993c48468b Mon Sep 17 00:00:00 2001 From: wangbo <506340561@qq.com> Date: Fri, 7 Jun 2024 14:45:25 +0800 Subject: [PATCH 2/2] add ut --- .../doris/mysql/privilege/AuthTest.java | 42 +++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/fe/fe-core/src/test/java/org/apache/doris/mysql/privilege/AuthTest.java b/fe/fe-core/src/test/java/org/apache/doris/mysql/privilege/AuthTest.java index 884c75e2d1d05a..8f9e46a93947b0 100644 --- a/fe/fe-core/src/test/java/org/apache/doris/mysql/privilege/AuthTest.java +++ b/fe/fe-core/src/test/java/org/apache/doris/mysql/privilege/AuthTest.java @@ -55,6 +55,7 @@ import org.junit.Test; import java.lang.reflect.InvocationTargetException; +import java.util.ArrayList; import java.util.List; import java.util.Set; @@ -2393,4 +2394,45 @@ public void testSetInitialRootPassword() { Assert.assertTrue( auth.checkPlainPasswordForTest("root", "192.168.0.1", "validRootPassword", null)); } + + @Test + public void testShowRoles() { + String role = "test_wg_role"; + CreateRoleStmt roleStmt = new CreateRoleStmt(role); + try { + roleStmt.analyze(analyzer); + auth.createRole(roleStmt); + } catch (UserException e) { + e.printStackTrace(); + Assert.fail(); + } + + AccessPrivilege accessPrivilege = AccessPrivilege.fromName("USAGE_PRIV"); + AccessPrivilegeWithCols apwc = new AccessPrivilegeWithCols(accessPrivilege); + List list = new ArrayList<>(); + list.add(apwc); + WorkloadGroupPattern wgp = new WorkloadGroupPattern("test_wg"); + GrantStmt grantStmt = new GrantStmt(null, role, wgp, list); + try { + grantStmt.analyze(analyzer); + auth.grant(grantStmt); + } catch (UserException e) { + e.printStackTrace(); + Assert.fail(); + } + + List> showInfo = auth.getRoleInfo(); + boolean findWgPriv = false; + for (int i = 0; i < showInfo.size(); i++) { + List row = showInfo.get(i); + String name = row.get(0); + if (role.equals(name)) { + findWgPriv = true; + String wgPriv = row.get(row.size() - 1); + Assert.assertTrue("test_wg: Usage_priv".equals(wgPriv)); + } + } + Assert.assertTrue(findWgPriv); + + } }