This is an automated email from the ASF dual-hosted git repository. yongzao pushed a commit to branch rename-user-sql in repository https://gitbox.apache.org/repos/asf/iotdb.git
commit 346fb2aaa07e86735bd3b3fbb1a975b08e6f5e54 Author: Yongzao <[email protected]> AuthorDate: Sun Sep 28 16:38:59 2025 +0800 before refactor super user authentication --- .../request/write/auth/AuthorRelationalPlan.java | 3 ++- .../consensus/request/write/auth/AuthorTreePlan.java | 3 ++- .../confignode/persistence/auth/AuthorPlanExecutor.java | 6 +++--- .../service/thrift/ConfigNodeRPCServiceProcessor.java | 17 +++++++++-------- .../iotdb/db/queryengine/plan/parser/ASTVisitor.java | 9 ++++++++- .../db/queryengine/plan/statement/StatementType.java | 1 + .../queryengine/plan/statement/sys/AuthorStatement.java | 12 ++++++++++++ .../iotdb/commons/auth/user/BasicUserManager.java | 7 ++++--- 8 files changed, 41 insertions(+), 17 deletions(-) diff --git a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/auth/AuthorRelationalPlan.java b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/auth/AuthorRelationalPlan.java index c418aa70b4e..51f07c2452a 100644 --- a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/auth/AuthorRelationalPlan.java +++ b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/auth/AuthorRelationalPlan.java @@ -85,7 +85,8 @@ public class AuthorRelationalPlan extends AuthorPlan { permissions, grantOpt, password, - 0, ""); + 0, + ""); } public AuthorRelationalPlan( diff --git a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/auth/AuthorTreePlan.java b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/auth/AuthorTreePlan.java index 4df7aa89658..7e73948e84e 100644 --- a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/auth/AuthorTreePlan.java +++ b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/auth/AuthorTreePlan.java @@ -108,7 +108,8 @@ public class AuthorTreePlan extends AuthorPlan { permissions, grantOpt, nodeNameList, - 0, ""); + 0, + ""); } public AuthorTreePlan( diff --git a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/auth/AuthorPlanExecutor.java b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/auth/AuthorPlanExecutor.java index dd271090396..df7449e9744 100644 --- a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/auth/AuthorPlanExecutor.java +++ b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/auth/AuthorPlanExecutor.java @@ -245,9 +245,9 @@ public class AuthorPlanExecutor implements IAuthorPlanExecutor { case RUpdateUserV2: authorizer.updateUserPassword(userName, authorPlan.getPassword()); break; - case RRenameUser: - authorizer.renameUser(userName, roleName); - break; + case RRenameUser: + authorizer.renameUser(userName, roleName); + break; case RDropRole: authorizer.deleteRole(roleName); break; diff --git a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/service/thrift/ConfigNodeRPCServiceProcessor.java b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/service/thrift/ConfigNodeRPCServiceProcessor.java index 3d577bcdb1a..79d0c115ae3 100644 --- a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/service/thrift/ConfigNodeRPCServiceProcessor.java +++ b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/service/thrift/ConfigNodeRPCServiceProcessor.java @@ -638,9 +638,10 @@ public class ConfigNodeRPCServiceProcessor implements IConfigNodeRPCService.Ifac ConfigPhysicalPlanType configPhysicalPlanType; if (req.getAuthorType() == AuthorType.RENAME_USER.ordinal()) { configPhysicalPlanType = ConfigPhysicalPlanType.RenameUser; - } else {configPhysicalPlanType - =ConfigPhysicalPlanType.values()[ - req.getAuthorType() + ConfigPhysicalPlanType.CreateUser.ordinal()]; + } else { + configPhysicalPlanType = + ConfigPhysicalPlanType.values()[ + req.getAuthorType() + ConfigPhysicalPlanType.CreateUser.ordinal()]; switch (configPhysicalPlanType) { case UpdateUser: configPhysicalPlanType = ConfigPhysicalPlanType.UpdateUserV2; @@ -682,7 +683,8 @@ public class ConfigNodeRPCServiceProcessor implements IConfigNodeRPCService.Ifac req.getPermissions(), req.isGrantOpt(), AuthUtils.deserializePartialPathList(ByteBuffer.wrap(req.getNodeNameList())), - req.getExecutedByUserID(), req.getNewUsername())); + req.getExecutedByUserID(), + req.getNewUsername())); final TAuthorizerResp resp = new TAuthorizerResp(dataSet.getStatus()); resp.setMemberInfo(dataSet.getMemberList()); resp.setPermissionInfo(dataSet.getPermissionInfoResp()); @@ -700,10 +702,9 @@ public class ConfigNodeRPCServiceProcessor implements IConfigNodeRPCService.Ifac if (req.getAuthorType() == AuthorRType.RENAME_USER.ordinal()) { configPhysicalPlanType = ConfigPhysicalPlanType.RRenameUser; } else { - configPhysicalPlanType - = - ConfigPhysicalPlanType.values()[ - req.getAuthorType() + ConfigPhysicalPlanType.RCreateUser.ordinal()]; + configPhysicalPlanType = + ConfigPhysicalPlanType.values()[ + req.getAuthorType() + ConfigPhysicalPlanType.RCreateUser.ordinal()]; switch (configPhysicalPlanType) { case RUpdateUser: configPhysicalPlanType = ConfigPhysicalPlanType.RUpdateUserV2; diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/parser/ASTVisitor.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/parser/ASTVisitor.java index 5879159c16e..4960ae0ff49 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/parser/ASTVisitor.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/parser/ASTVisitor.java @@ -2499,7 +2499,6 @@ public class ASTVisitor extends IoTDBSqlParserBaseVisitor<Statement> { } // Create Role - @Override public Statement visitCreateRole(IoTDBSqlParser.CreateRoleContext ctx) { AuthorStatement authorStatement = new AuthorStatement(AuthorType.CREATE_ROLE); @@ -2516,6 +2515,14 @@ public class ASTVisitor extends IoTDBSqlParserBaseVisitor<Statement> { return authorStatement; } + @Override + public Statement visitRenameUser(IoTDBSqlParser.RenameUserContext ctx) { + AuthorStatement authorStatement = new AuthorStatement(AuthorType.RENAME_USER); + authorStatement.setUserName(parseIdentifier(ctx.username.getText())); + authorStatement.setNewUsername(parseIdentifier(ctx.newUsername.getText())); + return authorStatement; + } + // Grant User Privileges @Override public Statement visitGrantUser(IoTDBSqlParser.GrantUserContext ctx) { diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/StatementType.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/StatementType.java index 748241d189b..7351c392b52 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/StatementType.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/StatementType.java @@ -48,6 +48,7 @@ public enum StatementType { LIST_ROLE_USERS, GRANT_WATERMARK_EMBEDDING, REVOKE_WATERMARK_EMBEDDING, + RENAME_USER, STORAGE_GROUP_SCHEMA, DELETE_STORAGE_GROUP, diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/sys/AuthorStatement.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/sys/AuthorStatement.java index cbbbcd38698..f6226d0b8ee 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/sys/AuthorStatement.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/sys/AuthorStatement.java @@ -104,6 +104,9 @@ public class AuthorStatement extends Statement implements IConfigStatement { case LIST_ROLE: this.setType(StatementType.LIST_ROLE); break; + case RENAME_USER: + this.setType(StatementType.RENAME_USER); + break; default: throw new IllegalArgumentException("Unknown authorType: " + authorType); } @@ -188,6 +191,14 @@ public class AuthorStatement extends Statement implements IConfigStatement { this.executedByUserId = executedByUserId; } + public String getNewUsername() { + return newUsername; + } + + public void setNewUsername(String newUsername) { + this.newUsername = newUsername; + } + @Override public <R, C> R accept(StatementVisitor<R, C> visitor, C context) { return visitor.visitAuthor(this, context); @@ -208,6 +219,7 @@ public class AuthorStatement extends Statement implements IConfigStatement { case REVOKE_ROLE: case REVOKE_USER_ROLE: case UPDATE_USER: + case RENAME_USER: queryType = QueryType.WRITE; break; case LIST_USER: diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/auth/user/BasicUserManager.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/auth/user/BasicUserManager.java index c335896c6d2..aa97f52b0c4 100644 --- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/auth/user/BasicUserManager.java +++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/auth/user/BasicUserManager.java @@ -238,9 +238,10 @@ public abstract class BasicUserManager extends BasicRoleManager { User tmpUser = this.getEntity(newUsername); if (tmpUser != null) { throw new AuthException( - TSStatusCode.USER_ALREADY_EXIST, String.format("Cannot rename user %s to %s, because the target username is already existed.", - username, newUsername - )); + TSStatusCode.USER_ALREADY_EXIST, + String.format( + "Cannot rename user %s to %s, because the target username is already existed.", + username, newUsername)); } lock.writeLock(username); try {
