This is an automated email from the ASF dual-hosted git repository. jackietien pushed a commit to branch AuthHeaders in repository https://gitbox.apache.org/repos/asf/iotdb.git
commit f9059deadc638ef1f73e0b2d9a456ffe4efba36a Author: JackieTien97 <[email protected]> AuthorDate: Wed May 8 12:03:04 2024 +0800 [IOTDB-6326] Normalize the table headers of Auth related statement --- .../db/it/IoTDBSyntaxConventionIdentifierIT.java | 4 ++-- .../iotdb/db/it/auth/IoTDBClusterAuthorityIT.java | 3 ++- .../iotdb/confignode/persistence/AuthorInfo.java | 9 +++++---- .../org/apache/iotdb/db/auth/AuthorityChecker.java | 19 +++++++++---------- .../common/header/ColumnHeaderConstant.java | 13 +++++++++++++ .../org/apache/iotdb/commons/conf/IoTDBConstant.java | 6 +----- 6 files changed, 32 insertions(+), 22 deletions(-) diff --git a/integration-test/src/test/java/org/apache/iotdb/db/it/IoTDBSyntaxConventionIdentifierIT.java b/integration-test/src/test/java/org/apache/iotdb/db/it/IoTDBSyntaxConventionIdentifierIT.java index 3e9743bc8c8..247255cdfb6 100644 --- a/integration-test/src/test/java/org/apache/iotdb/db/it/IoTDBSyntaxConventionIdentifierIT.java +++ b/integration-test/src/test/java/org/apache/iotdb/db/it/IoTDBSyntaxConventionIdentifierIT.java @@ -615,7 +615,7 @@ public class IoTDBSyntaxConventionIdentifierIT { Set<String> expectedResult = new HashSet<>(Arrays.asList(resultNames)); try (ResultSet resultSet = statement.executeQuery("list user")) { while (resultSet.next()) { - String user = resultSet.getString("user").toLowerCase(); + String user = resultSet.getString(ColumnHeaderConstant.USER).toLowerCase(); Assert.assertTrue(expectedResult.contains(user)); expectedResult.remove(user); } @@ -678,7 +678,7 @@ public class IoTDBSyntaxConventionIdentifierIT { Set<String> expectedResult = new HashSet<>(Arrays.asList(resultNames)); try (ResultSet resultSet = statement.executeQuery("list role")) { while (resultSet.next()) { - String role = resultSet.getString("role").toLowerCase(); + String role = resultSet.getString(ColumnHeaderConstant.ROLE).toLowerCase(); Assert.assertTrue(expectedResult.contains(role)); expectedResult.remove(role); } diff --git a/integration-test/src/test/java/org/apache/iotdb/db/it/auth/IoTDBClusterAuthorityIT.java b/integration-test/src/test/java/org/apache/iotdb/db/it/auth/IoTDBClusterAuthorityIT.java index 9514474881b..8f82a151374 100644 --- a/integration-test/src/test/java/org/apache/iotdb/db/it/auth/IoTDBClusterAuthorityIT.java +++ b/integration-test/src/test/java/org/apache/iotdb/db/it/auth/IoTDBClusterAuthorityIT.java @@ -30,6 +30,7 @@ import org.apache.iotdb.confignode.rpc.thrift.IConfigNodeRPCService; import org.apache.iotdb.confignode.rpc.thrift.TAuthorizerReq; import org.apache.iotdb.confignode.rpc.thrift.TAuthorizerResp; import org.apache.iotdb.confignode.rpc.thrift.TCheckUserPrivilegesReq; +import org.apache.iotdb.db.queryengine.common.header.ColumnHeaderConstant; import org.apache.iotdb.db.queryengine.plan.statement.AuthorType; import org.apache.iotdb.it.env.EnvFactory; import org.apache.iotdb.it.framework.IoTDBTestRunner; @@ -366,7 +367,7 @@ public class IoTDBClusterAuthorityIT { authorizerResp = client.queryPermission(authorizerReq); status = authorizerResp.getStatus(); assertEquals(TSStatusCode.SUCCESS_STATUS.getStatusCode(), status.getCode()); - assertEquals(IoTDBConstant.COLUMN_PRIVILEGE, authorizerResp.getTag()); + assertEquals(ColumnHeaderConstant.PRIVILEGES, authorizerResp.getTag()); assertEquals("tempuser0", authorizerResp.getPermissionInfo().getUserInfo().getUsername()); assertEquals( new ArrayList<>(), authorizerResp.getPermissionInfo().getUserInfo().getPrivilegeList()); diff --git a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/AuthorInfo.java b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/AuthorInfo.java index f0be01f2b91..a01a56e8cec 100644 --- a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/AuthorInfo.java +++ b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/AuthorInfo.java @@ -45,6 +45,7 @@ import org.apache.iotdb.confignode.rpc.thrift.TPathPrivilege; import org.apache.iotdb.confignode.rpc.thrift.TPermissionInfoResp; import org.apache.iotdb.confignode.rpc.thrift.TRoleResp; import org.apache.iotdb.confignode.rpc.thrift.TUserResp; +import org.apache.iotdb.db.queryengine.common.header.ColumnHeaderConstant; import org.apache.iotdb.rpc.RpcUtils; import org.apache.iotdb.rpc.TSStatusCode; @@ -337,7 +338,7 @@ public class AuthorInfo implements SnapshotProcessor { } } } - result.setTag(IoTDBConstant.COLUMN_USER); + result.setTag(ColumnHeaderConstant.USER); result.setMemberInfo(userList); result.setStatus(RpcUtils.getStatus(TSStatusCode.SUCCESS_STATUS)); return result; @@ -359,7 +360,7 @@ public class AuthorInfo implements SnapshotProcessor { } roleList.addAll(user.getRoleList()); } - result.setTag(IoTDBConstant.COLUMN_ROLE); + result.setTag(ColumnHeaderConstant.ROLE); result.setMemberInfo(roleList); result.setStatus(RpcUtils.getStatus(TSStatusCode.SUCCESS_STATUS)); return result; @@ -393,7 +394,7 @@ public class AuthorInfo implements SnapshotProcessor { roleInfo.put(role.getName(), roleResp); resp.setRoleInfo(roleInfo); resp.setStatus(RpcUtils.getStatus(TSStatusCode.SUCCESS_STATUS)); - result.setTag(IoTDBConstant.COLUMN_PRIVILEGE); + result.setTag(ColumnHeaderConstant.PRIVILEGES); result.setPermissionInfoResp(resp); result.setStatus(RpcUtils.getStatus(TSStatusCode.SUCCESS_STATUS)); result.setMemberInfo(permissionInfo); @@ -410,7 +411,7 @@ public class AuthorInfo implements SnapshotProcessor { } TPermissionInfoResp resp = getUserPermissionInfo(plan.getUserName()); resp.setStatus(RpcUtils.getStatus(TSStatusCode.SUCCESS_STATUS)); - result.setTag(IoTDBConstant.COLUMN_PRIVILEGE); + result.setTag(ColumnHeaderConstant.PRIVILEGES); result.setPermissionInfoResp(resp); result.setStatus(RpcUtils.getStatus(TSStatusCode.SUCCESS_STATUS)); return result; diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/auth/AuthorityChecker.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/auth/AuthorityChecker.java index d85606d3def..c484121b5d2 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/auth/AuthorityChecker.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/auth/AuthorityChecker.java @@ -33,6 +33,7 @@ import org.apache.iotdb.confignode.rpc.thrift.TRoleResp; import org.apache.iotdb.confignode.rpc.thrift.TUserResp; import org.apache.iotdb.db.protocol.session.IClientSession; import org.apache.iotdb.db.queryengine.common.header.ColumnHeader; +import org.apache.iotdb.db.queryengine.common.header.ColumnHeaderConstant; import org.apache.iotdb.db.queryengine.common.header.DatasetHeader; import org.apache.iotdb.db.queryengine.plan.execution.config.ConfigTaskResult; import org.apache.iotdb.db.queryengine.plan.statement.Statement; @@ -51,6 +52,9 @@ import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Set; +import java.util.stream.Collectors; + +import static org.apache.iotdb.db.queryengine.common.header.ColumnHeaderConstant.LIST_USER_PRIVILEGES_Column_HEADERS; // Authority checker is SingleTon working at datanode. // It checks permission in local. DCL statement will send to confignode. @@ -206,8 +210,8 @@ public class AuthorityChecker { TAuthorizerResp authResp, SettableFuture<ConfigTaskResult> future) { List<TSDataType> types = new ArrayList<>(); boolean listRoleUser = - authResp.tag.equals(IoTDBConstant.COLUMN_ROLE) - || authResp.tag.equals(IoTDBConstant.COLUMN_USER); + authResp.tag.equals(ColumnHeaderConstant.ROLE) + || authResp.tag.equals(ColumnHeaderConstant.USER); List<ColumnHeader> headerList = new ArrayList<>(); TsBlockBuilder builder; @@ -221,14 +225,9 @@ public class AuthorityChecker { builder.declarePosition(); } } else { - headerList.add(new ColumnHeader("ROLE", TSDataType.TEXT)); - types.add(TSDataType.TEXT); - headerList.add(new ColumnHeader("PATH", TSDataType.TEXT)); - types.add(TSDataType.TEXT); - headerList.add(new ColumnHeader("PRIVILEGES", TSDataType.TEXT)); - types.add(TSDataType.TEXT); - headerList.add(new ColumnHeader("GRANT OPTION", TSDataType.BOOLEAN)); - types.add(TSDataType.BOOLEAN); + headerList = LIST_USER_PRIVILEGES_Column_HEADERS; + types = LIST_USER_PRIVILEGES_Column_HEADERS.stream().map(ColumnHeader::getColumnType) + .collect(Collectors.toList()); builder = new TsBlockBuilder(types); TUserResp user = authResp.getPermissionInfo().getUserInfo(); if (user != null) { diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/common/header/ColumnHeaderConstant.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/common/header/ColumnHeaderConstant.java index ea2fad8805f..ff5228722a3 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/common/header/ColumnHeaderConstant.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/common/header/ColumnHeaderConstant.java @@ -68,6 +68,7 @@ public class ColumnHeaderConstant { public static final String VERSION = "Version"; public static final String BUILD_INFO = "BuildInfo"; public static final String PATHS = "Paths"; + public static final String PATH = "Path"; public static final String VARIABLE = "Variable"; // column names for count statement @@ -199,6 +200,11 @@ public class ColumnHeaderConstant { // column names for show current timestamp public static final String CURRENT_TIMESTAMP = "CurrentTimestamp"; + public static final String PRIVILEGES = "Privileges"; + + public static final String GRANT_OPTION = "GrantOption"; + + public static final List<ColumnHeader> lastQueryColumnHeaders = ImmutableList.of( new ColumnHeader(TIMESERIES, TSDataType.TEXT), @@ -488,4 +494,11 @@ public class ColumnHeaderConstant { public static final List<ColumnHeader> showCurrentTimestampColumnHeaders = ImmutableList.of(new ColumnHeader(CURRENT_TIMESTAMP, TSDataType.INT64)); + + public static final List<ColumnHeader> LIST_USER_PRIVILEGES_Column_HEADERS = + ImmutableList.of( + new ColumnHeader(ROLE, TSDataType.TEXT), + new ColumnHeader(PATH, TSDataType.TEXT), + new ColumnHeader(PRIVILEGES, TSDataType.TEXT), + new ColumnHeader(GRANT_OPTION, TSDataType.TEXT)); } diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/conf/IoTDBConstant.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/conf/IoTDBConstant.java index 88df1615a58..439afd945a7 100644 --- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/conf/IoTDBConstant.java +++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/conf/IoTDBConstant.java @@ -169,11 +169,7 @@ public class IoTDBConstant { public static final String COLUMN_DISTRIBUTION_PLAN = "distribution plan"; public static final String QUERY_ID = "queryId"; public static final String STATEMENT = "statement"; - - public static final String COLUMN_ROLE = "role"; - public static final String COLUMN_USER = "user"; - public static final String COLUMN_PRIVILEGE = "privilege"; - + public static final String COLUMN_DATABASE = "database"; public static final String COLUMN_TTL = "ttl";
