You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by ja...@apache.org on 2025/09/16 00:26:37 UTC
(iotdb) branch master updated: Using Visitor design pattern to refactor the access control logical
This is an automated email from the ASF dual-hosted git repository.
jackietien pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/iotdb.git
The following commit(s) were added to refs/heads/master by this push:
new 33f1e360787 Using Visitor design pattern to refactor the access control logical
33f1e360787 is described below
commit 33f1e360787f711fe808364ec09f05ef4867b44b
Author: Jackie Tien <ja...@gmail.com>
AuthorDate: Tue Sep 16 08:26:32 2025 +0800
Using Visitor design pattern to refactor the access control logical
---
.../org/apache/iotdb/db/it/auth/IoTDBAuthIT.java | 8 +-
.../iotdb/db/it/auth/IoTDBClusterAuthorityIT.java | 17 +-
.../antlr4/org/apache/iotdb/db/qp/sql/SqlLexer.g4 | 8 +
.../org/apache/iotdb/db/auth/AuthorityChecker.java | 33 +-
.../apache/iotdb/db/auth/IAuthorityFetcher.java | 2 +-
.../visitor/PipeStatementTSStatusVisitor.java | 3 +-
.../iotdb/db/queryengine/plan/Coordinator.java | 5 +-
.../db/queryengine/plan/parser/ASTVisitor.java | 2 +-
.../plan/relational/security/AccessControl.java | 16 +
.../relational/security/AccessControlImpl.java | 24 +-
.../relational/security/AllowAllAccessControl.java | 14 +
.../relational/security/TableModelPrivilege.java | 18 +
.../security/TreeAccessCheckContext.java} | 24 +-
.../security/TreeAccessCheckVisitor.java | 1078 ++++++++++++++++++++
.../statement/AuthorityInformationStatement.java | 21 +-
.../db/queryengine/plan/statement/Statement.java | 8 -
.../plan/statement/StatementVisitor.java | 19 +-
.../plan/statement/crud/DeleteDataStatement.java | 17 -
.../plan/statement/crud/InsertBaseStatement.java | 17 -
.../plan/statement/crud/InsertStatement.java | 17 -
.../plan/statement/crud/LoadTsFileStatement.java | 8 -
.../plan/statement/crud/QueryStatement.java | 18 -
.../InternalBatchActivateTemplateStatement.java | 17 -
.../InternalCreateMultiTimeSeriesStatement.java | 17 -
.../InternalCreateTimeSeriesStatement.java | 17 -
.../metadata/AlterTimeSeriesStatement.java | 15 -
.../statement/metadata/CountDevicesStatement.java | 25 -
.../metadata/CountTimeSeriesStatement.java | 25 -
.../metadata/CountTimeSlotListStatement.java | 7 -
.../metadata/CreateAlignedTimeSeriesStatement.java | 17 -
.../metadata/CreateContinuousQueryStatement.java | 14 -
.../metadata/CreateFunctionStatement.java | 14 -
.../metadata/CreateMultiTimeSeriesStatement.java | 17 -
.../metadata/CreateTimeSeriesStatement.java | 15 -
.../statement/metadata/CreateTriggerStatement.java | 14 -
.../metadata/DatabaseSchemaStatement.java | 14 -
.../metadata/DeleteDatabaseStatement.java | 14 -
.../metadata/DeleteTimeSeriesStatement.java | 17 -
.../metadata/DropContinuousQueryStatement.java | 14 -
.../statement/metadata/DropFunctionStatement.java | 14 -
.../statement/metadata/DropTriggerStatement.java | 14 -
.../statement/metadata/GetRegionIdStatement.java | 7 -
.../metadata/GetSeriesSlotListStatement.java | 7 -
.../metadata/GetTimeSlotListStatement.java | 7 -
.../statement/metadata/RemoveAINodeStatement.java | 7 -
.../metadata/RemoveConfigNodeStatement.java | 7 -
.../metadata/RemoveDataNodeStatement.java | 7 -
.../plan/statement/metadata/SetTTLStatement.java | 17 -
.../statement/metadata/ShowClusterIdStatement.java | 7 -
.../statement/metadata/ShowClusterStatement.java | 7 -
.../metadata/ShowConfigNodesStatement.java | 7 -
.../metadata/ShowContinuousQueriesStatement.java | 14 -
.../statement/metadata/ShowDataNodesStatement.java | 7 -
.../statement/metadata/ShowDevicesStatement.java | 25 -
.../statement/metadata/ShowFunctionsStatement.java | 14 -
.../statement/metadata/ShowRegionStatement.java | 7 -
.../metadata/ShowTimeSeriesStatement.java | 25 -
.../statement/metadata/ShowTriggersStatement.java | 14 -
.../statement/metadata/ShowVariablesStatement.java | 7 -
.../metadata/model/CreateModelStatement.java | 14 -
.../metadata/model/DropModelStatement.java | 14 -
.../metadata/model/ShowAINodesStatement.java | 7 -
.../metadata/model/ShowModelsStatement.java | 14 -
.../metadata/pipe/AlterPipeStatement.java | 14 -
.../metadata/pipe/CreatePipePluginStatement.java | 14 -
.../metadata/pipe/CreatePipeStatement.java | 14 -
.../metadata/pipe/DropPipePluginStatement.java | 14 -
.../statement/metadata/pipe/DropPipeStatement.java | 14 -
.../metadata/pipe/ShowPipePluginsStatement.java | 14 -
.../metadata/pipe/ShowPipesStatement.java | 14 -
.../metadata/pipe/StartPipeStatement.java | 14 -
.../statement/metadata/pipe/StopPipeStatement.java | 14 -
.../metadata/region/ExtendRegionStatement.java | 7 -
.../metadata/region/MigrateRegionStatement.java | 7 -
.../region/ReconstructRegionStatement.java | 7 -
.../metadata/region/RemoveRegionStatement.java | 7 -
.../subscription/CreateTopicStatement.java | 14 -
.../subscription/DropSubscriptionStatement.java | 14 -
.../metadata/subscription/DropTopicStatement.java | 14 -
.../subscription/ShowSubscriptionsStatement.java | 14 -
.../metadata/subscription/ShowTopicsStatement.java | 14 -
.../template/ActivateTemplateStatement.java | 17 -
.../template/BatchActivateTemplateStatement.java | 17 -
.../template/DeactivateTemplateStatement.java | 24 +-
.../ShowNodesInSchemaTemplateStatement.java | 9 -
.../template/ShowPathSetTemplateStatement.java | 9 -
.../template/ShowSchemaTemplateStatement.java | 9 -
.../metadata/view/AlterLogicalViewStatement.java | 39 -
.../metadata/view/CreateLogicalViewStatement.java | 52 +-
.../metadata/view/DeleteLogicalViewStatement.java | 17 -
.../metadata/view/RenameLogicalViewStatement.java | 19 -
.../plan/statement/sys/AuthorStatement.java | 135 ---
.../statement/sys/ExplainAnalyzeStatement.java | 6 -
.../plan/statement/sys/KillQueryStatement.java | 7 -
.../plan/statement/sys/SetSqlDialectStatement.java | 8 -
.../sys/ShowCurrentSqlDialectStatement.java | 8 -
.../statement/sys/ShowCurrentUserStatement.java | 8 -
.../plan/statement/sys/ShowQueriesStatement.java | 7 -
.../plan/statement/sys/ShowVersionStatement.java | 8 -
.../statement/sys/TestConnectionStatement.java | 7 -
...vertedInsertTabletStatementTSStatusVisitor.java | 3 +-
.../org/apache/iotdb/db/auth/entity/RoleTest.java | 16 +-
.../plan/parser/StatementGeneratorTest.java | 8 +-
.../plan/relational/analyzer/AuthTest.java | 14 +-
.../iotdb/commons/auth/entity/PrivilegeType.java | 21 +-
.../org/apache/iotdb/commons/auth/entity/Role.java | 3 +-
.../iotdb/commons/auth/user/BasicUserManager.java | 3 +
.../org/apache/iotdb/commons/utils/AuthUtils.java | 33 +
.../db/relational/grammar/sql/RelationalSql.g4 | 1 +
109 files changed, 1316 insertions(+), 1336 deletions(-)
diff --git a/integration-test/src/test/java/org/apache/iotdb/db/it/auth/IoTDBAuthIT.java b/integration-test/src/test/java/org/apache/iotdb/db/it/auth/IoTDBAuthIT.java
index 0d963f9e1a4..c15d84651df 100644
--- a/integration-test/src/test/java/org/apache/iotdb/db/it/auth/IoTDBAuthIT.java
+++ b/integration-test/src/test/java/org/apache/iotdb/db/it/auth/IoTDBAuthIT.java
@@ -993,7 +993,7 @@ public class IoTDBAuthIT {
// 2. USER1 has all privileges on root.**
for (PrivilegeType item : PrivilegeType.values()) {
- if (item.isRelationalPrivilege()) {
+ if (item.isRelationalPrivilege() || item.isAdminPrivilege()) {
continue;
}
String sql = "GRANT %s on root.** to USER user1";
@@ -1020,7 +1020,7 @@ public class IoTDBAuthIT {
// 4. USER2 has all privilegs on root.** with grant option;
for (PrivilegeType item : PrivilegeType.values()) {
- if (item.isRelationalPrivilege()) {
+ if (item.isRelationalPrivilege() || item.isAdminPrivilege()) {
continue;
}
String sql = "GRANT %s on root.** to USER user2 with grant option";
@@ -1150,7 +1150,7 @@ public class IoTDBAuthIT {
// user2 has all privileges without grant option on root.**
// user2 has all privileges without grant option on root.t1.**
for (PrivilegeType item : PrivilegeType.values()) {
- if (item.isRelationalPrivilege()) {
+ if (item.isRelationalPrivilege() || item.isAdminPrivilege()) {
continue;
}
String sql = "GRANT %s on root.** to USER user1 WITH GRANT OPTION";
@@ -1168,7 +1168,7 @@ public class IoTDBAuthIT {
try {
// revoke privileges on root.** and root.t1.**
for (PrivilegeType item : PrivilegeType.values()) {
- if (item.isRelationalPrivilege()) {
+ if (item.isRelationalPrivilege() || item.isAdminPrivilege()) {
continue;
}
user1Stmt.execute(String.format("REVOKE %s ON root.** FROM USER user2", item));
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 cbaa0690114..b867160dd45 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
@@ -465,19 +465,16 @@ public class IoTDBClusterAuthorityIT {
.size());
assertEquals(
PrivilegeType.getPrivilegeCount(PrivilegeModelType.SYSTEM),
- authorizerResp
- .getPermissionInfo()
- .getUserInfo()
- .getPermissionInfo()
- .getSysPriSet()
- .size());
+ authorizerResp.getPermissionInfo().getUserInfo().getPermissionInfo().getSysPriSet().size()
+ + 3);
assertEquals(
PrivilegeType.getPrivilegeCount(PrivilegeModelType.SYSTEM),
authorizerResp
- .getPermissionInfo()
- .getUserInfo()
- .getPermissionInfo()
- .getSysPriSetGrantOptSize());
+ .getPermissionInfo()
+ .getUserInfo()
+ .getPermissionInfo()
+ .getSysPriSetGrantOptSize()
+ + 3);
authorizerReq =
new TAuthorizerReq(
diff --git a/iotdb-core/antlr/src/main/antlr4/org/apache/iotdb/db/qp/sql/SqlLexer.g4 b/iotdb-core/antlr/src/main/antlr4/org/apache/iotdb/db/qp/sql/SqlLexer.g4
index 72b4001390d..4a5708817a7 100644
--- a/iotdb-core/antlr/src/main/antlr4/org/apache/iotdb/db/qp/sql/SqlLexer.g4
+++ b/iotdb-core/antlr/src/main/antlr4/org/apache/iotdb/db/qp/sql/SqlLexer.g4
@@ -1138,6 +1138,14 @@ MAINTAIN
: M A I N T A I N
;
+SECURITY
+ : S E C U R I T Y
+ ;
+
+AUDIT
+ : A U D I T
+ ;
+
REPAIR
: R E P A I R
;
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 71f064008df..504e0250186 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
@@ -38,6 +38,9 @@ import org.apache.iotdb.db.pipe.source.dataregion.realtime.listener.PipeInsertio
import org.apache.iotdb.db.protocol.session.IClientSession;
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.relational.security.AccessControlImpl;
+import org.apache.iotdb.db.queryengine.plan.relational.security.ITableAuthCheckerImpl;
+import org.apache.iotdb.db.queryengine.plan.relational.security.TreeAccessCheckVisitor;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.RelationalAuthorStatement;
import org.apache.iotdb.db.queryengine.plan.statement.Statement;
import org.apache.iotdb.db.queryengine.plan.statement.sys.AuthorStatement;
@@ -55,6 +58,7 @@ import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.Set;
+import java.util.StringJoiner;
import java.util.stream.Collectors;
import static org.apache.iotdb.commons.schema.column.ColumnHeaderConstant.LIST_USER_OR_ROLE_PRIVILEGES_COLUMN_HEADERS;
@@ -63,7 +67,7 @@ import static org.apache.iotdb.commons.schema.column.ColumnHeaderConstant.LIST_U
// It checks permission in local. DCL statement will send to configNode.
public class AuthorityChecker {
- public static final String SUPER_USER = CommonDescriptor.getInstance().getConfig().getAdminName();
+ public static String SUPER_USER = CommonDescriptor.getInstance().getConfig().getAdminName();
public static final TSStatus SUCCEED = new TSStatus(TSStatusCode.SUCCESS_STATUS.getStatusCode());
@@ -82,10 +86,25 @@ public class AuthorityChecker {
private static final PerformanceOverviewMetrics PERFORMANCE_OVERVIEW_METRICS =
PerformanceOverviewMetrics.getInstance();
+ private static AccessControlImpl accessControl =
+ new AccessControlImpl(new ITableAuthCheckerImpl(), new TreeAccessCheckVisitor());
+
private AuthorityChecker() {
// empty constructor
}
+ public static AccessControlImpl getAccessControl() {
+ return accessControl;
+ }
+
+ public static void setAccessControl(AccessControlImpl accessControl) {
+ AuthorityChecker.accessControl = accessControl;
+ }
+
+ public static void setSuperUser(String superUser) {
+ SUPER_USER = superUser;
+ }
+
public static IAuthorityFetcher getAuthorityFetcher() {
return authorityFetcher.get();
}
@@ -122,7 +141,7 @@ public class AuthorityChecker {
public static TSStatus checkAuthority(Statement statement, IClientSession session) {
long startTime = System.nanoTime();
try {
- return statement.checkPermissionBeforeProcess(session.getUsername());
+ return accessControl.checkPermissionBeforeProcess(statement, session.getUsername());
} finally {
PERFORMANCE_OVERVIEW_METRICS.recordAuthCost(System.nanoTime() - startTime);
}
@@ -131,7 +150,7 @@ public class AuthorityChecker {
public static TSStatus checkAuthority(Statement statement, String userName) {
long startTime = System.nanoTime();
try {
- return statement.checkPermissionBeforeProcess(userName);
+ return accessControl.checkPermissionBeforeProcess(statement, userName);
} finally {
PERFORMANCE_OVERVIEW_METRICS.recordAuthCost(System.nanoTime() - startTime);
}
@@ -157,6 +176,14 @@ public class AuthorityChecker {
.setMessage(NO_PERMISSION_PROMOTION + neededPrivilege);
}
+ private static String getSatisfyAnyNeededPrivilegeString(List<PrivilegeType> privileges) {
+ StringJoiner sj = new StringJoiner("/");
+ for (PrivilegeType privilege : privileges) {
+ sj.add(privilege.toString());
+ }
+ return sj.toString();
+ }
+
public static TSStatus getGrantOptTSStatus(
boolean hasPermission, PrivilegeType neededPrivilege, String database) {
return hasPermission
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/auth/IAuthorityFetcher.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/auth/IAuthorityFetcher.java
index 6b93c211fd6..51b9212cf45 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/auth/IAuthorityFetcher.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/auth/IAuthorityFetcher.java
@@ -45,7 +45,7 @@ public interface IAuthorityFetcher {
TSStatus checkUserPathPrivilegesGrantOpt(
String username, List<? extends PartialPath> allPath, PrivilegeType permission);
- TSStatus checkUserSysPrivileges(String username, PrivilegeType permission);
+ TSStatus checkUserSysPrivileges(String username, PrivilegeType permissions);
TSStatus checkUserDBPrivileges(String username, String database, PrivilegeType permission);
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/receiver/visitor/PipeStatementTSStatusVisitor.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/receiver/visitor/PipeStatementTSStatusVisitor.java
index 0874857c3f7..8d7a567fce0 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/receiver/visitor/PipeStatementTSStatusVisitor.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/receiver/visitor/PipeStatementTSStatusVisitor.java
@@ -95,7 +95,8 @@ public class PipeStatementTSStatusVisitor extends StatementVisitor<TSStatus, TSS
return visitInsertBase(insertMultiTabletsStatement, context);
}
- private TSStatus visitInsertBase(
+ @Override
+ public TSStatus visitInsertBase(
final InsertBaseStatement insertBaseStatement, final TSStatus context) {
if (context.getCode() == TSStatusCode.SYSTEM_READ_ONLY.getStatusCode()
|| context.getCode() == TSStatusCode.WRITE_PROCESS_REJECT.getStatusCode()) {
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/Coordinator.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/Coordinator.java
index 2e1132b984f..e179157ff4d 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/Coordinator.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/Coordinator.java
@@ -29,6 +29,7 @@ import org.apache.iotdb.commons.concurrent.ThreadName;
import org.apache.iotdb.commons.conf.CommonConfig;
import org.apache.iotdb.commons.conf.CommonDescriptor;
import org.apache.iotdb.commons.conf.IoTDBConstant;
+import org.apache.iotdb.db.auth.AuthorityChecker;
import org.apache.iotdb.db.conf.IoTDBConfig;
import org.apache.iotdb.db.conf.IoTDBDescriptor;
import org.apache.iotdb.db.protocol.session.IClientSession;
@@ -56,8 +57,6 @@ import org.apache.iotdb.db.queryengine.plan.relational.planner.optimizations.Dis
import org.apache.iotdb.db.queryengine.plan.relational.planner.optimizations.LogicalOptimizeFactory;
import org.apache.iotdb.db.queryengine.plan.relational.planner.optimizations.PlanOptimizer;
import org.apache.iotdb.db.queryengine.plan.relational.security.AccessControl;
-import org.apache.iotdb.db.queryengine.plan.relational.security.AccessControlImpl;
-import org.apache.iotdb.db.queryengine.plan.relational.security.ITableAuthCheckerImpl;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.AddColumn;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.AlterDB;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.ClearCache;
@@ -204,7 +203,7 @@ public class Coordinator {
dispatchThreadNum,
dispatchThreadNum,
new ThreadPoolExecutor.CallerRunsPolicy());
- this.accessControl = new AccessControlImpl(new ITableAuthCheckerImpl());
+ this.accessControl = AuthorityChecker.getAccessControl();
this.statementRewrite = new StatementRewriteFactory().getStatementRewrite();
this.logicalPlanOptimizers =
new LogicalOptimizeFactory(
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 f7ee6b7c634..06c6d345d09 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
@@ -2659,7 +2659,7 @@ public class ASTVisitor extends IoTDBSqlParserBaseVisitor<Statement> {
continue;
} else if (priv.equalsIgnoreCase("ALL")) {
for (PrivilegeType type : PrivilegeType.values()) {
- if (type.isRelationalPrivilege()) {
+ if (type.isRelationalPrivilege() || type.isAdminPrivilege()) {
continue;
}
privSet.add(type.toString());
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/security/AccessControl.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/security/AccessControl.java
index 739680b47fb..b91c75b0407 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/security/AccessControl.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/security/AccessControl.java
@@ -19,13 +19,17 @@
package org.apache.iotdb.db.queryengine.plan.relational.security;
+import org.apache.iotdb.common.rpc.thrift.TSStatus;
import org.apache.iotdb.commons.exception.auth.AccessDeniedException;
import org.apache.iotdb.commons.path.PartialPath;
import org.apache.iotdb.db.queryengine.plan.relational.metadata.QualifiedObjectName;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.RelationalAuthorStatement;
+import org.apache.iotdb.db.queryengine.plan.statement.Statement;
public interface AccessControl {
+ // ====================================== TABLE =============================================
+
/**
* Check if user is allowed to create the specified database.
*
@@ -162,4 +166,16 @@ public interface AccessControl {
* @throws AccessDeniedException if not allowed
*/
void checkUserIsAdmin(String userName);
+
+ /**
+ * Check if user has global SYSTEM privilege
+ *
+ * @param userName name of user
+ * @throws AccessDeniedException if not allowed
+ */
+ void checkUserGlobalSysPrivilege(String userName);
+
+ // ====================================== TREE =============================================
+
+ TSStatus checkPermissionBeforeProcess(Statement statement, String userName);
}
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/security/AccessControlImpl.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/security/AccessControlImpl.java
index abfb7e48901..50c8d9b2e87 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/security/AccessControlImpl.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/security/AccessControlImpl.java
@@ -29,6 +29,9 @@ import org.apache.iotdb.db.exception.sql.SemanticException;
import org.apache.iotdb.db.queryengine.plan.relational.metadata.QualifiedObjectName;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.RelationalAuthorStatement;
import org.apache.iotdb.db.queryengine.plan.relational.type.AuthorRType;
+import org.apache.iotdb.db.queryengine.plan.statement.Statement;
+import org.apache.iotdb.db.queryengine.plan.statement.StatementVisitor;
+import org.apache.iotdb.db.queryengine.plan.statement.sys.AuthorStatement;
import org.apache.iotdb.db.schemaengine.table.InformationSchemaUtils;
import org.apache.iotdb.rpc.TSStatusCode;
@@ -40,8 +43,12 @@ public class AccessControlImpl implements AccessControl {
private final ITableAuthChecker authChecker;
- public AccessControlImpl(ITableAuthChecker authChecker) {
+ private final StatementVisitor<TSStatus, TreeAccessCheckContext> treeAccessCheckVisitor;
+
+ public AccessControlImpl(
+ ITableAuthChecker authChecker, StatementVisitor<TSStatus, TreeAccessCheckContext> visitor) {
this.authChecker = authChecker;
+ this.treeAccessCheckVisitor = visitor;
}
@Override
@@ -358,4 +365,19 @@ public class AccessControlImpl implements AccessControl {
throw new AccessDeniedException(ONLY_ADMIN_ALLOWED);
}
}
+
+ @Override
+ public void checkUserGlobalSysPrivilege(String userName) {
+ if (!AuthorityChecker.SUPER_USER.equals(userName)) {
+ authChecker.checkGlobalPrivilege(userName, TableModelPrivilege.SYSTEM);
+ }
+ }
+
+ @Override
+ public TSStatus checkPermissionBeforeProcess(Statement statement, String userName) {
+ if (AuthorityChecker.SUPER_USER.equals(userName) && !(statement instanceof AuthorStatement)) {
+ return new TSStatus(TSStatusCode.SUCCESS_STATUS.getStatusCode());
+ }
+ return treeAccessCheckVisitor.process(statement, new TreeAccessCheckContext(userName));
+ }
}
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/security/AllowAllAccessControl.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/security/AllowAllAccessControl.java
index c48533c231a..c6f8237b2c9 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/security/AllowAllAccessControl.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/security/AllowAllAccessControl.java
@@ -19,9 +19,13 @@
package org.apache.iotdb.db.queryengine.plan.relational.security;
+import org.apache.iotdb.common.rpc.thrift.TSStatus;
import org.apache.iotdb.commons.path.PartialPath;
import org.apache.iotdb.db.queryengine.plan.relational.metadata.QualifiedObjectName;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.RelationalAuthorStatement;
+import org.apache.iotdb.db.queryengine.plan.statement.Statement;
+
+import static org.apache.iotdb.db.auth.AuthorityChecker.SUCCEED;
public class AllowAllAccessControl implements AccessControl {
@Override
@@ -104,4 +108,14 @@ public class AllowAllAccessControl implements AccessControl {
public void checkUserIsAdmin(String userName) {
// allow anything
}
+
+ @Override
+ public void checkUserGlobalSysPrivilege(String userName) {
+ // allow anything
+ }
+
+ @Override
+ public TSStatus checkPermissionBeforeProcess(Statement statement, String userName) {
+ return SUCCEED;
+ }
}
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/security/TableModelPrivilege.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/security/TableModelPrivilege.java
index d8ec3d437a0..3372d3af75f 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/security/TableModelPrivilege.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/security/TableModelPrivilege.java
@@ -23,9 +23,15 @@ import org.apache.iotdb.commons.auth.entity.PrivilegeType;
public enum TableModelPrivilege {
// global privilege
+ @Deprecated
MANAGE_USER,
+ @Deprecated
MANAGE_ROLE,
+ SYSTEM,
+ SECURITY,
+ AUDIT,
+
// scope privilege
CREATE,
DROP,
@@ -52,6 +58,12 @@ public enum TableModelPrivilege {
return PrivilegeType.INSERT;
case DELETE:
return PrivilegeType.DELETE;
+ case SYSTEM:
+ return PrivilegeType.SYSTEM;
+ case SECURITY:
+ return PrivilegeType.SECURITY;
+ case AUDIT:
+ return PrivilegeType.AUDIT;
default:
throw new IllegalStateException("Unexpected value:" + this);
}
@@ -75,6 +87,12 @@ public enum TableModelPrivilege {
return TableModelPrivilege.INSERT;
case DELETE:
return TableModelPrivilege.DELETE;
+ case SYSTEM:
+ return TableModelPrivilege.SYSTEM;
+ case SECURITY:
+ return TableModelPrivilege.SECURITY;
+ case AUDIT:
+ return TableModelPrivilege.AUDIT;
default:
throw new IllegalStateException("Unexpected value:" + privilegeType);
}
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/sys/ShowVersionStatement.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/security/TreeAccessCheckContext.java
similarity index 54%
copy from iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/sys/ShowVersionStatement.java
copy to iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/security/TreeAccessCheckContext.java
index 69825844311..231f49332eb 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/sys/ShowVersionStatement.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/security/TreeAccessCheckContext.java
@@ -17,27 +17,13 @@
* under the License.
*/
-package org.apache.iotdb.db.queryengine.plan.statement.sys;
+package org.apache.iotdb.db.queryengine.plan.relational.security;
-import org.apache.iotdb.common.rpc.thrift.TSStatus;
-import org.apache.iotdb.db.queryengine.plan.statement.StatementVisitor;
-import org.apache.iotdb.db.queryengine.plan.statement.metadata.ShowStatement;
+public class TreeAccessCheckContext {
-import static org.apache.iotdb.db.auth.AuthorityChecker.SUCCEED;
+ final String userName;
-public class ShowVersionStatement extends ShowStatement {
-
- public ShowVersionStatement() {
- // do nothing
- }
-
- @Override
- public <R, C> R accept(StatementVisitor<R, C> visitor, C context) {
- return visitor.visitShowVersion(this, context);
- }
-
- @Override
- public TSStatus checkPermissionBeforeProcess(String userName) {
- return SUCCEED;
+ public TreeAccessCheckContext(String userName) {
+ this.userName = userName;
}
}
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/security/TreeAccessCheckVisitor.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/security/TreeAccessCheckVisitor.java
new file mode 100644
index 00000000000..59dac2ae372
--- /dev/null
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/security/TreeAccessCheckVisitor.java
@@ -0,0 +1,1078 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.iotdb.db.queryengine.plan.relational.security;
+
+import org.apache.iotdb.common.rpc.thrift.TSStatus;
+import org.apache.iotdb.commons.auth.AuthException;
+import org.apache.iotdb.commons.auth.entity.PrivilegeType;
+import org.apache.iotdb.commons.conf.IoTDBConstant;
+import org.apache.iotdb.commons.path.PartialPath;
+import org.apache.iotdb.commons.path.PathPatternTreeUtils;
+import org.apache.iotdb.db.auth.AuthorityChecker;
+import org.apache.iotdb.db.queryengine.plan.statement.AuthorType;
+import org.apache.iotdb.db.queryengine.plan.statement.AuthorityInformationStatement;
+import org.apache.iotdb.db.queryengine.plan.statement.StatementNode;
+import org.apache.iotdb.db.queryengine.plan.statement.StatementVisitor;
+import org.apache.iotdb.db.queryengine.plan.statement.crud.DeleteDataStatement;
+import org.apache.iotdb.db.queryengine.plan.statement.crud.InsertBaseStatement;
+import org.apache.iotdb.db.queryengine.plan.statement.crud.InsertStatement;
+import org.apache.iotdb.db.queryengine.plan.statement.crud.LoadTsFileStatement;
+import org.apache.iotdb.db.queryengine.plan.statement.crud.QueryStatement;
+import org.apache.iotdb.db.queryengine.plan.statement.internal.InternalBatchActivateTemplateStatement;
+import org.apache.iotdb.db.queryengine.plan.statement.internal.InternalCreateMultiTimeSeriesStatement;
+import org.apache.iotdb.db.queryengine.plan.statement.internal.InternalCreateTimeSeriesStatement;
+import org.apache.iotdb.db.queryengine.plan.statement.metadata.AlterTimeSeriesStatement;
+import org.apache.iotdb.db.queryengine.plan.statement.metadata.CountDatabaseStatement;
+import org.apache.iotdb.db.queryengine.plan.statement.metadata.CountDevicesStatement;
+import org.apache.iotdb.db.queryengine.plan.statement.metadata.CountLevelTimeSeriesStatement;
+import org.apache.iotdb.db.queryengine.plan.statement.metadata.CountNodesStatement;
+import org.apache.iotdb.db.queryengine.plan.statement.metadata.CountTimeSeriesStatement;
+import org.apache.iotdb.db.queryengine.plan.statement.metadata.CountTimeSlotListStatement;
+import org.apache.iotdb.db.queryengine.plan.statement.metadata.CreateAlignedTimeSeriesStatement;
+import org.apache.iotdb.db.queryengine.plan.statement.metadata.CreateContinuousQueryStatement;
+import org.apache.iotdb.db.queryengine.plan.statement.metadata.CreateFunctionStatement;
+import org.apache.iotdb.db.queryengine.plan.statement.metadata.CreateMultiTimeSeriesStatement;
+import org.apache.iotdb.db.queryengine.plan.statement.metadata.CreateTimeSeriesStatement;
+import org.apache.iotdb.db.queryengine.plan.statement.metadata.CreateTriggerStatement;
+import org.apache.iotdb.db.queryengine.plan.statement.metadata.DatabaseSchemaStatement;
+import org.apache.iotdb.db.queryengine.plan.statement.metadata.DeleteDatabaseStatement;
+import org.apache.iotdb.db.queryengine.plan.statement.metadata.DeleteTimeSeriesStatement;
+import org.apache.iotdb.db.queryengine.plan.statement.metadata.DropContinuousQueryStatement;
+import org.apache.iotdb.db.queryengine.plan.statement.metadata.DropFunctionStatement;
+import org.apache.iotdb.db.queryengine.plan.statement.metadata.DropTriggerStatement;
+import org.apache.iotdb.db.queryengine.plan.statement.metadata.GetRegionIdStatement;
+import org.apache.iotdb.db.queryengine.plan.statement.metadata.GetSeriesSlotListStatement;
+import org.apache.iotdb.db.queryengine.plan.statement.metadata.GetTimeSlotListStatement;
+import org.apache.iotdb.db.queryengine.plan.statement.metadata.RemoveAINodeStatement;
+import org.apache.iotdb.db.queryengine.plan.statement.metadata.RemoveConfigNodeStatement;
+import org.apache.iotdb.db.queryengine.plan.statement.metadata.RemoveDataNodeStatement;
+import org.apache.iotdb.db.queryengine.plan.statement.metadata.SetTTLStatement;
+import org.apache.iotdb.db.queryengine.plan.statement.metadata.ShowChildNodesStatement;
+import org.apache.iotdb.db.queryengine.plan.statement.metadata.ShowChildPathsStatement;
+import org.apache.iotdb.db.queryengine.plan.statement.metadata.ShowClusterIdStatement;
+import org.apache.iotdb.db.queryengine.plan.statement.metadata.ShowClusterStatement;
+import org.apache.iotdb.db.queryengine.plan.statement.metadata.ShowConfigNodesStatement;
+import org.apache.iotdb.db.queryengine.plan.statement.metadata.ShowContinuousQueriesStatement;
+import org.apache.iotdb.db.queryengine.plan.statement.metadata.ShowCurrentTimestampStatement;
+import org.apache.iotdb.db.queryengine.plan.statement.metadata.ShowDataNodesStatement;
+import org.apache.iotdb.db.queryengine.plan.statement.metadata.ShowDatabaseStatement;
+import org.apache.iotdb.db.queryengine.plan.statement.metadata.ShowDevicesStatement;
+import org.apache.iotdb.db.queryengine.plan.statement.metadata.ShowFunctionsStatement;
+import org.apache.iotdb.db.queryengine.plan.statement.metadata.ShowRegionStatement;
+import org.apache.iotdb.db.queryengine.plan.statement.metadata.ShowTTLStatement;
+import org.apache.iotdb.db.queryengine.plan.statement.metadata.ShowTimeSeriesStatement;
+import org.apache.iotdb.db.queryengine.plan.statement.metadata.ShowTriggersStatement;
+import org.apache.iotdb.db.queryengine.plan.statement.metadata.ShowVariablesStatement;
+import org.apache.iotdb.db.queryengine.plan.statement.metadata.UnSetTTLStatement;
+import org.apache.iotdb.db.queryengine.plan.statement.metadata.model.CreateModelStatement;
+import org.apache.iotdb.db.queryengine.plan.statement.metadata.model.DropModelStatement;
+import org.apache.iotdb.db.queryengine.plan.statement.metadata.model.ShowAINodesStatement;
+import org.apache.iotdb.db.queryengine.plan.statement.metadata.model.ShowModelsStatement;
+import org.apache.iotdb.db.queryengine.plan.statement.metadata.pipe.AlterPipeStatement;
+import org.apache.iotdb.db.queryengine.plan.statement.metadata.pipe.CreatePipePluginStatement;
+import org.apache.iotdb.db.queryengine.plan.statement.metadata.pipe.CreatePipeStatement;
+import org.apache.iotdb.db.queryengine.plan.statement.metadata.pipe.DropPipePluginStatement;
+import org.apache.iotdb.db.queryengine.plan.statement.metadata.pipe.DropPipeStatement;
+import org.apache.iotdb.db.queryengine.plan.statement.metadata.pipe.ShowPipePluginsStatement;
+import org.apache.iotdb.db.queryengine.plan.statement.metadata.pipe.ShowPipesStatement;
+import org.apache.iotdb.db.queryengine.plan.statement.metadata.pipe.StartPipeStatement;
+import org.apache.iotdb.db.queryengine.plan.statement.metadata.pipe.StopPipeStatement;
+import org.apache.iotdb.db.queryengine.plan.statement.metadata.region.ExtendRegionStatement;
+import org.apache.iotdb.db.queryengine.plan.statement.metadata.region.MigrateRegionStatement;
+import org.apache.iotdb.db.queryengine.plan.statement.metadata.region.ReconstructRegionStatement;
+import org.apache.iotdb.db.queryengine.plan.statement.metadata.region.RemoveRegionStatement;
+import org.apache.iotdb.db.queryengine.plan.statement.metadata.subscription.CreateTopicStatement;
+import org.apache.iotdb.db.queryengine.plan.statement.metadata.subscription.DropSubscriptionStatement;
+import org.apache.iotdb.db.queryengine.plan.statement.metadata.subscription.DropTopicStatement;
+import org.apache.iotdb.db.queryengine.plan.statement.metadata.subscription.ShowSubscriptionsStatement;
+import org.apache.iotdb.db.queryengine.plan.statement.metadata.subscription.ShowTopicsStatement;
+import org.apache.iotdb.db.queryengine.plan.statement.metadata.template.ActivateTemplateStatement;
+import org.apache.iotdb.db.queryengine.plan.statement.metadata.template.AlterSchemaTemplateStatement;
+import org.apache.iotdb.db.queryengine.plan.statement.metadata.template.BatchActivateTemplateStatement;
+import org.apache.iotdb.db.queryengine.plan.statement.metadata.template.CreateSchemaTemplateStatement;
+import org.apache.iotdb.db.queryengine.plan.statement.metadata.template.DeactivateTemplateStatement;
+import org.apache.iotdb.db.queryengine.plan.statement.metadata.template.DropSchemaTemplateStatement;
+import org.apache.iotdb.db.queryengine.plan.statement.metadata.template.SetSchemaTemplateStatement;
+import org.apache.iotdb.db.queryengine.plan.statement.metadata.template.ShowPathSetTemplateStatement;
+import org.apache.iotdb.db.queryengine.plan.statement.metadata.template.ShowPathsUsingTemplateStatement;
+import org.apache.iotdb.db.queryengine.plan.statement.metadata.template.ShowSchemaTemplateStatement;
+import org.apache.iotdb.db.queryengine.plan.statement.metadata.template.UnsetSchemaTemplateStatement;
+import org.apache.iotdb.db.queryengine.plan.statement.metadata.view.AlterLogicalViewStatement;
+import org.apache.iotdb.db.queryengine.plan.statement.metadata.view.CreateLogicalViewStatement;
+import org.apache.iotdb.db.queryengine.plan.statement.metadata.view.DeleteLogicalViewStatement;
+import org.apache.iotdb.db.queryengine.plan.statement.metadata.view.RenameLogicalViewStatement;
+import org.apache.iotdb.db.queryengine.plan.statement.metadata.view.ShowLogicalViewStatement;
+import org.apache.iotdb.db.queryengine.plan.statement.sys.AuthorStatement;
+import org.apache.iotdb.db.queryengine.plan.statement.sys.ExplainAnalyzeStatement;
+import org.apache.iotdb.db.queryengine.plan.statement.sys.KillQueryStatement;
+import org.apache.iotdb.db.queryengine.plan.statement.sys.SetSqlDialectStatement;
+import org.apache.iotdb.db.queryengine.plan.statement.sys.ShowCurrentSqlDialectStatement;
+import org.apache.iotdb.db.queryengine.plan.statement.sys.ShowCurrentUserStatement;
+import org.apache.iotdb.db.queryengine.plan.statement.sys.ShowQueriesStatement;
+import org.apache.iotdb.db.queryengine.plan.statement.sys.ShowVersionStatement;
+import org.apache.iotdb.db.queryengine.plan.statement.sys.TestConnectionStatement;
+import org.apache.iotdb.rpc.TSStatusCode;
+
+import com.google.common.collect.ImmutableList;
+
+import java.util.Collections;
+import java.util.List;
+import java.util.Objects;
+import java.util.stream.Collectors;
+
+import static org.apache.iotdb.db.auth.AuthorityChecker.SUCCEED;
+
+/** userName in TreeAccessCheckContext will never be SUPER_USER */
+public class TreeAccessCheckVisitor extends StatementVisitor<TSStatus, TreeAccessCheckContext> {
+
+ @Override
+ public TSStatus visitNode(StatementNode node, TreeAccessCheckContext context) {
+ return AuthorityChecker.getTSStatus(false, "Only the admin user can perform this operation");
+ }
+
+ @Override
+ public TSStatus visitAuthorityInformation(
+ AuthorityInformationStatement statement, TreeAccessCheckContext context) {
+ try {
+ statement.setAuthorityScope(
+ AuthorityChecker.getAuthorizedPathTree(context.userName, PrivilegeType.READ_SCHEMA));
+ } catch (AuthException e) {
+ return new TSStatus(e.getCode().getStatusCode());
+ }
+ return new TSStatus(TSStatusCode.SUCCESS_STATUS.getStatusCode());
+ }
+
+ // ====================== template related =================================
+
+ @Override
+ public TSStatus visitCreateSchemaTemplate(
+ CreateSchemaTemplateStatement createTemplateStatement, TreeAccessCheckContext context) {
+ return visitNode(createTemplateStatement, context);
+ }
+
+ @Override
+ public TSStatus visitSetSchemaTemplate(
+ SetSchemaTemplateStatement setSchemaTemplateStatement, TreeAccessCheckContext context) {
+ return visitNode(setSchemaTemplateStatement, context);
+ }
+
+ @Override
+ public TSStatus visitActivateTemplate(
+ ActivateTemplateStatement statement, TreeAccessCheckContext context) {
+ return checkTimeSeriesPermission(
+ context.userName, statement.getPaths(), PrivilegeType.WRITE_SCHEMA);
+ }
+
+ @Override
+ public TSStatus visitBatchActivateTemplate(
+ BatchActivateTemplateStatement statement, TreeAccessCheckContext context) {
+ return checkTimeSeriesPermission(
+ context.userName, statement.getPaths(), PrivilegeType.WRITE_SCHEMA);
+ }
+
+ @Override
+ public TSStatus visitInternalBatchActivateTemplate(
+ InternalBatchActivateTemplateStatement statement, TreeAccessCheckContext context) {
+ return checkTimeSeriesPermission(
+ context.userName, statement.getPaths(), PrivilegeType.WRITE_SCHEMA);
+ }
+
+ @Override
+ public TSStatus visitShowSchemaTemplate(
+ ShowSchemaTemplateStatement showSchemaTemplateStatement, TreeAccessCheckContext context) {
+ return visitNode(showSchemaTemplateStatement, context);
+ }
+
+ @Override
+ public TSStatus visitDeactivateTemplate(
+ DeactivateTemplateStatement statement, TreeAccessCheckContext context) {
+ return checkTimeSeriesPermission(
+ context.userName, statement.getPaths(), PrivilegeType.WRITE_SCHEMA);
+ }
+
+ @Override
+ public TSStatus visitUnsetSchemaTemplate(
+ UnsetSchemaTemplateStatement unsetSchemaTemplateStatement, TreeAccessCheckContext context) {
+ return visitNode(unsetSchemaTemplateStatement, context);
+ }
+
+ @Override
+ public TSStatus visitDropSchemaTemplate(
+ DropSchemaTemplateStatement dropSchemaTemplateStatement, TreeAccessCheckContext context) {
+ return visitNode(dropSchemaTemplateStatement, context);
+ }
+
+ @Override
+ public TSStatus visitAlterSchemaTemplate(
+ AlterSchemaTemplateStatement alterSchemaTemplateStatement, TreeAccessCheckContext context) {
+ return visitNode(alterSchemaTemplateStatement, context);
+ }
+
+ @Override
+ public TSStatus visitShowPathsUsingTemplate(
+ ShowPathsUsingTemplateStatement showPathsUsingTemplateStatement,
+ TreeAccessCheckContext context) {
+ return visitAuthorityInformation(showPathsUsingTemplateStatement, context);
+ }
+
+ @Override
+ public TSStatus visitShowPathSetTemplate(
+ ShowPathSetTemplateStatement showPathSetTemplateStatement, TreeAccessCheckContext context) {
+ return visitNode(showPathSetTemplateStatement, context);
+ }
+
+ // ============================= timeseries view related ===============
+ @Override
+ public TSStatus visitCreateLogicalView(
+ CreateLogicalViewStatement statement, TreeAccessCheckContext context) {
+ TSStatus status = new TSStatus(TSStatusCode.SUCCESS_STATUS.getStatusCode());
+ List<PartialPath> sourcePathList = statement.getSourcePaths().fullPathList;
+ if (sourcePathList != null) {
+ status =
+ AuthorityChecker.getTSStatus(
+ AuthorityChecker.checkFullPathOrPatternListPermission(
+ context.userName, sourcePathList, PrivilegeType.READ_SCHEMA),
+ sourcePathList,
+ PrivilegeType.READ_SCHEMA);
+ }
+ QueryStatement queryStatement = statement.getQueryStatement();
+ if (queryStatement != null && status.getCode() == TSStatusCode.SUCCESS_STATUS.getStatusCode()) {
+ sourcePathList = queryStatement.getPaths();
+ status =
+ AuthorityChecker.getTSStatus(
+ AuthorityChecker.checkFullPathOrPatternListPermission(
+ context.userName, sourcePathList, PrivilegeType.READ_SCHEMA),
+ sourcePathList,
+ PrivilegeType.READ_SCHEMA);
+ }
+
+ final List<PartialPath> paths =
+ Objects.nonNull(statement.getTargetPathList())
+ ? statement.getTargetPathList()
+ : Collections.singletonList(
+ statement
+ .getBatchGenerationItem()
+ .getIntoDevice()
+ .concatNode(IoTDBConstant.ONE_LEVEL_PATH_WILDCARD));
+ if (status.getCode() == TSStatusCode.SUCCESS_STATUS.getStatusCode()) {
+ return AuthorityChecker.getTSStatus(
+ AuthorityChecker.checkFullPathOrPatternListPermission(
+ context.userName, paths, PrivilegeType.WRITE_SCHEMA),
+ paths,
+ PrivilegeType.WRITE_SCHEMA);
+ }
+ return status;
+ }
+
+ @Override
+ public TSStatus visitDeleteLogicalView(
+ DeleteLogicalViewStatement statement, TreeAccessCheckContext context) {
+ return checkTimeSeriesPermission(
+ context.userName, statement.getPaths(), PrivilegeType.WRITE_SCHEMA);
+ }
+
+ @Override
+ public TSStatus visitShowLogicalView(
+ ShowLogicalViewStatement showLogicalViewStatement, TreeAccessCheckContext context) {
+ return visitAuthorityInformation(showLogicalViewStatement, context);
+ }
+
+ @Override
+ public TSStatus visitAlterLogicalView(
+ AlterLogicalViewStatement statement, TreeAccessCheckContext context) {
+ TSStatus status = new TSStatus(TSStatusCode.SUCCESS_STATUS.getStatusCode());
+ List<PartialPath> sourcePathList = statement.getSourcePaths().fullPathList;
+ if (sourcePathList != null) {
+ status =
+ AuthorityChecker.getTSStatus(
+ AuthorityChecker.checkFullPathOrPatternListPermission(
+ context.userName, sourcePathList, PrivilegeType.READ_SCHEMA),
+ sourcePathList,
+ PrivilegeType.READ_SCHEMA);
+ }
+ QueryStatement queryStatement = statement.getQueryStatement();
+ if (queryStatement != null && status.getCode() == TSStatusCode.SUCCESS_STATUS.getStatusCode()) {
+ sourcePathList = queryStatement.getPaths();
+ status =
+ AuthorityChecker.getTSStatus(
+ AuthorityChecker.checkFullPathOrPatternListPermission(
+ context.userName, sourcePathList, PrivilegeType.READ_SCHEMA),
+ sourcePathList,
+ PrivilegeType.READ_SCHEMA);
+ }
+
+ if (status.getCode() == TSStatusCode.SUCCESS_STATUS.getStatusCode()) {
+ return AuthorityChecker.getTSStatus(
+ AuthorityChecker.checkFullPathOrPatternListPermission(
+ context.userName, statement.getTargetPathList(), PrivilegeType.WRITE_SCHEMA),
+ statement.getTargetPathList(),
+ PrivilegeType.WRITE_SCHEMA);
+ }
+ return status;
+ }
+
+ @Override
+ public TSStatus visitRenameLogicalView(
+ RenameLogicalViewStatement statement, TreeAccessCheckContext context) {
+ List<PartialPath> checkedPaths =
+ ImmutableList.of(statement.getOldName(), statement.getNewName());
+ return AuthorityChecker.getTSStatus(
+ AuthorityChecker.checkFullPathOrPatternListPermission(
+ context.userName, checkedPaths, PrivilegeType.WRITE_SCHEMA),
+ checkedPaths,
+ PrivilegeType.WRITE_SCHEMA);
+ }
+
+ // ===================================== security related ===============================
+ @Override
+ public TSStatus visitAuthor(AuthorStatement statement, TreeAccessCheckContext context) {
+ AuthorType authorType = statement.getAuthorType();
+ switch (authorType) {
+ case CREATE_USER:
+ if (AuthorityChecker.SUPER_USER.equals(statement.getUserName())) {
+ return AuthorityChecker.getTSStatus(
+ false, "Cannot create user has same name with admin user");
+ }
+ if (AuthorityChecker.SUPER_USER.equals(context.userName)) {
+ return new TSStatus(TSStatusCode.SUCCESS_STATUS.getStatusCode());
+ }
+ return AuthorityChecker.getTSStatus(
+ AuthorityChecker.checkSystemPermission(context.userName, PrivilegeType.MANAGE_USER),
+ PrivilegeType.MANAGE_USER);
+
+ case UPDATE_USER:
+ // users can change passwords of themselves
+ if (AuthorityChecker.SUPER_USER.equals(context.userName)
+ || statement.getUserName().equals(context.userName)) {
+ return new TSStatus(TSStatusCode.SUCCESS_STATUS.getStatusCode());
+ }
+ return AuthorityChecker.getTSStatus(
+ AuthorityChecker.checkSystemPermission(context.userName, PrivilegeType.MANAGE_USER),
+ PrivilegeType.MANAGE_USER);
+
+ case DROP_USER:
+ if (AuthorityChecker.SUPER_USER.equals(statement.getUserName())
+ || statement.getUserName().equals(context.userName)) {
+ return AuthorityChecker.getTSStatus(false, "Cannot drop admin user or yourself");
+ }
+ if (AuthorityChecker.SUPER_USER.equals(context.userName)) {
+ return new TSStatus(TSStatusCode.SUCCESS_STATUS.getStatusCode());
+ }
+ return AuthorityChecker.getTSStatus(
+ AuthorityChecker.checkSystemPermission(context.userName, PrivilegeType.MANAGE_USER),
+ PrivilegeType.MANAGE_USER);
+
+ case LIST_USER:
+ if (AuthorityChecker.SUPER_USER.equals(context.userName)) {
+ return new TSStatus(TSStatusCode.SUCCESS_STATUS.getStatusCode());
+ }
+ return AuthorityChecker.getTSStatus(
+ AuthorityChecker.checkSystemPermission(context.userName, PrivilegeType.MANAGE_USER),
+ PrivilegeType.MANAGE_USER);
+
+ case LIST_USER_PRIVILEGE:
+ if (AuthorityChecker.SUPER_USER.equals(context.userName)
+ || context.userName.equals(statement.getUserName())) {
+ return new TSStatus(TSStatusCode.SUCCESS_STATUS.getStatusCode());
+ }
+ return AuthorityChecker.getTSStatus(
+ AuthorityChecker.checkSystemPermission(context.userName, PrivilegeType.MANAGE_USER),
+ PrivilegeType.MANAGE_USER);
+
+ case LIST_ROLE_PRIVILEGE:
+ if (AuthorityChecker.SUPER_USER.equals(context.userName)) {
+ return new TSStatus(TSStatusCode.SUCCESS_STATUS.getStatusCode());
+ }
+ if (!AuthorityChecker.checkRole(context.userName, statement.getRoleName())) {
+ return AuthorityChecker.getTSStatus(
+ AuthorityChecker.checkSystemPermission(context.userName, PrivilegeType.MANAGE_ROLE),
+ PrivilegeType.MANAGE_ROLE);
+ } else {
+ return new TSStatus(TSStatusCode.SUCCESS_STATUS.getStatusCode());
+ }
+
+ case LIST_ROLE:
+ if (AuthorityChecker.SUPER_USER.equals(context.userName)) {
+ return new TSStatus(TSStatusCode.SUCCESS_STATUS.getStatusCode());
+ }
+ if (statement.getUserName() != null && context.userName.equals(statement.getUserName())) {
+ return new TSStatus(TSStatusCode.SUCCESS_STATUS.getStatusCode());
+ } else {
+ return AuthorityChecker.getTSStatus(
+ AuthorityChecker.checkSystemPermission(context.userName, PrivilegeType.MANAGE_ROLE),
+ PrivilegeType.MANAGE_ROLE);
+ }
+
+ case CREATE_ROLE:
+ if (AuthorityChecker.SUPER_USER.equals(statement.getRoleName())) {
+ return AuthorityChecker.getTSStatus(
+ false, "Cannot create role has same name with admin user");
+ }
+ case DROP_ROLE:
+ case GRANT_USER_ROLE:
+ case REVOKE_USER_ROLE:
+ if (AuthorityChecker.SUPER_USER.equals(context.userName)) {
+ return new TSStatus(TSStatusCode.SUCCESS_STATUS.getStatusCode());
+ }
+ return AuthorityChecker.getTSStatus(
+ AuthorityChecker.checkSystemPermission(context.userName, PrivilegeType.MANAGE_ROLE),
+ PrivilegeType.MANAGE_ROLE);
+
+ case REVOKE_USER:
+ case GRANT_USER:
+ case GRANT_ROLE:
+ case REVOKE_ROLE:
+ if (AuthorityChecker.SUPER_USER.equals(statement.getUserName())) {
+ return AuthorityChecker.getTSStatus(
+ false, "Cannot grant/revoke privileges of admin user");
+ }
+ if (AuthorityChecker.SUPER_USER.equals(context.userName)) {
+ return new TSStatus(TSStatusCode.SUCCESS_STATUS.getStatusCode());
+ }
+
+ for (String s : statement.getPrivilegeList()) {
+ PrivilegeType privilegeType = PrivilegeType.valueOf(s.toUpperCase());
+ if (privilegeType.isSystemPrivilege()) {
+ if (!AuthorityChecker.checkSystemPermissionGrantOption(
+ context.userName, privilegeType)) {
+ return AuthorityChecker.getTSStatus(
+ false,
+ "Has no permission to execute "
+ + authorType
+ + ", please ensure you have these privileges and the grant option is TRUE when granted)");
+ }
+ } else if (privilegeType.isPathPrivilege()) {
+ if (!AuthorityChecker.checkPathPermissionGrantOption(
+ context.userName, privilegeType, statement.getNodeNameList())) {
+ return AuthorityChecker.getTSStatus(
+ false,
+ "Has no permission to execute "
+ + authorType
+ + ", please ensure you have these privileges and the grant option is TRUE when granted)");
+ }
+ } else {
+ return AuthorityChecker.getTSStatus(
+ false, "Not support Relation statement in tree sql_dialect");
+ }
+ }
+ return new TSStatus(TSStatusCode.SUCCESS_STATUS.getStatusCode());
+ default:
+ throw new IllegalArgumentException("Unknown authorType: " + authorType);
+ }
+ }
+
+ // =================================== CQ related ====================================
+ @Override
+ public TSStatus visitCreateContinuousQuery(
+ CreateContinuousQueryStatement statement, TreeAccessCheckContext context) {
+ return checkCQManagement(context.userName);
+ }
+
+ @Override
+ public TSStatus visitDropContinuousQuery(
+ DropContinuousQueryStatement statement, TreeAccessCheckContext context) {
+ return checkCQManagement(context.userName);
+ }
+
+ @Override
+ public TSStatus visitShowContinuousQueries(
+ ShowContinuousQueriesStatement statement, TreeAccessCheckContext context) {
+ return checkCQManagement(context.userName);
+ }
+
+ private TSStatus checkCQManagement(String userName) {
+ return AuthorityChecker.getTSStatus(
+ AuthorityChecker.checkSystemPermission(userName, PrivilegeType.SYSTEM)
+ || AuthorityChecker.checkSystemPermission(userName, PrivilegeType.USE_CQ),
+ PrivilegeType.USE_CQ);
+ }
+
+ // =================================== UDF related ====================================
+ @Override
+ public TSStatus visitCreateFunction(
+ CreateFunctionStatement statement, TreeAccessCheckContext context) {
+ return checkUDFManagement(context.userName);
+ }
+
+ @Override
+ public TSStatus visitDropFunction(
+ DropFunctionStatement statement, TreeAccessCheckContext context) {
+ return checkUDFManagement(context.userName);
+ }
+
+ @Override
+ public TSStatus visitShowFunctions(
+ ShowFunctionsStatement statement, TreeAccessCheckContext context) {
+ return checkUDFManagement(context.userName);
+ }
+
+ private TSStatus checkUDFManagement(String userName) {
+ return AuthorityChecker.getTSStatus(
+ AuthorityChecker.checkSystemPermission(userName, PrivilegeType.SYSTEM)
+ || AuthorityChecker.checkSystemPermission(userName, PrivilegeType.USE_UDF),
+ PrivilegeType.USE_UDF);
+ }
+
+ // =================================== model related ====================================
+ @Override
+ public TSStatus visitCreateModel(CreateModelStatement statement, TreeAccessCheckContext context) {
+ return checkModelManagement(context.userName);
+ }
+
+ @Override
+ public TSStatus visitDropModel(DropModelStatement statement, TreeAccessCheckContext context) {
+ return checkModelManagement(context.userName);
+ }
+
+ @Override
+ public TSStatus visitShowModels(ShowModelsStatement statement, TreeAccessCheckContext context) {
+ return checkModelManagement(context.userName);
+ }
+
+ private TSStatus checkModelManagement(String userName) {
+ return AuthorityChecker.getTSStatus(
+ AuthorityChecker.checkSystemPermission(userName, PrivilegeType.SYSTEM)
+ || AuthorityChecker.checkSystemPermission(userName, PrivilegeType.USE_MODEL),
+ PrivilegeType.USE_MODEL);
+ }
+
+ // ================================ pipe plugin related ==================================
+ @Override
+ public TSStatus visitCreatePipePlugin(
+ CreatePipePluginStatement statement, TreeAccessCheckContext context) {
+ return checkPipeManagement(context.userName);
+ }
+
+ @Override
+ public TSStatus visitDropPipePlugin(
+ DropPipePluginStatement statement, TreeAccessCheckContext context) {
+ return checkPipeManagement(context.userName);
+ }
+
+ @Override
+ public TSStatus visitShowPipePlugins(
+ ShowPipePluginsStatement statement, TreeAccessCheckContext context) {
+ return checkPipeManagement(context.userName);
+ }
+
+ // =============================== pipe related ========================================
+
+ @Override
+ public TSStatus visitCreatePipe(CreatePipeStatement statement, TreeAccessCheckContext context) {
+ return checkPipeManagement(context.userName);
+ }
+
+ @Override
+ public TSStatus visitShowPipes(ShowPipesStatement statement, TreeAccessCheckContext context) {
+ return checkPipeManagement(context.userName);
+ }
+
+ @Override
+ public TSStatus visitDropPipe(DropPipeStatement statement, TreeAccessCheckContext context) {
+ return checkPipeManagement(context.userName);
+ }
+
+ @Override
+ public TSStatus visitAlterPipe(AlterPipeStatement statement, TreeAccessCheckContext context) {
+ return checkPipeManagement(context.userName);
+ }
+
+ @Override
+ public TSStatus visitStartPipe(StartPipeStatement statement, TreeAccessCheckContext context) {
+ return checkPipeManagement(context.userName);
+ }
+
+ @Override
+ public TSStatus visitStopPipe(StopPipeStatement statement, TreeAccessCheckContext context) {
+ return checkPipeManagement(context.userName);
+ }
+
+ private TSStatus checkPipeManagement(String userName) {
+ return AuthorityChecker.getTSStatus(
+ AuthorityChecker.checkSystemPermission(userName, PrivilegeType.SYSTEM)
+ || AuthorityChecker.checkSystemPermission(userName, PrivilegeType.USE_PIPE),
+ PrivilegeType.USE_PIPE);
+ }
+
+ // =============================== subscription related ========================================
+
+ @Override
+ public TSStatus visitCreateTopic(CreateTopicStatement statement, TreeAccessCheckContext context) {
+ return checkPipeManagement(context.userName);
+ }
+
+ @Override
+ public TSStatus visitShowTopics(ShowTopicsStatement statement, TreeAccessCheckContext context) {
+ return checkPipeManagement(context.userName);
+ }
+
+ @Override
+ public TSStatus visitDropTopic(DropTopicStatement statement, TreeAccessCheckContext context) {
+ return checkPipeManagement(context.userName);
+ }
+
+ @Override
+ public TSStatus visitShowSubscriptions(
+ ShowSubscriptionsStatement statement, TreeAccessCheckContext context) {
+ return checkPipeManagement(context.userName);
+ }
+
+ @Override
+ public TSStatus visitDropSubscription(
+ DropSubscriptionStatement statement, TreeAccessCheckContext context) {
+ return checkPipeManagement(context.userName);
+ }
+
+ // ======================= trigger related ================================
+ @Override
+ public TSStatus visitCreateTrigger(
+ CreateTriggerStatement statement, TreeAccessCheckContext context) {
+ return checkTriggerManagement(context.userName);
+ }
+
+ @Override
+ public TSStatus visitDropTrigger(DropTriggerStatement statement, TreeAccessCheckContext context) {
+ return checkTriggerManagement(context.userName);
+ }
+
+ @Override
+ public TSStatus visitShowTriggers(
+ ShowTriggersStatement statement, TreeAccessCheckContext context) {
+ return checkTriggerManagement(context.userName);
+ }
+
+ private TSStatus checkTriggerManagement(String userName) {
+ return AuthorityChecker.getTSStatus(
+ AuthorityChecker.checkSystemPermission(userName, PrivilegeType.SYSTEM)
+ || AuthorityChecker.checkSystemPermission(userName, PrivilegeType.USE_TRIGGER),
+ PrivilegeType.USE_TRIGGER);
+ }
+
+ // ============================== database related ===========================
+ @Override
+ public TSStatus visitSetDatabase(
+ DatabaseSchemaStatement statement, TreeAccessCheckContext context) {
+ return checkCreateOrAlterDatabasePermission(context.userName);
+ }
+
+ @Override
+ public TSStatus visitAlterDatabase(
+ DatabaseSchemaStatement databaseSchemaStatement, TreeAccessCheckContext context) {
+ return checkCreateOrAlterDatabasePermission(context.userName);
+ }
+
+ @Override
+ public TSStatus visitShowStorageGroup(
+ ShowDatabaseStatement showDatabaseStatement, TreeAccessCheckContext context) {
+ return visitAuthorityInformation(showDatabaseStatement, context);
+ }
+
+ @Override
+ public TSStatus visitCountStorageGroup(
+ CountDatabaseStatement countDatabaseStatement, TreeAccessCheckContext context) {
+ return visitAuthorityInformation(countDatabaseStatement, context);
+ }
+
+ @Override
+ public TSStatus visitDeleteStorageGroup(
+ DeleteDatabaseStatement statement, TreeAccessCheckContext context) {
+ return checkCreateOrAlterDatabasePermission(context.userName);
+ }
+
+ private TSStatus checkCreateOrAlterDatabasePermission(String userName) {
+ return AuthorityChecker.getTSStatus(
+ AuthorityChecker.checkSystemPermission(userName, PrivilegeType.MANAGE_DATABASE),
+ PrivilegeType.MANAGE_DATABASE);
+ }
+
+ // ==================================== data related ========================================
+ @Override
+ public TSStatus visitInsertBase(InsertBaseStatement statement, TreeAccessCheckContext context) {
+ return checkTimeSeriesPermission(
+ context.userName,
+ statement.getPaths().stream().distinct().collect(Collectors.toList()),
+ PrivilegeType.WRITE_DATA);
+ }
+
+ @Override
+ public TSStatus visitInsert(InsertStatement statement, TreeAccessCheckContext context) {
+ return checkTimeSeriesPermission(
+ context.userName, statement.getPaths(), PrivilegeType.WRITE_DATA);
+ }
+
+ @Override
+ public TSStatus visitLoadFile(LoadTsFileStatement statement, TreeAccessCheckContext context) {
+ // no need to check here, it will be checked in process phase
+ return new TSStatus(TSStatusCode.SUCCESS_STATUS.getStatusCode());
+ }
+
+ @Override
+ public TSStatus visitDeleteData(DeleteDataStatement statement, TreeAccessCheckContext context) {
+ return checkTimeSeriesPermission(
+ context.userName, statement.getPaths(), PrivilegeType.WRITE_DATA);
+ }
+
+ @Override
+ public TSStatus visitQuery(QueryStatement statement, TreeAccessCheckContext context) {
+ try {
+ statement.setAuthorityScope(
+ AuthorityChecker.getAuthorizedPathTree(context.userName, PrivilegeType.READ_DATA));
+ } catch (AuthException e) {
+ return new TSStatus(e.getCode().getStatusCode());
+ }
+ return new TSStatus(TSStatusCode.SUCCESS_STATUS.getStatusCode());
+ }
+
+ @Override
+ public TSStatus visitExplainAnalyze(
+ ExplainAnalyzeStatement statement, TreeAccessCheckContext context) {
+ return statement.getQueryStatement().accept(this, context);
+ }
+
+ // ============================= timeseries related =================================
+ private TSStatus checkTimeSeriesPermission(
+ String userName, List<? extends PartialPath> checkedPaths, PrivilegeType permission) {
+ return AuthorityChecker.getTSStatus(
+ AuthorityChecker.checkFullPathOrPatternListPermission(userName, checkedPaths, permission),
+ checkedPaths,
+ permission);
+ }
+
+ @Override
+ public TSStatus visitCreateTimeseries(
+ CreateTimeSeriesStatement statement, TreeAccessCheckContext context) {
+ return checkTimeSeriesPermission(
+ context.userName, statement.getPaths(), PrivilegeType.WRITE_SCHEMA);
+ }
+
+ @Override
+ public TSStatus visitCreateAlignedTimeseries(
+ CreateAlignedTimeSeriesStatement statement, TreeAccessCheckContext context) {
+ List<PartialPath> checkedPaths = statement.getPaths();
+ return AuthorityChecker.getTSStatus(
+ AuthorityChecker.checkFullPathOrPatternListPermission(
+ context.userName, checkedPaths, PrivilegeType.WRITE_SCHEMA),
+ checkedPaths,
+ PrivilegeType.WRITE_SCHEMA);
+ }
+
+ @Override
+ public TSStatus visitCreateMultiTimeSeries(
+ CreateMultiTimeSeriesStatement statement, TreeAccessCheckContext context) {
+ return checkTimeSeriesPermission(
+ context.userName, statement.getPaths(), PrivilegeType.WRITE_SCHEMA);
+ }
+
+ @Override
+ public TSStatus visitInternalCreateMultiTimeSeries(
+ InternalCreateMultiTimeSeriesStatement statement, TreeAccessCheckContext context) {
+ return checkTimeSeriesPermission(
+ context.userName, statement.getPaths(), PrivilegeType.WRITE_SCHEMA);
+ }
+
+ @Override
+ public TSStatus visitInternalCreateTimeseries(
+ InternalCreateTimeSeriesStatement statement, TreeAccessCheckContext context) {
+ return checkTimeSeriesPermission(
+ context.userName, statement.getPaths(), PrivilegeType.WRITE_SCHEMA);
+ }
+
+ @Override
+ public TSStatus visitShowTimeSeries(
+ ShowTimeSeriesStatement statement, TreeAccessCheckContext context) {
+ if (statement.hasTimeCondition()) {
+ try {
+ statement.setAuthorityScope(
+ PathPatternTreeUtils.intersectWithFullPathPrefixTree(
+ AuthorityChecker.getAuthorizedPathTree(context.userName, PrivilegeType.READ_SCHEMA),
+ AuthorityChecker.getAuthorizedPathTree(context.userName, PrivilegeType.READ_DATA)));
+ } catch (AuthException e) {
+ return new TSStatus(e.getCode().getStatusCode());
+ }
+ return new TSStatus(TSStatusCode.SUCCESS_STATUS.getStatusCode());
+ } else {
+ return visitAuthorityInformation(statement, context);
+ }
+ }
+
+ @Override
+ public TSStatus visitCountTimeSeries(
+ CountTimeSeriesStatement statement, TreeAccessCheckContext context) {
+ if (statement.hasTimeCondition()) {
+ try {
+ statement.setAuthorityScope(
+ PathPatternTreeUtils.intersectWithFullPathPrefixTree(
+ AuthorityChecker.getAuthorizedPathTree(context.userName, PrivilegeType.READ_SCHEMA),
+ AuthorityChecker.getAuthorizedPathTree(context.userName, PrivilegeType.READ_DATA)));
+ } catch (AuthException e) {
+ return new TSStatus(e.getCode().getStatusCode());
+ }
+ return new TSStatus(TSStatusCode.SUCCESS_STATUS.getStatusCode());
+ } else {
+ return visitAuthorityInformation(statement, context);
+ }
+ }
+
+ @Override
+ public TSStatus visitCountLevelTimeSeries(
+ CountLevelTimeSeriesStatement countStatement, TreeAccessCheckContext context) {
+ return visitAuthorityInformation(countStatement, context);
+ }
+
+ @Override
+ public TSStatus visitCountNodes(
+ CountNodesStatement countStatement, TreeAccessCheckContext context) {
+ return visitAuthorityInformation(countStatement, context);
+ }
+
+ @Override
+ public TSStatus visitShowChildNodes(
+ ShowChildNodesStatement showChildNodesStatement, TreeAccessCheckContext context) {
+ return visitAuthorityInformation(showChildNodesStatement, context);
+ }
+
+ @Override
+ public TSStatus visitShowChildPaths(
+ ShowChildPathsStatement showChildPathsStatement, TreeAccessCheckContext context) {
+ return visitAuthorityInformation(showChildPathsStatement, context);
+ }
+
+ @Override
+ public TSStatus visitAlterTimeSeries(
+ AlterTimeSeriesStatement statement, TreeAccessCheckContext context) {
+ return checkTimeSeriesPermission(
+ context.userName, statement.getPaths(), PrivilegeType.WRITE_SCHEMA);
+ }
+
+ @Override
+ public TSStatus visitDeleteTimeSeries(
+ DeleteTimeSeriesStatement statement, TreeAccessCheckContext context) {
+ return checkTimeSeriesPermission(
+ context.userName, statement.getPaths(), PrivilegeType.WRITE_SCHEMA);
+ }
+
+ // ================================== maintain related =============================
+ @Override
+ public TSStatus visitExtendRegion(
+ ExtendRegionStatement statement, TreeAccessCheckContext context) {
+ return AuthorityChecker.checkSuperUserOrMaintain(context.userName);
+ }
+
+ @Override
+ public TSStatus visitGetRegionId(GetRegionIdStatement statement, TreeAccessCheckContext context) {
+ return AuthorityChecker.checkSuperUserOrMaintain(context.userName);
+ }
+
+ @Override
+ public TSStatus visitGetSeriesSlotList(
+ GetSeriesSlotListStatement statement, TreeAccessCheckContext context) {
+ return AuthorityChecker.checkSuperUserOrMaintain(context.userName);
+ }
+
+ @Override
+ public TSStatus visitGetTimeSlotList(
+ GetTimeSlotListStatement statement, TreeAccessCheckContext context) {
+ return AuthorityChecker.checkSuperUserOrMaintain(context.userName);
+ }
+
+ @Override
+ public TSStatus visitCountTimeSlotList(
+ CountTimeSlotListStatement statement, TreeAccessCheckContext context) {
+ return AuthorityChecker.checkSuperUserOrMaintain(context.userName);
+ }
+
+ @Override
+ public TSStatus visitKillQuery(KillQueryStatement statement, TreeAccessCheckContext context) {
+ return AuthorityChecker.checkSuperUserOrMaintain(context.userName);
+ }
+
+ @Override
+ public TSStatus visitMigrateRegion(
+ MigrateRegionStatement statement, TreeAccessCheckContext context) {
+ return AuthorityChecker.checkSuperUserOrMaintain(context.userName);
+ }
+
+ @Override
+ public TSStatus visitReconstructRegion(
+ ReconstructRegionStatement statement, TreeAccessCheckContext context) {
+ return AuthorityChecker.checkSuperUserOrMaintain(context.userName);
+ }
+
+ @Override
+ public TSStatus visitRemoveAINode(
+ RemoveAINodeStatement statement, TreeAccessCheckContext context) {
+ return AuthorityChecker.checkSuperUserOrMaintain(context.userName);
+ }
+
+ @Override
+ public TSStatus visitRemoveConfigNode(
+ RemoveConfigNodeStatement statement, TreeAccessCheckContext context) {
+ return AuthorityChecker.checkSuperUserOrMaintain(context.userName);
+ }
+
+ @Override
+ public TSStatus visitRemoveDataNode(
+ RemoveDataNodeStatement statement, TreeAccessCheckContext context) {
+ return AuthorityChecker.checkSuperUserOrMaintain(context.userName);
+ }
+
+ @Override
+ public TSStatus visitRemoveRegion(
+ RemoveRegionStatement statement, TreeAccessCheckContext context) {
+ return AuthorityChecker.checkSuperUserOrMaintain(context.userName);
+ }
+
+ @Override
+ public TSStatus visitSetSqlDialect(
+ SetSqlDialectStatement statement, TreeAccessCheckContext context) {
+ return SUCCEED;
+ }
+
+ @Override
+ public TSStatus visitShowAINodes(ShowAINodesStatement statement, TreeAccessCheckContext context) {
+ return AuthorityChecker.checkSuperUserOrMaintain(context.userName);
+ }
+
+ @Override
+ public TSStatus visitShowClusterId(
+ ShowClusterIdStatement statement, TreeAccessCheckContext context) {
+ return AuthorityChecker.checkSuperUserOrMaintain(context.userName);
+ }
+
+ @Override
+ public TSStatus visitShowCluster(ShowClusterStatement statement, TreeAccessCheckContext context) {
+ return AuthorityChecker.checkSuperUserOrMaintain(context.userName);
+ }
+
+ @Override
+ public TSStatus visitShowConfigNodes(
+ ShowConfigNodesStatement statement, TreeAccessCheckContext context) {
+ return AuthorityChecker.checkSuperUserOrMaintain(context.userName);
+ }
+
+ @Override
+ public TSStatus visitShowCurrentSqlDialect(
+ ShowCurrentSqlDialectStatement statement, TreeAccessCheckContext context) {
+ return SUCCEED;
+ }
+
+ @Override
+ public TSStatus visitShowCurrentUser(
+ ShowCurrentUserStatement statement, TreeAccessCheckContext context) {
+ return SUCCEED;
+ }
+
+ @Override
+ public TSStatus visitShowDataNodes(
+ ShowDataNodesStatement statement, TreeAccessCheckContext context) {
+ return AuthorityChecker.checkSuperUserOrMaintain(context.userName);
+ }
+
+ @Override
+ public TSStatus visitShowQueries(ShowQueriesStatement statement, TreeAccessCheckContext context) {
+ return AuthorityChecker.checkSuperUserOrMaintain(context.userName);
+ }
+
+ @Override
+ public TSStatus visitShowRegion(ShowRegionStatement statement, TreeAccessCheckContext context) {
+ return AuthorityChecker.checkSuperUserOrMaintain(context.userName);
+ }
+
+ @Override
+ public TSStatus visitShowVariables(
+ ShowVariablesStatement statement, TreeAccessCheckContext context) {
+ return SUCCEED;
+ }
+
+ @Override
+ public TSStatus visitShowVersion(ShowVersionStatement statement, TreeAccessCheckContext context) {
+ return SUCCEED;
+ }
+
+ @Override
+ public TSStatus visitTestConnection(
+ TestConnectionStatement statement, TreeAccessCheckContext context) {
+ return AuthorityChecker.checkSuperUserOrMaintain(context.userName);
+ }
+
+ @Override
+ public TSStatus visitShowCurrentTimestamp(
+ ShowCurrentTimestampStatement showCurrentTimestampStatement, TreeAccessCheckContext context) {
+ return visitAuthorityInformation(showCurrentTimestampStatement, context);
+ }
+
+ // ======================== TTL related ===========================
+ @Override
+ public TSStatus visitSetTTL(SetTTLStatement statement, TreeAccessCheckContext context) {
+ List<PartialPath> checkedPaths = statement.getPaths();
+ return AuthorityChecker.getTSStatus(
+ AuthorityChecker.checkFullPathOrPatternListPermission(
+ context.userName, checkedPaths, PrivilegeType.WRITE_SCHEMA),
+ checkedPaths,
+ PrivilegeType.WRITE_SCHEMA);
+ }
+
+ @Override
+ public TSStatus visitShowTTL(ShowTTLStatement showTTLStatement, TreeAccessCheckContext context) {
+ return visitAuthorityInformation(showTTLStatement, context);
+ }
+
+ @Override
+ public TSStatus visitUnSetTTL(
+ UnSetTTLStatement unSetTTLStatement, TreeAccessCheckContext context) {
+ return visitSetTTL(unSetTTLStatement, context);
+ }
+
+ // ================================= device related =============================
+ @Override
+ public TSStatus visitShowDevices(ShowDevicesStatement statement, TreeAccessCheckContext context) {
+ if (statement.hasTimeCondition()) {
+ try {
+ statement.setAuthorityScope(
+ PathPatternTreeUtils.intersectWithFullPathPrefixTree(
+ AuthorityChecker.getAuthorizedPathTree(context.userName, PrivilegeType.READ_SCHEMA),
+ AuthorityChecker.getAuthorizedPathTree(context.userName, PrivilegeType.READ_DATA)));
+ } catch (AuthException e) {
+ return new TSStatus(e.getCode().getStatusCode());
+ }
+ return new TSStatus(TSStatusCode.SUCCESS_STATUS.getStatusCode());
+ } else {
+ return visitAuthorityInformation(statement, context);
+ }
+ }
+
+ @Override
+ public TSStatus visitCountDevices(
+ CountDevicesStatement statement, TreeAccessCheckContext context) {
+ if (statement.hasTimeCondition()) {
+ try {
+ statement.setAuthorityScope(
+ PathPatternTreeUtils.intersectWithFullPathPrefixTree(
+ AuthorityChecker.getAuthorizedPathTree(context.userName, PrivilegeType.READ_SCHEMA),
+ AuthorityChecker.getAuthorizedPathTree(context.userName, PrivilegeType.READ_DATA)));
+ } catch (AuthException e) {
+ return new TSStatus(e.getCode().getStatusCode());
+ }
+ return new TSStatus(TSStatusCode.SUCCESS_STATUS.getStatusCode());
+ } else {
+ return visitAuthorityInformation(statement, context);
+ }
+ }
+}
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/AuthorityInformationStatement.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/AuthorityInformationStatement.java
index 30552ee7269..df33dc16cf7 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/AuthorityInformationStatement.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/AuthorityInformationStatement.java
@@ -18,13 +18,8 @@
*/
package org.apache.iotdb.db.queryengine.plan.statement;
-import org.apache.iotdb.common.rpc.thrift.TSStatus;
-import org.apache.iotdb.commons.auth.AuthException;
-import org.apache.iotdb.commons.auth.entity.PrivilegeType;
import org.apache.iotdb.commons.path.PathPatternTree;
import org.apache.iotdb.commons.schema.SchemaConstant;
-import org.apache.iotdb.db.auth.AuthorityChecker;
-import org.apache.iotdb.rpc.TSStatusCode;
public abstract class AuthorityInformationStatement extends Statement {
protected PathPatternTree authorityScope = SchemaConstant.ALL_MATCH_SCOPE;
@@ -34,15 +29,11 @@ public abstract class AuthorityInformationStatement extends Statement {
}
@Override
- public TSStatus checkPermissionBeforeProcess(String userName) {
- try {
- if (!AuthorityChecker.SUPER_USER.equals(userName)) {
- this.authorityScope =
- AuthorityChecker.getAuthorizedPathTree(userName, PrivilegeType.READ_SCHEMA);
- }
- } catch (AuthException e) {
- return new TSStatus(e.getCode().getStatusCode());
- }
- return new TSStatus(TSStatusCode.SUCCESS_STATUS.getStatusCode());
+ public <R, C> R accept(StatementVisitor<R, C> visitor, C context) {
+ return visitor.visitAuthorityInformation(this, context);
+ }
+
+ public void setAuthorityScope(PathPatternTree authorityScope) {
+ this.authorityScope = authorityScope;
}
}
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/Statement.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/Statement.java
index fc9aa1486a9..62d73c56c4c 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/Statement.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/Statement.java
@@ -19,9 +19,7 @@
package org.apache.iotdb.db.queryengine.plan.statement;
-import org.apache.iotdb.common.rpc.thrift.TSStatus;
import org.apache.iotdb.commons.path.PartialPath;
-import org.apache.iotdb.db.auth.AuthorityChecker;
import org.apache.iotdb.db.queryengine.common.MPPQueryContext;
import org.apache.iotdb.db.queryengine.plan.parser.ASTVisitor;
@@ -62,12 +60,6 @@ public abstract class Statement extends StatementNode {
public abstract List<? extends PartialPath> getPaths();
- public TSStatus checkPermissionBeforeProcess(final String userName) {
- return AuthorityChecker.getTSStatus(
- AuthorityChecker.SUPER_USER.equals(userName),
- "Only the admin user can perform this operation");
- }
-
public org.apache.iotdb.db.queryengine.plan.relational.sql.ast.Statement toRelationalStatement(
final MPPQueryContext context) {
throw new UnsupportedOperationException("Method not implemented yet");
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/StatementVisitor.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/StatementVisitor.java
index 79ec9879683..3bafdf8bfe0 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/StatementVisitor.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/StatementVisitor.java
@@ -20,6 +20,7 @@
package org.apache.iotdb.db.queryengine.plan.statement;
import org.apache.iotdb.db.queryengine.plan.statement.crud.DeleteDataStatement;
+import org.apache.iotdb.db.queryengine.plan.statement.crud.InsertBaseStatement;
import org.apache.iotdb.db.queryengine.plan.statement.crud.InsertMultiTabletsStatement;
import org.apache.iotdb.db.queryengine.plan.statement.crud.InsertRowStatement;
import org.apache.iotdb.db.queryengine.plan.statement.crud.InsertRowsOfOneDeviceStatement;
@@ -344,8 +345,12 @@ public abstract class StatementVisitor<R, C> {
return visitStatement(insertStatement, context);
}
+ public R visitInsertBase(InsertBaseStatement insertStatement, C context) {
+ return visitStatement(insertStatement, context);
+ }
+
public R visitInsertTablet(InsertTabletStatement insertTabletStatement, C context) {
- return visitStatement(insertTabletStatement, context);
+ return visitInsertBase(insertTabletStatement, context);
}
public R visitLoadFile(LoadTsFileStatement loadTsFileStatement, C context) {
@@ -353,21 +358,21 @@ public abstract class StatementVisitor<R, C> {
}
public R visitInsertRow(InsertRowStatement insertRowStatement, C context) {
- return visitStatement(insertRowStatement, context);
+ return visitInsertBase(insertRowStatement, context);
}
public R visitInsertRows(InsertRowsStatement insertRowsStatement, C context) {
- return visitStatement(insertRowsStatement, context);
+ return visitInsertBase(insertRowsStatement, context);
}
public R visitInsertMultiTablets(
InsertMultiTabletsStatement insertMultiTabletsStatement, C context) {
- return visitStatement(insertMultiTabletsStatement, context);
+ return visitInsertBase(insertMultiTabletsStatement, context);
}
public R visitInsertRowsOfOneDevice(
InsertRowsOfOneDeviceStatement insertRowsOfOneDeviceStatement, C context) {
- return visitStatement(insertRowsOfOneDeviceStatement, context);
+ return visitInsertBase(insertRowsOfOneDeviceStatement, context);
}
public R visitPipeEnrichedStatement(PipeEnrichedStatement pipeEnrichedStatement, C context) {
@@ -721,4 +726,8 @@ public abstract class StatementVisitor<R, C> {
public R visitCreateTraining(CreateTrainingStatement createTrainingStatement, C context) {
return visitStatement(createTrainingStatement, context);
}
+
+ public R visitAuthorityInformation(AuthorityInformationStatement statement, C context) {
+ return visitStatement(statement, context);
+ }
}
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/crud/DeleteDataStatement.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/crud/DeleteDataStatement.java
index c2bc3416a3c..f57a5d7b623 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/crud/DeleteDataStatement.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/crud/DeleteDataStatement.java
@@ -19,14 +19,10 @@
package org.apache.iotdb.db.queryengine.plan.statement.crud;
-import org.apache.iotdb.common.rpc.thrift.TSStatus;
-import org.apache.iotdb.commons.auth.entity.PrivilegeType;
import org.apache.iotdb.commons.path.MeasurementPath;
-import org.apache.iotdb.db.auth.AuthorityChecker;
import org.apache.iotdb.db.queryengine.plan.statement.Statement;
import org.apache.iotdb.db.queryengine.plan.statement.StatementType;
import org.apache.iotdb.db.queryengine.plan.statement.StatementVisitor;
-import org.apache.iotdb.rpc.TSStatusCode;
import org.apache.tsfile.read.common.TimeRange;
@@ -48,19 +44,6 @@ public class DeleteDataStatement extends Statement {
return getPathList();
}
- @Override
- public TSStatus checkPermissionBeforeProcess(String userName) {
- if (AuthorityChecker.SUPER_USER.equals(userName)) {
- return new TSStatus(TSStatusCode.SUCCESS_STATUS.getStatusCode());
- }
- List<MeasurementPath> checkedPaths = getPaths();
- return AuthorityChecker.getTSStatus(
- AuthorityChecker.checkFullPathOrPatternListPermission(
- userName, checkedPaths, PrivilegeType.WRITE_DATA),
- checkedPaths,
- PrivilegeType.WRITE_DATA);
- }
-
public List<MeasurementPath> getPathList() {
return pathList;
}
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/crud/InsertBaseStatement.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/crud/InsertBaseStatement.java
index 950195c5248..2dc2118cd88 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/crud/InsertBaseStatement.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/crud/InsertBaseStatement.java
@@ -19,12 +19,9 @@
package org.apache.iotdb.db.queryengine.plan.statement.crud;
-import org.apache.iotdb.common.rpc.thrift.TSStatus;
-import org.apache.iotdb.commons.auth.entity.PrivilegeType;
import org.apache.iotdb.commons.path.PartialPath;
import org.apache.iotdb.commons.schema.table.column.TsTableColumnCategory;
import org.apache.iotdb.commons.schema.view.LogicalViewSchema;
-import org.apache.iotdb.db.auth.AuthorityChecker;
import org.apache.iotdb.db.conf.IoTDBDescriptor;
import org.apache.iotdb.db.exception.metadata.DataTypeMismatchException;
import org.apache.iotdb.db.exception.metadata.DuplicateInsertException;
@@ -40,7 +37,6 @@ import org.apache.iotdb.db.queryengine.plan.relational.type.InternalTypeManager;
import org.apache.iotdb.db.queryengine.plan.statement.Statement;
import org.apache.iotdb.db.schemaengine.schemaregion.attribute.update.UpdateDetailContainer;
import org.apache.iotdb.db.utils.CommonUtils;
-import org.apache.iotdb.rpc.TSStatusCode;
import org.apache.tsfile.annotations.TableModel;
import org.apache.tsfile.enums.TSDataType;
@@ -193,19 +189,6 @@ public abstract class InsertBaseStatement extends Statement implements Accountab
return Collections.emptyList();
}
- @Override
- public TSStatus checkPermissionBeforeProcess(String userName) {
- if (AuthorityChecker.SUPER_USER.equals(userName)) {
- return new TSStatus(TSStatusCode.SUCCESS_STATUS.getStatusCode());
- }
- List<PartialPath> checkedPaths = getPaths().stream().distinct().collect(Collectors.toList());
- return AuthorityChecker.getTSStatus(
- AuthorityChecker.checkFullPathOrPatternListPermission(
- userName, checkedPaths, PrivilegeType.WRITE_DATA),
- checkedPaths,
- PrivilegeType.WRITE_DATA);
- }
-
public abstract ISchemaValidation getSchemaValidation();
public abstract List<ISchemaValidation> getSchemaValidationList();
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/crud/InsertStatement.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/crud/InsertStatement.java
index 1019b65dfd8..e4460666af4 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/crud/InsertStatement.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/crud/InsertStatement.java
@@ -19,14 +19,10 @@
package org.apache.iotdb.db.queryengine.plan.statement.crud;
-import org.apache.iotdb.common.rpc.thrift.TSStatus;
-import org.apache.iotdb.commons.auth.entity.PrivilegeType;
import org.apache.iotdb.commons.path.PartialPath;
-import org.apache.iotdb.db.auth.AuthorityChecker;
import org.apache.iotdb.db.queryengine.plan.statement.Statement;
import org.apache.iotdb.db.queryengine.plan.statement.StatementType;
import org.apache.iotdb.db.queryengine.plan.statement.StatementVisitor;
-import org.apache.iotdb.rpc.TSStatusCode;
import java.util.ArrayList;
import java.util.List;
@@ -57,19 +53,6 @@ public class InsertStatement extends Statement {
return ret;
}
- @Override
- public TSStatus checkPermissionBeforeProcess(String userName) {
- if (AuthorityChecker.SUPER_USER.equals(userName)) {
- return new TSStatus(TSStatusCode.SUCCESS_STATUS.getStatusCode());
- }
- List<PartialPath> checkedPaths = getPaths();
- return AuthorityChecker.getTSStatus(
- AuthorityChecker.checkFullPathOrPatternListPermission(
- userName, checkedPaths, PrivilegeType.WRITE_DATA),
- checkedPaths,
- PrivilegeType.WRITE_DATA);
- }
-
public PartialPath getDevice() {
return device;
}
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/crud/LoadTsFileStatement.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/crud/LoadTsFileStatement.java
index abb42b74417..4c27796680b 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/crud/LoadTsFileStatement.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/crud/LoadTsFileStatement.java
@@ -19,7 +19,6 @@
package org.apache.iotdb.db.queryengine.plan.statement.crud;
-import org.apache.iotdb.common.rpc.thrift.TSStatus;
import org.apache.iotdb.commons.path.PartialPath;
import org.apache.iotdb.db.conf.IoTDBDescriptor;
import org.apache.iotdb.db.queryengine.common.MPPQueryContext;
@@ -29,7 +28,6 @@ import org.apache.iotdb.db.queryengine.plan.statement.StatementType;
import org.apache.iotdb.db.queryengine.plan.statement.StatementVisitor;
import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource;
import org.apache.iotdb.db.storageengine.load.config.LoadTsFileConfigurator;
-import org.apache.iotdb.rpc.TSStatusCode;
import org.apache.tsfile.annotations.TableModel;
import org.apache.tsfile.common.constant.TsFileConstant;
@@ -312,12 +310,6 @@ public class LoadTsFileStatement extends Statement {
return Collections.emptyList();
}
- @Override
- public TSStatus checkPermissionBeforeProcess(String userName) {
- // no need to check here, it will be checked in process phase
- return new TSStatus(TSStatusCode.SUCCESS_STATUS.getStatusCode());
- }
-
@TableModel
@Override
public org.apache.iotdb.db.queryengine.plan.relational.sql.ast.Statement toRelationalStatement(
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/crud/QueryStatement.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/crud/QueryStatement.java
index ba4ac07ae87..d966903abd3 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/crud/QueryStatement.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/crud/QueryStatement.java
@@ -19,11 +19,7 @@
package org.apache.iotdb.db.queryengine.plan.statement.crud;
-import org.apache.iotdb.common.rpc.thrift.TSStatus;
-import org.apache.iotdb.commons.auth.AuthException;
-import org.apache.iotdb.commons.auth.entity.PrivilegeType;
import org.apache.iotdb.commons.path.PartialPath;
-import org.apache.iotdb.db.auth.AuthorityChecker;
import org.apache.iotdb.db.exception.sql.SemanticException;
import org.apache.iotdb.db.queryengine.execution.operator.window.WindowType;
import org.apache.iotdb.db.queryengine.execution.operator.window.ainode.InferenceWindow;
@@ -50,7 +46,6 @@ import org.apache.iotdb.db.queryengine.plan.statement.component.ResultSetFormat;
import org.apache.iotdb.db.queryengine.plan.statement.component.SelectComponent;
import org.apache.iotdb.db.queryengine.plan.statement.component.SortItem;
import org.apache.iotdb.db.queryengine.plan.statement.component.WhereCondition;
-import org.apache.iotdb.rpc.TSStatusCode;
import java.util.ArrayList;
import java.util.Collections;
@@ -217,19 +212,6 @@ public class QueryStatement extends AuthorityInformationStatement {
return new ArrayList<>(authPaths);
}
- @Override
- public TSStatus checkPermissionBeforeProcess(String userName) {
- try {
- if (!AuthorityChecker.SUPER_USER.equals(userName)) {
- this.authorityScope =
- AuthorityChecker.getAuthorizedPathTree(userName, PrivilegeType.READ_DATA);
- }
- } catch (AuthException e) {
- return new TSStatus(e.getCode().getStatusCode());
- }
- return new TSStatus(TSStatusCode.SUCCESS_STATUS.getStatusCode());
- }
-
public SelectComponent getSelectComponent() {
return selectComponent;
}
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/internal/InternalBatchActivateTemplateStatement.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/internal/InternalBatchActivateTemplateStatement.java
index fb4e8d7ebd8..7b7a19a9a8e 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/internal/InternalBatchActivateTemplateStatement.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/internal/InternalBatchActivateTemplateStatement.java
@@ -19,16 +19,12 @@
package org.apache.iotdb.db.queryengine.plan.statement.internal;
-import org.apache.iotdb.common.rpc.thrift.TSStatus;
-import org.apache.iotdb.commons.auth.entity.PrivilegeType;
import org.apache.iotdb.commons.path.PartialPath;
-import org.apache.iotdb.db.auth.AuthorityChecker;
import org.apache.iotdb.db.queryengine.plan.statement.Statement;
import org.apache.iotdb.db.queryengine.plan.statement.StatementType;
import org.apache.iotdb.db.queryengine.plan.statement.StatementVisitor;
import org.apache.iotdb.db.schemaengine.template.ClusterTemplateManager;
import org.apache.iotdb.db.schemaengine.template.Template;
-import org.apache.iotdb.rpc.TSStatusCode;
import org.apache.tsfile.utils.Pair;
@@ -71,19 +67,6 @@ public class InternalBatchActivateTemplateStatement extends Statement {
.collect(Collectors.toList());
}
- @Override
- public TSStatus checkPermissionBeforeProcess(String userName) {
- if (AuthorityChecker.SUPER_USER.equals(userName)) {
- return new TSStatus(TSStatusCode.SUCCESS_STATUS.getStatusCode());
- }
- List<PartialPath> checkedPaths = getPaths();
- return AuthorityChecker.getTSStatus(
- AuthorityChecker.checkFullPathOrPatternListPermission(
- userName, checkedPaths, PrivilegeType.WRITE_SCHEMA),
- checkedPaths,
- PrivilegeType.WRITE_SCHEMA);
- }
-
@Override
public <R, C> R accept(StatementVisitor<R, C> visitor, C context) {
return visitor.visitInternalBatchActivateTemplate(this, context);
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/internal/InternalCreateMultiTimeSeriesStatement.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/internal/InternalCreateMultiTimeSeriesStatement.java
index 168cfeed76b..baee566130e 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/internal/InternalCreateMultiTimeSeriesStatement.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/internal/InternalCreateMultiTimeSeriesStatement.java
@@ -19,15 +19,11 @@
package org.apache.iotdb.db.queryengine.plan.statement.internal;
-import org.apache.iotdb.common.rpc.thrift.TSStatus;
-import org.apache.iotdb.commons.auth.entity.PrivilegeType;
import org.apache.iotdb.commons.path.PartialPath;
-import org.apache.iotdb.db.auth.AuthorityChecker;
import org.apache.iotdb.db.queryengine.plan.planner.plan.node.metadata.write.MeasurementGroup;
import org.apache.iotdb.db.queryengine.plan.statement.Statement;
import org.apache.iotdb.db.queryengine.plan.statement.StatementType;
import org.apache.iotdb.db.queryengine.plan.statement.StatementVisitor;
-import org.apache.iotdb.rpc.TSStatusCode;
import org.apache.tsfile.utils.Pair;
@@ -60,19 +56,6 @@ public class InternalCreateMultiTimeSeriesStatement extends Statement {
.collect(Collectors.toList());
}
- @Override
- public TSStatus checkPermissionBeforeProcess(String userName) {
- if (AuthorityChecker.SUPER_USER.equals(userName)) {
- return new TSStatus(TSStatusCode.SUCCESS_STATUS.getStatusCode());
- }
- List<PartialPath> checkedPaths = getPaths();
- return AuthorityChecker.getTSStatus(
- AuthorityChecker.checkFullPathOrPatternListPermission(
- userName, checkedPaths, PrivilegeType.WRITE_SCHEMA),
- checkedPaths,
- PrivilegeType.WRITE_SCHEMA);
- }
-
@Override
public <R, C> R accept(StatementVisitor<R, C> visitor, C context) {
return visitor.visitInternalCreateMultiTimeSeries(this, context);
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/internal/InternalCreateTimeSeriesStatement.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/internal/InternalCreateTimeSeriesStatement.java
index 9327ba038bc..8e6c16663f0 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/internal/InternalCreateTimeSeriesStatement.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/internal/InternalCreateTimeSeriesStatement.java
@@ -19,14 +19,10 @@
package org.apache.iotdb.db.queryengine.plan.statement.internal;
-import org.apache.iotdb.common.rpc.thrift.TSStatus;
-import org.apache.iotdb.commons.auth.entity.PrivilegeType;
import org.apache.iotdb.commons.path.PartialPath;
-import org.apache.iotdb.db.auth.AuthorityChecker;
import org.apache.iotdb.db.queryengine.plan.statement.Statement;
import org.apache.iotdb.db.queryengine.plan.statement.StatementType;
import org.apache.iotdb.db.queryengine.plan.statement.StatementVisitor;
-import org.apache.iotdb.rpc.TSStatusCode;
import org.apache.tsfile.enums.TSDataType;
import org.apache.tsfile.file.metadata.enums.CompressionType;
@@ -95,19 +91,6 @@ public class InternalCreateTimeSeriesStatement extends Statement {
.collect(Collectors.toList());
}
- @Override
- public TSStatus checkPermissionBeforeProcess(String userName) {
- if (AuthorityChecker.SUPER_USER.equals(userName)) {
- return new TSStatus(TSStatusCode.SUCCESS_STATUS.getStatusCode());
- }
- List<PartialPath> checkedPaths = getPaths();
- return AuthorityChecker.getTSStatus(
- AuthorityChecker.checkFullPathOrPatternListPermission(
- userName, checkedPaths, PrivilegeType.WRITE_SCHEMA),
- checkedPaths,
- PrivilegeType.WRITE_SCHEMA);
- }
-
@Override
public <R, C> R accept(StatementVisitor<R, C> visitor, C context) {
return visitor.visitInternalCreateTimeseries(this, context);
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/AlterTimeSeriesStatement.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/AlterTimeSeriesStatement.java
index f3e96cc09ce..5913fb9c2fd 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/AlterTimeSeriesStatement.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/AlterTimeSeriesStatement.java
@@ -19,15 +19,11 @@
package org.apache.iotdb.db.queryengine.plan.statement.metadata;
-import org.apache.iotdb.common.rpc.thrift.TSStatus;
-import org.apache.iotdb.commons.auth.entity.PrivilegeType;
import org.apache.iotdb.commons.path.MeasurementPath;
import org.apache.iotdb.commons.path.PartialPath;
-import org.apache.iotdb.db.auth.AuthorityChecker;
import org.apache.iotdb.db.queryengine.plan.statement.Statement;
import org.apache.iotdb.db.queryengine.plan.statement.StatementType;
import org.apache.iotdb.db.queryengine.plan.statement.StatementVisitor;
-import org.apache.iotdb.rpc.TSStatusCode;
import java.util.Collections;
import java.util.List;
@@ -134,17 +130,6 @@ public class AlterTimeSeriesStatement extends Statement {
return isAlterView;
}
- @Override
- public TSStatus checkPermissionBeforeProcess(String userName) {
- if (AuthorityChecker.SUPER_USER.equals(userName)) {
- return new TSStatus(TSStatusCode.SUCCESS_STATUS.getStatusCode());
- }
- return AuthorityChecker.getTSStatus(
- AuthorityChecker.checkFullPathOrPatternPermission(
- userName, path, PrivilegeType.WRITE_SCHEMA),
- PrivilegeType.WRITE_SCHEMA);
- }
-
@Override
public <R, C> R accept(StatementVisitor<R, C> visitor, C context) {
return visitor.visitAlterTimeSeries(this, context);
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/CountDevicesStatement.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/CountDevicesStatement.java
index 05d4c6384a2..06d32f7c9b5 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/CountDevicesStatement.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/CountDevicesStatement.java
@@ -19,15 +19,9 @@
package org.apache.iotdb.db.queryengine.plan.statement.metadata;
-import org.apache.iotdb.common.rpc.thrift.TSStatus;
-import org.apache.iotdb.commons.auth.AuthException;
-import org.apache.iotdb.commons.auth.entity.PrivilegeType;
import org.apache.iotdb.commons.path.PartialPath;
-import org.apache.iotdb.commons.path.PathPatternTreeUtils;
-import org.apache.iotdb.db.auth.AuthorityChecker;
import org.apache.iotdb.db.queryengine.plan.statement.StatementVisitor;
import org.apache.iotdb.db.queryengine.plan.statement.component.WhereCondition;
-import org.apache.iotdb.rpc.TSStatusCode;
public class CountDevicesStatement extends CountStatement {
@@ -49,25 +43,6 @@ public class CountDevicesStatement extends CountStatement {
return timeCondition != null;
}
- @Override
- public TSStatus checkPermissionBeforeProcess(String userName) {
- if (hasTimeCondition()) {
- try {
- if (!AuthorityChecker.SUPER_USER.equals(userName)) {
- this.authorityScope =
- PathPatternTreeUtils.intersectWithFullPathPrefixTree(
- AuthorityChecker.getAuthorizedPathTree(userName, PrivilegeType.READ_SCHEMA),
- AuthorityChecker.getAuthorizedPathTree(userName, PrivilegeType.READ_DATA));
- }
- } catch (AuthException e) {
- return new TSStatus(e.getCode().getStatusCode());
- }
- return new TSStatus(TSStatusCode.SUCCESS_STATUS.getStatusCode());
- } else {
- return super.checkPermissionBeforeProcess(userName);
- }
- }
-
@Override
public <R, C> R accept(StatementVisitor<R, C> visitor, C context) {
return visitor.visitCountDevices(this, context);
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/CountTimeSeriesStatement.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/CountTimeSeriesStatement.java
index f116e190092..c7c259030a9 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/CountTimeSeriesStatement.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/CountTimeSeriesStatement.java
@@ -19,16 +19,10 @@
package org.apache.iotdb.db.queryengine.plan.statement.metadata;
-import org.apache.iotdb.common.rpc.thrift.TSStatus;
-import org.apache.iotdb.commons.auth.AuthException;
-import org.apache.iotdb.commons.auth.entity.PrivilegeType;
import org.apache.iotdb.commons.path.PartialPath;
-import org.apache.iotdb.commons.path.PathPatternTreeUtils;
import org.apache.iotdb.commons.schema.filter.SchemaFilter;
-import org.apache.iotdb.db.auth.AuthorityChecker;
import org.apache.iotdb.db.queryengine.plan.statement.StatementVisitor;
import org.apache.iotdb.db.queryengine.plan.statement.component.WhereCondition;
-import org.apache.iotdb.rpc.TSStatusCode;
public class CountTimeSeriesStatement extends CountStatement {
@@ -60,25 +54,6 @@ public class CountTimeSeriesStatement extends CountStatement {
return timeCondition;
}
- @Override
- public TSStatus checkPermissionBeforeProcess(String userName) {
- if (hasTimeCondition()) {
- try {
- if (!AuthorityChecker.SUPER_USER.equals(userName)) {
- this.authorityScope =
- PathPatternTreeUtils.intersectWithFullPathPrefixTree(
- AuthorityChecker.getAuthorizedPathTree(userName, PrivilegeType.READ_SCHEMA),
- AuthorityChecker.getAuthorizedPathTree(userName, PrivilegeType.READ_DATA));
- }
- } catch (AuthException e) {
- return new TSStatus(e.getCode().getStatusCode());
- }
- return new TSStatus(TSStatusCode.SUCCESS_STATUS.getStatusCode());
- } else {
- return super.checkPermissionBeforeProcess(userName);
- }
- }
-
@Override
public <R, C> R accept(StatementVisitor<R, C> visitor, C context) {
return visitor.visitCountTimeSeries(this, context);
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/CountTimeSlotListStatement.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/CountTimeSlotListStatement.java
index 40110bdf2a5..1d93c663d7a 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/CountTimeSlotListStatement.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/CountTimeSlotListStatement.java
@@ -19,10 +19,8 @@
package org.apache.iotdb.db.queryengine.plan.statement.metadata;
-import org.apache.iotdb.common.rpc.thrift.TSStatus;
import org.apache.iotdb.commons.exception.IllegalPathException;
import org.apache.iotdb.commons.path.PartialPath;
-import org.apache.iotdb.db.auth.AuthorityChecker;
import org.apache.iotdb.db.queryengine.plan.analyze.QueryType;
import org.apache.iotdb.db.queryengine.plan.statement.IConfigStatement;
import org.apache.iotdb.db.queryengine.plan.statement.Statement;
@@ -116,9 +114,4 @@ public class CountTimeSlotListStatement extends Statement implements IConfigStat
return new ArrayList<>();
}
}
-
- @Override
- public TSStatus checkPermissionBeforeProcess(String userName) {
- return AuthorityChecker.checkSuperUserOrMaintain(userName);
- }
}
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/CreateAlignedTimeSeriesStatement.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/CreateAlignedTimeSeriesStatement.java
index 600b87c19fe..576b198401a 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/CreateAlignedTimeSeriesStatement.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/CreateAlignedTimeSeriesStatement.java
@@ -19,14 +19,10 @@
package org.apache.iotdb.db.queryengine.plan.statement.metadata;
-import org.apache.iotdb.common.rpc.thrift.TSStatus;
-import org.apache.iotdb.commons.auth.entity.PrivilegeType;
import org.apache.iotdb.commons.path.PartialPath;
-import org.apache.iotdb.db.auth.AuthorityChecker;
import org.apache.iotdb.db.queryengine.plan.statement.Statement;
import org.apache.iotdb.db.queryengine.plan.statement.StatementType;
import org.apache.iotdb.db.queryengine.plan.statement.StatementVisitor;
-import org.apache.iotdb.rpc.TSStatusCode;
import org.apache.tsfile.enums.TSDataType;
import org.apache.tsfile.file.metadata.enums.CompressionType;
@@ -70,19 +66,6 @@ public class CreateAlignedTimeSeriesStatement extends Statement {
return paths;
}
- @Override
- public TSStatus checkPermissionBeforeProcess(String userName) {
- if (AuthorityChecker.SUPER_USER.equals(userName)) {
- return new TSStatus(TSStatusCode.SUCCESS_STATUS.getStatusCode());
- }
- List<PartialPath> checkedPaths = getPaths();
- return AuthorityChecker.getTSStatus(
- AuthorityChecker.checkFullPathOrPatternListPermission(
- userName, checkedPaths, PrivilegeType.WRITE_SCHEMA),
- checkedPaths,
- PrivilegeType.WRITE_SCHEMA);
- }
-
public PartialPath getDevicePath() {
return devicePath;
}
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/CreateContinuousQueryStatement.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/CreateContinuousQueryStatement.java
index fb8ba32b7b5..92cd2e05722 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/CreateContinuousQueryStatement.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/CreateContinuousQueryStatement.java
@@ -19,11 +19,8 @@
package org.apache.iotdb.db.queryengine.plan.statement.metadata;
-import org.apache.iotdb.common.rpc.thrift.TSStatus;
-import org.apache.iotdb.commons.auth.entity.PrivilegeType;
import org.apache.iotdb.commons.cq.TimeoutPolicy;
import org.apache.iotdb.commons.path.PartialPath;
-import org.apache.iotdb.db.auth.AuthorityChecker;
import org.apache.iotdb.db.conf.IoTDBDescriptor;
import org.apache.iotdb.db.exception.sql.SemanticException;
import org.apache.iotdb.db.queryengine.plan.analyze.PredicateUtils;
@@ -34,7 +31,6 @@ import org.apache.iotdb.db.queryengine.plan.statement.StatementType;
import org.apache.iotdb.db.queryengine.plan.statement.StatementVisitor;
import org.apache.iotdb.db.queryengine.plan.statement.component.GroupByTimeComponent;
import org.apache.iotdb.db.queryengine.plan.statement.crud.QueryStatement;
-import org.apache.iotdb.rpc.TSStatusCode;
import java.util.Collections;
import java.util.List;
@@ -167,16 +163,6 @@ public class CreateContinuousQueryStatement extends Statement implements IConfig
return Collections.emptyList();
}
- @Override
- public TSStatus checkPermissionBeforeProcess(String userName) {
- if (AuthorityChecker.SUPER_USER.equals(userName)) {
- return new TSStatus(TSStatusCode.SUCCESS_STATUS.getStatusCode());
- }
- return AuthorityChecker.getTSStatus(
- AuthorityChecker.checkSystemPermission(userName, PrivilegeType.USE_CQ),
- PrivilegeType.USE_CQ);
- }
-
@Override
public <R, C> R accept(StatementVisitor<R, C> visitor, C context) {
return visitor.visitCreateContinuousQuery(this, context);
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/CreateFunctionStatement.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/CreateFunctionStatement.java
index 4859a6c596e..baa7a4a295b 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/CreateFunctionStatement.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/CreateFunctionStatement.java
@@ -19,16 +19,12 @@
package org.apache.iotdb.db.queryengine.plan.statement.metadata;
-import org.apache.iotdb.common.rpc.thrift.TSStatus;
-import org.apache.iotdb.commons.auth.entity.PrivilegeType;
import org.apache.iotdb.commons.path.PartialPath;
-import org.apache.iotdb.db.auth.AuthorityChecker;
import org.apache.iotdb.db.queryengine.plan.analyze.QueryType;
import org.apache.iotdb.db.queryengine.plan.statement.IConfigStatement;
import org.apache.iotdb.db.queryengine.plan.statement.Statement;
import org.apache.iotdb.db.queryengine.plan.statement.StatementType;
import org.apache.iotdb.db.queryengine.plan.statement.StatementVisitor;
-import org.apache.iotdb.rpc.TSStatusCode;
import java.util.Collections;
import java.util.List;
@@ -74,14 +70,4 @@ public class CreateFunctionStatement extends Statement implements IConfigStateme
public List<PartialPath> getPaths() {
return Collections.emptyList();
}
-
- @Override
- public TSStatus checkPermissionBeforeProcess(String userName) {
- if (AuthorityChecker.SUPER_USER.equals(userName)) {
- return new TSStatus(TSStatusCode.SUCCESS_STATUS.getStatusCode());
- }
- return AuthorityChecker.getTSStatus(
- AuthorityChecker.checkSystemPermission(userName, PrivilegeType.USE_UDF),
- PrivilegeType.USE_UDF);
- }
}
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/CreateMultiTimeSeriesStatement.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/CreateMultiTimeSeriesStatement.java
index 3a4e4c7b7b8..c380e7956a6 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/CreateMultiTimeSeriesStatement.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/CreateMultiTimeSeriesStatement.java
@@ -19,14 +19,10 @@
package org.apache.iotdb.db.queryengine.plan.statement.metadata;
-import org.apache.iotdb.common.rpc.thrift.TSStatus;
-import org.apache.iotdb.commons.auth.entity.PrivilegeType;
import org.apache.iotdb.commons.path.MeasurementPath;
-import org.apache.iotdb.db.auth.AuthorityChecker;
import org.apache.iotdb.db.queryengine.plan.statement.Statement;
import org.apache.iotdb.db.queryengine.plan.statement.StatementType;
import org.apache.iotdb.db.queryengine.plan.statement.StatementVisitor;
-import org.apache.iotdb.rpc.TSStatusCode;
import org.apache.tsfile.enums.TSDataType;
import org.apache.tsfile.file.metadata.enums.CompressionType;
@@ -58,19 +54,6 @@ public class CreateMultiTimeSeriesStatement extends Statement {
return paths;
}
- @Override
- public TSStatus checkPermissionBeforeProcess(String userName) {
- if (AuthorityChecker.SUPER_USER.equals(userName)) {
- return new TSStatus(TSStatusCode.SUCCESS_STATUS.getStatusCode());
- }
- List<MeasurementPath> checkedPaths = getPaths();
- return AuthorityChecker.getTSStatus(
- AuthorityChecker.checkFullPathOrPatternListPermission(
- userName, checkedPaths, PrivilegeType.WRITE_SCHEMA),
- checkedPaths,
- PrivilegeType.WRITE_SCHEMA);
- }
-
public void setPaths(List<MeasurementPath> paths) {
this.paths = paths;
}
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/CreateTimeSeriesStatement.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/CreateTimeSeriesStatement.java
index bd9b602fd97..b053bd97c02 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/CreateTimeSeriesStatement.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/CreateTimeSeriesStatement.java
@@ -19,15 +19,11 @@
package org.apache.iotdb.db.queryengine.plan.statement.metadata;
-import org.apache.iotdb.common.rpc.thrift.TSStatus;
-import org.apache.iotdb.commons.auth.entity.PrivilegeType;
import org.apache.iotdb.commons.path.MeasurementPath;
import org.apache.iotdb.commons.path.PartialPath;
-import org.apache.iotdb.db.auth.AuthorityChecker;
import org.apache.iotdb.db.queryengine.plan.statement.Statement;
import org.apache.iotdb.db.queryengine.plan.statement.StatementType;
import org.apache.iotdb.db.queryengine.plan.statement.StatementVisitor;
-import org.apache.iotdb.rpc.TSStatusCode;
import org.apache.tsfile.enums.TSDataType;
import org.apache.tsfile.file.metadata.enums.CompressionType;
@@ -67,17 +63,6 @@ public class CreateTimeSeriesStatement extends Statement {
return Collections.singletonList(path);
}
- @Override
- public TSStatus checkPermissionBeforeProcess(String userName) {
- if (AuthorityChecker.SUPER_USER.equals(userName)) {
- return new TSStatus(TSStatusCode.SUCCESS_STATUS.getStatusCode());
- }
- return AuthorityChecker.getTSStatus(
- AuthorityChecker.checkFullPathOrPatternPermission(
- userName, path, PrivilegeType.WRITE_SCHEMA),
- PrivilegeType.WRITE_SCHEMA);
- }
-
public MeasurementPath getPath() {
return path;
}
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/CreateTriggerStatement.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/CreateTriggerStatement.java
index cf35785af48..2a1affe577e 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/CreateTriggerStatement.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/CreateTriggerStatement.java
@@ -19,16 +19,12 @@
package org.apache.iotdb.db.queryengine.plan.statement.metadata;
-import org.apache.iotdb.common.rpc.thrift.TSStatus;
-import org.apache.iotdb.commons.auth.entity.PrivilegeType;
import org.apache.iotdb.commons.path.PartialPath;
-import org.apache.iotdb.db.auth.AuthorityChecker;
import org.apache.iotdb.db.queryengine.plan.analyze.QueryType;
import org.apache.iotdb.db.queryengine.plan.statement.IConfigStatement;
import org.apache.iotdb.db.queryengine.plan.statement.Statement;
import org.apache.iotdb.db.queryengine.plan.statement.StatementType;
import org.apache.iotdb.db.queryengine.plan.statement.StatementVisitor;
-import org.apache.iotdb.rpc.TSStatusCode;
import org.apache.iotdb.trigger.api.enums.TriggerEvent;
import org.apache.iotdb.trigger.api.enums.TriggerType;
@@ -121,14 +117,4 @@ public class CreateTriggerStatement extends Statement implements IConfigStatemen
public List<PartialPath> getPaths() {
return Collections.singletonList(pathPattern);
}
-
- @Override
- public TSStatus checkPermissionBeforeProcess(String userName) {
- if (AuthorityChecker.SUPER_USER.equals(userName)) {
- return new TSStatus(TSStatusCode.SUCCESS_STATUS.getStatusCode());
- }
- return AuthorityChecker.getTSStatus(
- AuthorityChecker.checkSystemPermission(userName, PrivilegeType.USE_TRIGGER),
- PrivilegeType.USE_TRIGGER);
- }
}
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/DatabaseSchemaStatement.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/DatabaseSchemaStatement.java
index 3efd42e5758..53ff33e2437 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/DatabaseSchemaStatement.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/DatabaseSchemaStatement.java
@@ -19,16 +19,12 @@
package org.apache.iotdb.db.queryengine.plan.statement.metadata;
-import org.apache.iotdb.common.rpc.thrift.TSStatus;
-import org.apache.iotdb.commons.auth.entity.PrivilegeType;
import org.apache.iotdb.commons.path.PartialPath;
-import org.apache.iotdb.db.auth.AuthorityChecker;
import org.apache.iotdb.db.queryengine.plan.analyze.QueryType;
import org.apache.iotdb.db.queryengine.plan.statement.IConfigStatement;
import org.apache.iotdb.db.queryengine.plan.statement.Statement;
import org.apache.iotdb.db.queryengine.plan.statement.StatementType;
import org.apache.iotdb.db.queryengine.plan.statement.StatementVisitor;
-import org.apache.iotdb.rpc.TSStatusCode;
import java.util.Collections;
import java.util.List;
@@ -143,16 +139,6 @@ public class DatabaseSchemaStatement extends Statement implements IConfigStateme
return databasePath != null ? Collections.singletonList(databasePath) : Collections.emptyList();
}
- @Override
- public TSStatus checkPermissionBeforeProcess(final String userName) {
- if (AuthorityChecker.SUPER_USER.equals(userName)) {
- return new TSStatus(TSStatusCode.SUCCESS_STATUS.getStatusCode());
- }
- return AuthorityChecker.getTSStatus(
- AuthorityChecker.checkSystemPermission(userName, PrivilegeType.MANAGE_DATABASE),
- PrivilegeType.MANAGE_DATABASE);
- }
-
@Override
public String toString() {
return "SetStorageGroupStatement{"
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/DeleteDatabaseStatement.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/DeleteDatabaseStatement.java
index 33786815e16..9861331974b 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/DeleteDatabaseStatement.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/DeleteDatabaseStatement.java
@@ -19,17 +19,13 @@
package org.apache.iotdb.db.queryengine.plan.statement.metadata;
-import org.apache.iotdb.common.rpc.thrift.TSStatus;
-import org.apache.iotdb.commons.auth.entity.PrivilegeType;
import org.apache.iotdb.commons.exception.IllegalPathException;
import org.apache.iotdb.commons.path.PartialPath;
-import org.apache.iotdb.db.auth.AuthorityChecker;
import org.apache.iotdb.db.queryengine.plan.analyze.QueryType;
import org.apache.iotdb.db.queryengine.plan.statement.IConfigStatement;
import org.apache.iotdb.db.queryengine.plan.statement.Statement;
import org.apache.iotdb.db.queryengine.plan.statement.StatementType;
import org.apache.iotdb.db.queryengine.plan.statement.StatementVisitor;
-import org.apache.iotdb.rpc.TSStatusCode;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -61,16 +57,6 @@ public class DeleteDatabaseStatement extends Statement implements IConfigStateme
return paths;
}
- @Override
- public TSStatus checkPermissionBeforeProcess(String userName) {
- if (AuthorityChecker.SUPER_USER.equals(userName)) {
- return new TSStatus(TSStatusCode.SUCCESS_STATUS.getStatusCode());
- }
- return AuthorityChecker.getTSStatus(
- AuthorityChecker.checkSystemPermission(userName, PrivilegeType.MANAGE_DATABASE),
- PrivilegeType.MANAGE_DATABASE);
- }
-
public List<String> getPrefixPath() {
return prefixPathList;
}
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/DeleteTimeSeriesStatement.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/DeleteTimeSeriesStatement.java
index 1c5e38be438..f8428d4e026 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/DeleteTimeSeriesStatement.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/DeleteTimeSeriesStatement.java
@@ -19,16 +19,12 @@
package org.apache.iotdb.db.queryengine.plan.statement.metadata;
-import org.apache.iotdb.common.rpc.thrift.TSStatus;
-import org.apache.iotdb.commons.auth.entity.PrivilegeType;
import org.apache.iotdb.commons.path.PartialPath;
-import org.apache.iotdb.db.auth.AuthorityChecker;
import org.apache.iotdb.db.queryengine.plan.analyze.QueryType;
import org.apache.iotdb.db.queryengine.plan.statement.IConfigStatement;
import org.apache.iotdb.db.queryengine.plan.statement.Statement;
import org.apache.iotdb.db.queryengine.plan.statement.StatementType;
import org.apache.iotdb.db.queryengine.plan.statement.StatementVisitor;
-import org.apache.iotdb.rpc.TSStatusCode;
import java.util.List;
@@ -51,19 +47,6 @@ public class DeleteTimeSeriesStatement extends Statement implements IConfigState
return pathPatternList;
}
- @Override
- public TSStatus checkPermissionBeforeProcess(String userName) {
- if (AuthorityChecker.SUPER_USER.equals(userName)) {
- return new TSStatus(TSStatusCode.SUCCESS_STATUS.getStatusCode());
- }
- List<PartialPath> checkedPaths = getPaths();
- return AuthorityChecker.getTSStatus(
- AuthorityChecker.checkFullPathOrPatternListPermission(
- userName, checkedPaths, PrivilegeType.WRITE_SCHEMA),
- checkedPaths,
- PrivilegeType.WRITE_SCHEMA);
- }
-
public List<PartialPath> getPathPatternList() {
return pathPatternList;
}
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/DropContinuousQueryStatement.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/DropContinuousQueryStatement.java
index 695e489ddc9..12932d8a8d0 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/DropContinuousQueryStatement.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/DropContinuousQueryStatement.java
@@ -19,16 +19,12 @@
package org.apache.iotdb.db.queryengine.plan.statement.metadata;
-import org.apache.iotdb.common.rpc.thrift.TSStatus;
-import org.apache.iotdb.commons.auth.entity.PrivilegeType;
import org.apache.iotdb.commons.path.PartialPath;
-import org.apache.iotdb.db.auth.AuthorityChecker;
import org.apache.iotdb.db.queryengine.plan.analyze.QueryType;
import org.apache.iotdb.db.queryengine.plan.statement.IConfigStatement;
import org.apache.iotdb.db.queryengine.plan.statement.Statement;
import org.apache.iotdb.db.queryengine.plan.statement.StatementType;
import org.apache.iotdb.db.queryengine.plan.statement.StatementVisitor;
-import org.apache.iotdb.rpc.TSStatusCode;
import java.util.Collections;
import java.util.List;
@@ -61,14 +57,4 @@ public class DropContinuousQueryStatement extends Statement implements IConfigSt
public <R, C> R accept(StatementVisitor<R, C> visitor, C context) {
return visitor.visitDropContinuousQuery(this, context);
}
-
- @Override
- public TSStatus checkPermissionBeforeProcess(String userName) {
- if (AuthorityChecker.SUPER_USER.equals(userName)) {
- return new TSStatus(TSStatusCode.SUCCESS_STATUS.getStatusCode());
- }
- return AuthorityChecker.getTSStatus(
- AuthorityChecker.checkSystemPermission(userName, PrivilegeType.USE_CQ),
- PrivilegeType.USE_CQ);
- }
}
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/DropFunctionStatement.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/DropFunctionStatement.java
index ec777e44d49..14a7d8b6868 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/DropFunctionStatement.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/DropFunctionStatement.java
@@ -19,16 +19,12 @@
package org.apache.iotdb.db.queryengine.plan.statement.metadata;
-import org.apache.iotdb.common.rpc.thrift.TSStatus;
-import org.apache.iotdb.commons.auth.entity.PrivilegeType;
import org.apache.iotdb.commons.path.PartialPath;
-import org.apache.iotdb.db.auth.AuthorityChecker;
import org.apache.iotdb.db.queryengine.plan.analyze.QueryType;
import org.apache.iotdb.db.queryengine.plan.statement.IConfigStatement;
import org.apache.iotdb.db.queryengine.plan.statement.Statement;
import org.apache.iotdb.db.queryengine.plan.statement.StatementType;
import org.apache.iotdb.db.queryengine.plan.statement.StatementVisitor;
-import org.apache.iotdb.rpc.TSStatusCode;
import java.util.Collections;
import java.util.List;
@@ -61,14 +57,4 @@ public class DropFunctionStatement extends Statement implements IConfigStatement
public List<PartialPath> getPaths() {
return Collections.emptyList();
}
-
- @Override
- public TSStatus checkPermissionBeforeProcess(String userName) {
- if (AuthorityChecker.SUPER_USER.equals(userName)) {
- return new TSStatus(TSStatusCode.SUCCESS_STATUS.getStatusCode());
- }
- return AuthorityChecker.getTSStatus(
- AuthorityChecker.checkSystemPermission(userName, PrivilegeType.USE_UDF),
- PrivilegeType.USE_UDF);
- }
}
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/DropTriggerStatement.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/DropTriggerStatement.java
index 3b3cb648391..96a07a11635 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/DropTriggerStatement.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/DropTriggerStatement.java
@@ -19,16 +19,12 @@
package org.apache.iotdb.db.queryengine.plan.statement.metadata;
-import org.apache.iotdb.common.rpc.thrift.TSStatus;
-import org.apache.iotdb.commons.auth.entity.PrivilegeType;
import org.apache.iotdb.commons.path.PartialPath;
-import org.apache.iotdb.db.auth.AuthorityChecker;
import org.apache.iotdb.db.queryengine.plan.analyze.QueryType;
import org.apache.iotdb.db.queryengine.plan.statement.IConfigStatement;
import org.apache.iotdb.db.queryengine.plan.statement.Statement;
import org.apache.iotdb.db.queryengine.plan.statement.StatementType;
import org.apache.iotdb.db.queryengine.plan.statement.StatementVisitor;
-import org.apache.iotdb.rpc.TSStatusCode;
import java.util.Collections;
import java.util.List;
@@ -60,14 +56,4 @@ public class DropTriggerStatement extends Statement implements IConfigStatement
public List<PartialPath> getPaths() {
return Collections.emptyList();
}
-
- @Override
- public TSStatus checkPermissionBeforeProcess(String userName) {
- if (AuthorityChecker.SUPER_USER.equals(userName)) {
- return new TSStatus(TSStatusCode.SUCCESS_STATUS.getStatusCode());
- }
- return AuthorityChecker.getTSStatus(
- AuthorityChecker.checkSystemPermission(userName, PrivilegeType.USE_TRIGGER),
- PrivilegeType.USE_TRIGGER);
- }
}
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/GetRegionIdStatement.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/GetRegionIdStatement.java
index 280e658d54a..c7ba3784194 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/GetRegionIdStatement.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/GetRegionIdStatement.java
@@ -20,10 +20,8 @@
package org.apache.iotdb.db.queryengine.plan.statement.metadata;
import org.apache.iotdb.common.rpc.thrift.TConsensusGroupType;
-import org.apache.iotdb.common.rpc.thrift.TSStatus;
import org.apache.iotdb.commons.exception.IllegalPathException;
import org.apache.iotdb.commons.path.PartialPath;
-import org.apache.iotdb.db.auth.AuthorityChecker;
import org.apache.iotdb.db.queryengine.plan.analyze.QueryType;
import org.apache.iotdb.db.queryengine.plan.statement.IConfigStatement;
import org.apache.iotdb.db.queryengine.plan.statement.Statement;
@@ -121,9 +119,4 @@ public class GetRegionIdStatement extends Statement implements IConfigStatement
return new ArrayList<>();
}
}
-
- @Override
- public TSStatus checkPermissionBeforeProcess(String userName) {
- return AuthorityChecker.checkSuperUserOrMaintain(userName);
- }
}
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/GetSeriesSlotListStatement.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/GetSeriesSlotListStatement.java
index 1c402f470e0..0cd67e6418a 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/GetSeriesSlotListStatement.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/GetSeriesSlotListStatement.java
@@ -20,10 +20,8 @@
package org.apache.iotdb.db.queryengine.plan.statement.metadata;
import org.apache.iotdb.common.rpc.thrift.TConsensusGroupType;
-import org.apache.iotdb.common.rpc.thrift.TSStatus;
import org.apache.iotdb.commons.exception.IllegalPathException;
import org.apache.iotdb.commons.path.PartialPath;
-import org.apache.iotdb.db.auth.AuthorityChecker;
import org.apache.iotdb.db.queryengine.plan.analyze.QueryType;
import org.apache.iotdb.db.queryengine.plan.statement.IConfigStatement;
import org.apache.iotdb.db.queryengine.plan.statement.Statement;
@@ -77,9 +75,4 @@ public class GetSeriesSlotListStatement extends Statement implements IConfigStat
return new ArrayList<>();
}
}
-
- @Override
- public TSStatus checkPermissionBeforeProcess(String userName) {
- return AuthorityChecker.checkSuperUserOrMaintain(userName);
- }
}
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/GetTimeSlotListStatement.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/GetTimeSlotListStatement.java
index 48da0c633a5..39d279c0ee6 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/GetTimeSlotListStatement.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/GetTimeSlotListStatement.java
@@ -19,10 +19,8 @@
package org.apache.iotdb.db.queryengine.plan.statement.metadata;
-import org.apache.iotdb.common.rpc.thrift.TSStatus;
import org.apache.iotdb.commons.exception.IllegalPathException;
import org.apache.iotdb.commons.path.PartialPath;
-import org.apache.iotdb.db.auth.AuthorityChecker;
import org.apache.iotdb.db.queryengine.plan.analyze.QueryType;
import org.apache.iotdb.db.queryengine.plan.statement.IConfigStatement;
import org.apache.iotdb.db.queryengine.plan.statement.Statement;
@@ -125,9 +123,4 @@ public class GetTimeSlotListStatement extends Statement implements IConfigStatem
return new ArrayList<>();
}
}
-
- @Override
- public TSStatus checkPermissionBeforeProcess(String userName) {
- return AuthorityChecker.checkSuperUserOrMaintain(userName);
- }
}
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/RemoveAINodeStatement.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/RemoveAINodeStatement.java
index 5b4b9f9ea46..b8ee3d6f08b 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/RemoveAINodeStatement.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/RemoveAINodeStatement.java
@@ -19,9 +19,7 @@
package org.apache.iotdb.db.queryengine.plan.statement.metadata;
-import org.apache.iotdb.common.rpc.thrift.TSStatus;
import org.apache.iotdb.commons.path.PartialPath;
-import org.apache.iotdb.db.auth.AuthorityChecker;
import org.apache.iotdb.db.queryengine.plan.analyze.QueryType;
import org.apache.iotdb.db.queryengine.plan.statement.IConfigStatement;
import org.apache.iotdb.db.queryengine.plan.statement.Statement;
@@ -48,11 +46,6 @@ public class RemoveAINodeStatement extends Statement implements IConfigStatement
return nodeId;
}
- @Override
- public TSStatus checkPermissionBeforeProcess(String userName) {
- return AuthorityChecker.checkSuperUserOrMaintain(userName);
- }
-
@Override
public <R, C> R accept(StatementVisitor<R, C> visitor, C context) {
return visitor.visitRemoveAINode(this, context);
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/RemoveConfigNodeStatement.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/RemoveConfigNodeStatement.java
index 3aac14ed831..3851ecb0e1e 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/RemoveConfigNodeStatement.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/RemoveConfigNodeStatement.java
@@ -19,9 +19,7 @@
package org.apache.iotdb.db.queryengine.plan.statement.metadata;
-import org.apache.iotdb.common.rpc.thrift.TSStatus;
import org.apache.iotdb.commons.path.PartialPath;
-import org.apache.iotdb.db.auth.AuthorityChecker;
import org.apache.iotdb.db.queryengine.plan.analyze.QueryType;
import org.apache.iotdb.db.queryengine.plan.statement.IConfigStatement;
import org.apache.iotdb.db.queryengine.plan.statement.Statement;
@@ -42,11 +40,6 @@ public class RemoveConfigNodeStatement extends Statement implements IConfigState
return nodeId;
}
- @Override
- public TSStatus checkPermissionBeforeProcess(String userName) {
- return AuthorityChecker.checkSuperUserOrMaintain(userName);
- }
-
@Override
public <R, C> R accept(StatementVisitor<R, C> visitor, C context) {
return visitor.visitRemoveConfigNode(this, context);
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/RemoveDataNodeStatement.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/RemoveDataNodeStatement.java
index 3fab79a7dd6..44a6ddc6907 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/RemoveDataNodeStatement.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/RemoveDataNodeStatement.java
@@ -19,9 +19,7 @@
package org.apache.iotdb.db.queryengine.plan.statement.metadata;
-import org.apache.iotdb.common.rpc.thrift.TSStatus;
import org.apache.iotdb.commons.path.PartialPath;
-import org.apache.iotdb.db.auth.AuthorityChecker;
import org.apache.iotdb.db.queryengine.plan.analyze.QueryType;
import org.apache.iotdb.db.queryengine.plan.statement.IConfigStatement;
import org.apache.iotdb.db.queryengine.plan.statement.Statement;
@@ -45,11 +43,6 @@ public class RemoveDataNodeStatement extends Statement implements IConfigStateme
return nodeIds;
}
- @Override
- public TSStatus checkPermissionBeforeProcess(String userName) {
- return AuthorityChecker.checkSuperUserOrMaintain(userName);
- }
-
@Override
public <R, C> R accept(StatementVisitor<R, C> visitor, C context) {
return visitor.visitRemoveDataNode(this, context);
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/SetTTLStatement.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/SetTTLStatement.java
index 3c78f52e9f9..c71a7ecb35e 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/SetTTLStatement.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/SetTTLStatement.java
@@ -19,16 +19,12 @@
package org.apache.iotdb.db.queryengine.plan.statement.metadata;
-import org.apache.iotdb.common.rpc.thrift.TSStatus;
-import org.apache.iotdb.commons.auth.entity.PrivilegeType;
import org.apache.iotdb.commons.path.PartialPath;
-import org.apache.iotdb.db.auth.AuthorityChecker;
import org.apache.iotdb.db.queryengine.plan.analyze.QueryType;
import org.apache.iotdb.db.queryengine.plan.statement.IConfigStatement;
import org.apache.iotdb.db.queryengine.plan.statement.Statement;
import org.apache.iotdb.db.queryengine.plan.statement.StatementType;
import org.apache.iotdb.db.queryengine.plan.statement.StatementVisitor;
-import org.apache.iotdb.rpc.TSStatusCode;
import java.util.Collections;
import java.util.List;
@@ -74,17 +70,4 @@ public class SetTTLStatement extends Statement implements IConfigStatement {
? Collections.singletonList(path)
: Collections.singletonList(new PartialPath(new String[] {"root", "**"}));
}
-
- @Override
- public TSStatus checkPermissionBeforeProcess(String userName) {
- if (AuthorityChecker.SUPER_USER.equals(userName)) {
- return new TSStatus(TSStatusCode.SUCCESS_STATUS.getStatusCode());
- }
- List<PartialPath> checkedPaths = getPaths();
- return AuthorityChecker.getTSStatus(
- AuthorityChecker.checkFullPathOrPatternListPermission(
- userName, checkedPaths, PrivilegeType.WRITE_SCHEMA),
- checkedPaths,
- PrivilegeType.WRITE_SCHEMA);
- }
}
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/ShowClusterIdStatement.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/ShowClusterIdStatement.java
index bf3d84a7aca..3b0dbf12083 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/ShowClusterIdStatement.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/ShowClusterIdStatement.java
@@ -19,8 +19,6 @@
package org.apache.iotdb.db.queryengine.plan.statement.metadata;
-import org.apache.iotdb.common.rpc.thrift.TSStatus;
-import org.apache.iotdb.db.auth.AuthorityChecker;
import org.apache.iotdb.db.queryengine.plan.analyze.QueryType;
import org.apache.iotdb.db.queryengine.plan.statement.IConfigStatement;
import org.apache.iotdb.db.queryengine.plan.statement.StatementVisitor;
@@ -35,9 +33,4 @@ public class ShowClusterIdStatement extends ShowStatement implements IConfigStat
public <R, C> R accept(StatementVisitor<R, C> visitor, C context) {
return visitor.visitShowClusterId(this, context);
}
-
- @Override
- public TSStatus checkPermissionBeforeProcess(String userName) {
- return AuthorityChecker.checkSuperUserOrMaintain(userName);
- }
}
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/ShowClusterStatement.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/ShowClusterStatement.java
index a835d0779e3..f66489793ad 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/ShowClusterStatement.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/ShowClusterStatement.java
@@ -19,8 +19,6 @@
package org.apache.iotdb.db.queryengine.plan.statement.metadata;
-import org.apache.iotdb.common.rpc.thrift.TSStatus;
-import org.apache.iotdb.db.auth.AuthorityChecker;
import org.apache.iotdb.db.queryengine.plan.analyze.QueryType;
import org.apache.iotdb.db.queryengine.plan.statement.IConfigStatement;
import org.apache.iotdb.db.queryengine.plan.statement.StatementVisitor;
@@ -34,11 +32,6 @@ public class ShowClusterStatement extends ShowStatement implements IConfigStatem
return QueryType.READ;
}
- @Override
- public TSStatus checkPermissionBeforeProcess(String userName) {
- return AuthorityChecker.checkSuperUserOrMaintain(userName);
- }
-
@Override
public <R, C> R accept(StatementVisitor<R, C> visitor, C context) {
return visitor.visitShowCluster(this, context);
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/ShowConfigNodesStatement.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/ShowConfigNodesStatement.java
index 81f31aeb6cb..5fb490b2b5b 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/ShowConfigNodesStatement.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/ShowConfigNodesStatement.java
@@ -19,8 +19,6 @@
package org.apache.iotdb.db.queryengine.plan.statement.metadata;
-import org.apache.iotdb.common.rpc.thrift.TSStatus;
-import org.apache.iotdb.db.auth.AuthorityChecker;
import org.apache.iotdb.db.queryengine.plan.analyze.QueryType;
import org.apache.iotdb.db.queryengine.plan.statement.IConfigStatement;
import org.apache.iotdb.db.queryengine.plan.statement.StatementVisitor;
@@ -32,11 +30,6 @@ public class ShowConfigNodesStatement extends ShowStatement implements IConfigSt
return QueryType.READ;
}
- @Override
- public TSStatus checkPermissionBeforeProcess(String userName) {
- return AuthorityChecker.checkSuperUserOrMaintain(userName);
- }
-
@Override
public <R, C> R accept(StatementVisitor<R, C> visitor, C context) {
return visitor.visitShowConfigNodes(this, context);
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/ShowContinuousQueriesStatement.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/ShowContinuousQueriesStatement.java
index e40354beb10..8a98e7f363f 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/ShowContinuousQueriesStatement.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/ShowContinuousQueriesStatement.java
@@ -19,15 +19,11 @@
package org.apache.iotdb.db.queryengine.plan.statement.metadata;
-import org.apache.iotdb.common.rpc.thrift.TSStatus;
-import org.apache.iotdb.commons.auth.entity.PrivilegeType;
import org.apache.iotdb.commons.path.PartialPath;
-import org.apache.iotdb.db.auth.AuthorityChecker;
import org.apache.iotdb.db.queryengine.plan.analyze.QueryType;
import org.apache.iotdb.db.queryengine.plan.statement.IConfigStatement;
import org.apache.iotdb.db.queryengine.plan.statement.StatementType;
import org.apache.iotdb.db.queryengine.plan.statement.StatementVisitor;
-import org.apache.iotdb.rpc.TSStatusCode;
import java.util.Collections;
import java.util.List;
@@ -53,14 +49,4 @@ public class ShowContinuousQueriesStatement extends ShowStatement implements ICo
public <R, C> R accept(StatementVisitor<R, C> visitor, C context) {
return visitor.visitShowContinuousQueries(this, context);
}
-
- @Override
- public TSStatus checkPermissionBeforeProcess(String userName) {
- if (AuthorityChecker.SUPER_USER.equals(userName)) {
- return new TSStatus(TSStatusCode.SUCCESS_STATUS.getStatusCode());
- }
- return AuthorityChecker.getTSStatus(
- AuthorityChecker.checkSystemPermission(userName, PrivilegeType.USE_CQ),
- PrivilegeType.USE_CQ);
- }
}
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/ShowDataNodesStatement.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/ShowDataNodesStatement.java
index b1fc67c7b4c..519a6bc1bf6 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/ShowDataNodesStatement.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/ShowDataNodesStatement.java
@@ -20,8 +20,6 @@
package org.apache.iotdb.db.queryengine.plan.statement.metadata;
import org.apache.iotdb.common.rpc.thrift.TConsensusGroupType;
-import org.apache.iotdb.common.rpc.thrift.TSStatus;
-import org.apache.iotdb.db.auth.AuthorityChecker;
import org.apache.iotdb.db.queryengine.plan.analyze.QueryType;
import org.apache.iotdb.db.queryengine.plan.statement.IConfigStatement;
import org.apache.iotdb.db.queryengine.plan.statement.StatementVisitor;
@@ -44,11 +42,6 @@ public class ShowDataNodesStatement extends ShowStatement implements IConfigStat
this.regionType = regionType;
}
- @Override
- public TSStatus checkPermissionBeforeProcess(String userName) {
- return AuthorityChecker.checkSuperUserOrMaintain(userName);
- }
-
@Override
public QueryType getQueryType() {
return QueryType.READ;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/ShowDevicesStatement.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/ShowDevicesStatement.java
index fe9c57fd920..75f33c7b4a1 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/ShowDevicesStatement.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/ShowDevicesStatement.java
@@ -19,16 +19,10 @@
package org.apache.iotdb.db.queryengine.plan.statement.metadata;
-import org.apache.iotdb.common.rpc.thrift.TSStatus;
-import org.apache.iotdb.commons.auth.AuthException;
-import org.apache.iotdb.commons.auth.entity.PrivilegeType;
import org.apache.iotdb.commons.path.PartialPath;
-import org.apache.iotdb.commons.path.PathPatternTreeUtils;
import org.apache.iotdb.commons.schema.filter.SchemaFilter;
-import org.apache.iotdb.db.auth.AuthorityChecker;
import org.apache.iotdb.db.queryengine.plan.statement.StatementVisitor;
import org.apache.iotdb.db.queryengine.plan.statement.component.WhereCondition;
-import org.apache.iotdb.rpc.TSStatusCode;
import java.util.Collections;
import java.util.List;
@@ -84,25 +78,6 @@ public class ShowDevicesStatement extends ShowStatement {
return timeCondition != null;
}
- @Override
- public TSStatus checkPermissionBeforeProcess(String userName) {
- if (hasTimeCondition()) {
- try {
- if (!AuthorityChecker.SUPER_USER.equals(userName)) {
- this.authorityScope =
- PathPatternTreeUtils.intersectWithFullPathPrefixTree(
- AuthorityChecker.getAuthorizedPathTree(userName, PrivilegeType.READ_SCHEMA),
- AuthorityChecker.getAuthorizedPathTree(userName, PrivilegeType.READ_DATA));
- }
- } catch (AuthException e) {
- return new TSStatus(e.getCode().getStatusCode());
- }
- return new TSStatus(TSStatusCode.SUCCESS_STATUS.getStatusCode());
- } else {
- return super.checkPermissionBeforeProcess(userName);
- }
- }
-
@Override
public <R, C> R accept(StatementVisitor<R, C> visitor, C context) {
return visitor.visitShowDevices(this, context);
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/ShowFunctionsStatement.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/ShowFunctionsStatement.java
index 289d4e259cc..3e61ced117d 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/ShowFunctionsStatement.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/ShowFunctionsStatement.java
@@ -19,14 +19,10 @@
package org.apache.iotdb.db.queryengine.plan.statement.metadata;
-import org.apache.iotdb.common.rpc.thrift.TSStatus;
-import org.apache.iotdb.commons.auth.entity.PrivilegeType;
import org.apache.iotdb.commons.path.PartialPath;
-import org.apache.iotdb.db.auth.AuthorityChecker;
import org.apache.iotdb.db.queryengine.plan.analyze.QueryType;
import org.apache.iotdb.db.queryengine.plan.statement.IConfigStatement;
import org.apache.iotdb.db.queryengine.plan.statement.StatementVisitor;
-import org.apache.iotdb.rpc.TSStatusCode;
import java.util.Collections;
import java.util.List;
@@ -47,14 +43,4 @@ public class ShowFunctionsStatement extends ShowStatement implements IConfigStat
public List<PartialPath> getPaths() {
return Collections.emptyList();
}
-
- @Override
- public TSStatus checkPermissionBeforeProcess(String userName) {
- if (AuthorityChecker.SUPER_USER.equals(userName)) {
- return new TSStatus(TSStatusCode.SUCCESS_STATUS.getStatusCode());
- }
- return AuthorityChecker.getTSStatus(
- AuthorityChecker.checkSystemPermission(userName, PrivilegeType.USE_UDF),
- PrivilegeType.USE_UDF);
- }
}
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/ShowRegionStatement.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/ShowRegionStatement.java
index f5065ef83bc..92d66053f07 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/ShowRegionStatement.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/ShowRegionStatement.java
@@ -20,9 +20,7 @@
package org.apache.iotdb.db.queryengine.plan.statement.metadata;
import org.apache.iotdb.common.rpc.thrift.TConsensusGroupType;
-import org.apache.iotdb.common.rpc.thrift.TSStatus;
import org.apache.iotdb.commons.path.PartialPath;
-import org.apache.iotdb.db.auth.AuthorityChecker;
import org.apache.iotdb.db.queryengine.plan.analyze.QueryType;
import org.apache.iotdb.db.queryengine.plan.statement.IConfigStatement;
import org.apache.iotdb.db.queryengine.plan.statement.StatementVisitor;
@@ -62,11 +60,6 @@ public class ShowRegionStatement extends ShowStatement implements IConfigStateme
return nodeIds;
}
- @Override
- public TSStatus checkPermissionBeforeProcess(final String userName) {
- return AuthorityChecker.checkSuperUserOrMaintain(userName);
- }
-
@Override
public QueryType getQueryType() {
return QueryType.READ;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/ShowTimeSeriesStatement.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/ShowTimeSeriesStatement.java
index 49e478860f5..82a389d6224 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/ShowTimeSeriesStatement.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/ShowTimeSeriesStatement.java
@@ -19,16 +19,10 @@
package org.apache.iotdb.db.queryengine.plan.statement.metadata;
-import org.apache.iotdb.common.rpc.thrift.TSStatus;
-import org.apache.iotdb.commons.auth.AuthException;
-import org.apache.iotdb.commons.auth.entity.PrivilegeType;
import org.apache.iotdb.commons.path.PartialPath;
-import org.apache.iotdb.commons.path.PathPatternTreeUtils;
import org.apache.iotdb.commons.schema.filter.SchemaFilter;
-import org.apache.iotdb.db.auth.AuthorityChecker;
import org.apache.iotdb.db.queryengine.plan.statement.StatementVisitor;
import org.apache.iotdb.db.queryengine.plan.statement.component.WhereCondition;
-import org.apache.iotdb.rpc.TSStatusCode;
import java.util.Collections;
import java.util.List;
@@ -83,25 +77,6 @@ public class ShowTimeSeriesStatement extends ShowStatement {
return timeCondition != null;
}
- @Override
- public TSStatus checkPermissionBeforeProcess(String userName) {
- if (hasTimeCondition()) {
- try {
- if (!AuthorityChecker.SUPER_USER.equals(userName)) {
- this.authorityScope =
- PathPatternTreeUtils.intersectWithFullPathPrefixTree(
- AuthorityChecker.getAuthorizedPathTree(userName, PrivilegeType.READ_SCHEMA),
- AuthorityChecker.getAuthorizedPathTree(userName, PrivilegeType.READ_DATA));
- }
- } catch (AuthException e) {
- return new TSStatus(e.getCode().getStatusCode());
- }
- return new TSStatus(TSStatusCode.SUCCESS_STATUS.getStatusCode());
- } else {
- return super.checkPermissionBeforeProcess(userName);
- }
- }
-
@Override
public List<PartialPath> getPaths() {
return Collections.singletonList(pathPattern);
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/ShowTriggersStatement.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/ShowTriggersStatement.java
index 8b86427e38f..4d1de329795 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/ShowTriggersStatement.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/ShowTriggersStatement.java
@@ -19,14 +19,10 @@
package org.apache.iotdb.db.queryengine.plan.statement.metadata;
-import org.apache.iotdb.common.rpc.thrift.TSStatus;
-import org.apache.iotdb.commons.auth.entity.PrivilegeType;
import org.apache.iotdb.commons.path.PartialPath;
-import org.apache.iotdb.db.auth.AuthorityChecker;
import org.apache.iotdb.db.queryengine.plan.analyze.QueryType;
import org.apache.iotdb.db.queryengine.plan.statement.IConfigStatement;
import org.apache.iotdb.db.queryengine.plan.statement.StatementVisitor;
-import org.apache.iotdb.rpc.TSStatusCode;
import java.util.Collections;
import java.util.List;
@@ -47,14 +43,4 @@ public class ShowTriggersStatement extends ShowStatement implements IConfigState
public List<PartialPath> getPaths() {
return Collections.emptyList();
}
-
- @Override
- public TSStatus checkPermissionBeforeProcess(String userName) {
- if (AuthorityChecker.SUPER_USER.equals(userName)) {
- return new TSStatus(TSStatusCode.SUCCESS_STATUS.getStatusCode());
- }
- return AuthorityChecker.getTSStatus(
- AuthorityChecker.checkSystemPermission(userName, PrivilegeType.USE_TRIGGER),
- PrivilegeType.USE_TRIGGER);
- }
}
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/ShowVariablesStatement.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/ShowVariablesStatement.java
index f8863fa2f12..dbf2f2397c6 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/ShowVariablesStatement.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/ShowVariablesStatement.java
@@ -19,11 +19,9 @@
package org.apache.iotdb.db.queryengine.plan.statement.metadata;
-import org.apache.iotdb.common.rpc.thrift.TSStatus;
import org.apache.iotdb.db.queryengine.plan.analyze.QueryType;
import org.apache.iotdb.db.queryengine.plan.statement.IConfigStatement;
import org.apache.iotdb.db.queryengine.plan.statement.StatementVisitor;
-import org.apache.iotdb.rpc.TSStatusCode;
public class ShowVariablesStatement extends ShowStatement implements IConfigStatement {
@@ -32,11 +30,6 @@ public class ShowVariablesStatement extends ShowStatement implements IConfigStat
return QueryType.READ;
}
- @Override
- public TSStatus checkPermissionBeforeProcess(String userName) {
- return new TSStatus(TSStatusCode.SUCCESS_STATUS.getStatusCode());
- }
-
@Override
public <R, C> R accept(StatementVisitor<R, C> visitor, C context) {
return visitor.visitShowVariables(this, context);
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/model/CreateModelStatement.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/model/CreateModelStatement.java
index c99462bc3d1..2300af074a4 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/model/CreateModelStatement.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/model/CreateModelStatement.java
@@ -19,15 +19,11 @@
package org.apache.iotdb.db.queryengine.plan.statement.metadata.model;
-import org.apache.iotdb.common.rpc.thrift.TSStatus;
-import org.apache.iotdb.commons.auth.entity.PrivilegeType;
import org.apache.iotdb.commons.path.PartialPath;
-import org.apache.iotdb.db.auth.AuthorityChecker;
import org.apache.iotdb.db.queryengine.plan.analyze.QueryType;
import org.apache.iotdb.db.queryengine.plan.statement.IConfigStatement;
import org.apache.iotdb.db.queryengine.plan.statement.Statement;
import org.apache.iotdb.db.queryengine.plan.statement.StatementVisitor;
-import org.apache.iotdb.rpc.TSStatusCode;
import java.util.Collections;
import java.util.List;
@@ -68,16 +64,6 @@ public class CreateModelStatement extends Statement implements IConfigStatement
return QueryType.WRITE;
}
- @Override
- public TSStatus checkPermissionBeforeProcess(String userName) {
- if (AuthorityChecker.SUPER_USER.equals(userName)) {
- return new TSStatus(TSStatusCode.SUCCESS_STATUS.getStatusCode());
- }
- return AuthorityChecker.getTSStatus(
- AuthorityChecker.checkSystemPermission(userName, PrivilegeType.USE_MODEL),
- PrivilegeType.USE_MODEL);
- }
-
@Override
public <R, C> R accept(StatementVisitor<R, C> visitor, C context) {
return visitor.visitCreateModel(this, context);
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/model/DropModelStatement.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/model/DropModelStatement.java
index 1273cde4fac..34ba98207e4 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/model/DropModelStatement.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/model/DropModelStatement.java
@@ -19,15 +19,11 @@
package org.apache.iotdb.db.queryengine.plan.statement.metadata.model;
-import org.apache.iotdb.common.rpc.thrift.TSStatus;
-import org.apache.iotdb.commons.auth.entity.PrivilegeType;
import org.apache.iotdb.commons.path.PartialPath;
-import org.apache.iotdb.db.auth.AuthorityChecker;
import org.apache.iotdb.db.queryengine.plan.analyze.QueryType;
import org.apache.iotdb.db.queryengine.plan.statement.IConfigStatement;
import org.apache.iotdb.db.queryengine.plan.statement.Statement;
import org.apache.iotdb.db.queryengine.plan.statement.StatementVisitor;
-import org.apache.iotdb.rpc.TSStatusCode;
import java.util.Collections;
import java.util.List;
@@ -54,16 +50,6 @@ public class DropModelStatement extends Statement implements IConfigStatement {
return QueryType.WRITE;
}
- @Override
- public TSStatus checkPermissionBeforeProcess(String userName) {
- if (AuthorityChecker.SUPER_USER.equals(userName)) {
- return new TSStatus(TSStatusCode.SUCCESS_STATUS.getStatusCode());
- }
- return AuthorityChecker.getTSStatus(
- AuthorityChecker.checkSystemPermission(userName, PrivilegeType.USE_MODEL),
- PrivilegeType.USE_MODEL);
- }
-
@Override
public <R, C> R accept(StatementVisitor<R, C> visitor, C context) {
return visitor.visitDropModel(this, context);
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/model/ShowAINodesStatement.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/model/ShowAINodesStatement.java
index d99e158f0cd..602d0e01465 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/model/ShowAINodesStatement.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/model/ShowAINodesStatement.java
@@ -19,8 +19,6 @@
package org.apache.iotdb.db.queryengine.plan.statement.metadata.model;
-import org.apache.iotdb.common.rpc.thrift.TSStatus;
-import org.apache.iotdb.db.auth.AuthorityChecker;
import org.apache.iotdb.db.queryengine.plan.analyze.QueryType;
import org.apache.iotdb.db.queryengine.plan.statement.IConfigStatement;
import org.apache.iotdb.db.queryengine.plan.statement.StatementVisitor;
@@ -39,9 +37,4 @@ public class ShowAINodesStatement extends ShowStatement implements IConfigStatem
public <R, C> R accept(StatementVisitor<R, C> visitor, C context) {
return visitor.visitShowAINodes(this, context);
}
-
- @Override
- public TSStatus checkPermissionBeforeProcess(String userName) {
- return AuthorityChecker.checkSuperUserOrMaintain(userName);
- }
}
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/model/ShowModelsStatement.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/model/ShowModelsStatement.java
index 4675ed8980c..e9b68e67b70 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/model/ShowModelsStatement.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/model/ShowModelsStatement.java
@@ -19,15 +19,11 @@
package org.apache.iotdb.db.queryengine.plan.statement.metadata.model;
-import org.apache.iotdb.common.rpc.thrift.TSStatus;
-import org.apache.iotdb.commons.auth.entity.PrivilegeType;
import org.apache.iotdb.commons.path.PartialPath;
-import org.apache.iotdb.db.auth.AuthorityChecker;
import org.apache.iotdb.db.queryengine.plan.analyze.QueryType;
import org.apache.iotdb.db.queryengine.plan.statement.IConfigStatement;
import org.apache.iotdb.db.queryengine.plan.statement.Statement;
import org.apache.iotdb.db.queryengine.plan.statement.StatementVisitor;
-import org.apache.iotdb.rpc.TSStatusCode;
import java.util.Collections;
import java.util.List;
@@ -62,16 +58,6 @@ public class ShowModelsStatement extends Statement implements IConfigStatement {
return QueryType.READ;
}
- @Override
- public TSStatus checkPermissionBeforeProcess(String userName) {
- if (AuthorityChecker.SUPER_USER.equals(userName)) {
- return new TSStatus(TSStatusCode.SUCCESS_STATUS.getStatusCode());
- }
- return AuthorityChecker.getTSStatus(
- AuthorityChecker.checkSystemPermission(userName, PrivilegeType.USE_MODEL),
- PrivilegeType.USE_MODEL);
- }
-
@Override
public <R, C> R accept(StatementVisitor<R, C> visitor, C context) {
return visitor.visitShowModels(this, context);
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/pipe/AlterPipeStatement.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/pipe/AlterPipeStatement.java
index 603303b49ae..122139f3d4e 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/pipe/AlterPipeStatement.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/pipe/AlterPipeStatement.java
@@ -19,16 +19,12 @@
package org.apache.iotdb.db.queryengine.plan.statement.metadata.pipe;
-import org.apache.iotdb.common.rpc.thrift.TSStatus;
-import org.apache.iotdb.commons.auth.entity.PrivilegeType;
import org.apache.iotdb.commons.path.PartialPath;
-import org.apache.iotdb.db.auth.AuthorityChecker;
import org.apache.iotdb.db.queryengine.plan.analyze.QueryType;
import org.apache.iotdb.db.queryengine.plan.statement.IConfigStatement;
import org.apache.iotdb.db.queryengine.plan.statement.Statement;
import org.apache.iotdb.db.queryengine.plan.statement.StatementType;
import org.apache.iotdb.db.queryengine.plan.statement.StatementVisitor;
-import org.apache.iotdb.rpc.TSStatusCode;
import java.util.Collections;
import java.util.List;
@@ -141,16 +137,6 @@ public class AlterPipeStatement extends Statement implements IConfigStatement {
return Collections.emptyList();
}
- @Override
- public TSStatus checkPermissionBeforeProcess(final String userName) {
- if (AuthorityChecker.SUPER_USER.equals(userName)) {
- return new TSStatus(TSStatusCode.SUCCESS_STATUS.getStatusCode());
- }
- return AuthorityChecker.getTSStatus(
- AuthorityChecker.checkSystemPermission(userName, PrivilegeType.USE_PIPE),
- PrivilegeType.USE_PIPE);
- }
-
@Override
public <R, C> R accept(final StatementVisitor<R, C> visitor, final C context) {
return visitor.visitAlterPipe(this, context);
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/pipe/CreatePipePluginStatement.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/pipe/CreatePipePluginStatement.java
index 2787808f3cd..e1b22ea9de7 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/pipe/CreatePipePluginStatement.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/pipe/CreatePipePluginStatement.java
@@ -19,16 +19,12 @@
package org.apache.iotdb.db.queryengine.plan.statement.metadata.pipe;
-import org.apache.iotdb.common.rpc.thrift.TSStatus;
-import org.apache.iotdb.commons.auth.entity.PrivilegeType;
import org.apache.iotdb.commons.path.PartialPath;
-import org.apache.iotdb.db.auth.AuthorityChecker;
import org.apache.iotdb.db.queryengine.plan.analyze.QueryType;
import org.apache.iotdb.db.queryengine.plan.statement.IConfigStatement;
import org.apache.iotdb.db.queryengine.plan.statement.Statement;
import org.apache.iotdb.db.queryengine.plan.statement.StatementType;
import org.apache.iotdb.db.queryengine.plan.statement.StatementVisitor;
-import org.apache.iotdb.rpc.TSStatusCode;
import java.util.Collections;
import java.util.List;
@@ -86,16 +82,6 @@ public class CreatePipePluginStatement extends Statement implements IConfigState
return Collections.emptyList();
}
- @Override
- public TSStatus checkPermissionBeforeProcess(String userName) {
- if (AuthorityChecker.SUPER_USER.equals(userName)) {
- return new TSStatus(TSStatusCode.SUCCESS_STATUS.getStatusCode());
- }
- return AuthorityChecker.getTSStatus(
- AuthorityChecker.checkSystemPermission(userName, PrivilegeType.USE_PIPE),
- PrivilegeType.USE_PIPE);
- }
-
@Override
public <R, C> R accept(StatementVisitor<R, C> visitor, C context) {
return visitor.visitCreatePipePlugin(this, context);
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/pipe/CreatePipeStatement.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/pipe/CreatePipeStatement.java
index 3430128247f..66c7a85de79 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/pipe/CreatePipeStatement.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/pipe/CreatePipeStatement.java
@@ -19,16 +19,12 @@
package org.apache.iotdb.db.queryengine.plan.statement.metadata.pipe;
-import org.apache.iotdb.common.rpc.thrift.TSStatus;
-import org.apache.iotdb.commons.auth.entity.PrivilegeType;
import org.apache.iotdb.commons.path.PartialPath;
-import org.apache.iotdb.db.auth.AuthorityChecker;
import org.apache.iotdb.db.queryengine.plan.analyze.QueryType;
import org.apache.iotdb.db.queryengine.plan.statement.IConfigStatement;
import org.apache.iotdb.db.queryengine.plan.statement.Statement;
import org.apache.iotdb.db.queryengine.plan.statement.StatementType;
import org.apache.iotdb.db.queryengine.plan.statement.StatementVisitor;
-import org.apache.iotdb.rpc.TSStatusCode;
import java.util.Collections;
import java.util.List;
@@ -96,16 +92,6 @@ public class CreatePipeStatement extends Statement implements IConfigStatement {
return Collections.emptyList();
}
- @Override
- public TSStatus checkPermissionBeforeProcess(String userName) {
- if (AuthorityChecker.SUPER_USER.equals(userName)) {
- return new TSStatus(TSStatusCode.SUCCESS_STATUS.getStatusCode());
- }
- return AuthorityChecker.getTSStatus(
- AuthorityChecker.checkSystemPermission(userName, PrivilegeType.USE_PIPE),
- PrivilegeType.USE_PIPE);
- }
-
@Override
public <R, C> R accept(StatementVisitor<R, C> visitor, C context) {
return visitor.visitCreatePipe(this, context);
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/pipe/DropPipePluginStatement.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/pipe/DropPipePluginStatement.java
index e40ae63d01d..24b44f85cf6 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/pipe/DropPipePluginStatement.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/pipe/DropPipePluginStatement.java
@@ -19,16 +19,12 @@
package org.apache.iotdb.db.queryengine.plan.statement.metadata.pipe;
-import org.apache.iotdb.common.rpc.thrift.TSStatus;
-import org.apache.iotdb.commons.auth.entity.PrivilegeType;
import org.apache.iotdb.commons.path.PartialPath;
-import org.apache.iotdb.db.auth.AuthorityChecker;
import org.apache.iotdb.db.queryengine.plan.analyze.QueryType;
import org.apache.iotdb.db.queryengine.plan.statement.IConfigStatement;
import org.apache.iotdb.db.queryengine.plan.statement.Statement;
import org.apache.iotdb.db.queryengine.plan.statement.StatementType;
import org.apache.iotdb.db.queryengine.plan.statement.StatementVisitor;
-import org.apache.iotdb.rpc.TSStatusCode;
import java.util.Collections;
import java.util.List;
@@ -82,14 +78,4 @@ public class DropPipePluginStatement extends Statement implements IConfigStateme
public <R, C> R accept(final StatementVisitor<R, C> visitor, final C context) {
return visitor.visitDropPipePlugin(this, context);
}
-
- @Override
- public TSStatus checkPermissionBeforeProcess(final String userName) {
- if (AuthorityChecker.SUPER_USER.equals(userName)) {
- return new TSStatus(TSStatusCode.SUCCESS_STATUS.getStatusCode());
- }
- return AuthorityChecker.getTSStatus(
- AuthorityChecker.checkSystemPermission(userName, PrivilegeType.USE_PIPE),
- PrivilegeType.USE_PIPE);
- }
}
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/pipe/DropPipeStatement.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/pipe/DropPipeStatement.java
index 82d2f777be6..3099a8d5dd5 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/pipe/DropPipeStatement.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/pipe/DropPipeStatement.java
@@ -19,16 +19,12 @@
package org.apache.iotdb.db.queryengine.plan.statement.metadata.pipe;
-import org.apache.iotdb.common.rpc.thrift.TSStatus;
-import org.apache.iotdb.commons.auth.entity.PrivilegeType;
import org.apache.iotdb.commons.path.PartialPath;
-import org.apache.iotdb.db.auth.AuthorityChecker;
import org.apache.iotdb.db.queryengine.plan.analyze.QueryType;
import org.apache.iotdb.db.queryengine.plan.statement.IConfigStatement;
import org.apache.iotdb.db.queryengine.plan.statement.Statement;
import org.apache.iotdb.db.queryengine.plan.statement.StatementType;
import org.apache.iotdb.db.queryengine.plan.statement.StatementVisitor;
-import org.apache.iotdb.rpc.TSStatusCode;
import java.util.Collections;
import java.util.List;
@@ -77,16 +73,6 @@ public class DropPipeStatement extends Statement implements IConfigStatement {
return Collections.emptyList();
}
- @Override
- public TSStatus checkPermissionBeforeProcess(final String userName) {
- if (AuthorityChecker.SUPER_USER.equals(userName)) {
- return new TSStatus(TSStatusCode.SUCCESS_STATUS.getStatusCode());
- }
- return AuthorityChecker.getTSStatus(
- AuthorityChecker.checkSystemPermission(userName, PrivilegeType.USE_PIPE),
- PrivilegeType.USE_PIPE);
- }
-
@Override
public <R, C> R accept(final StatementVisitor<R, C> visitor, final C context) {
return visitor.visitDropPipe(this, context);
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/pipe/ShowPipePluginsStatement.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/pipe/ShowPipePluginsStatement.java
index 56c79e37a5d..e7ac65ada5b 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/pipe/ShowPipePluginsStatement.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/pipe/ShowPipePluginsStatement.java
@@ -19,15 +19,11 @@
package org.apache.iotdb.db.queryengine.plan.statement.metadata.pipe;
-import org.apache.iotdb.common.rpc.thrift.TSStatus;
-import org.apache.iotdb.commons.auth.entity.PrivilegeType;
-import org.apache.iotdb.db.auth.AuthorityChecker;
import org.apache.iotdb.db.queryengine.plan.analyze.QueryType;
import org.apache.iotdb.db.queryengine.plan.statement.IConfigStatement;
import org.apache.iotdb.db.queryengine.plan.statement.StatementType;
import org.apache.iotdb.db.queryengine.plan.statement.StatementVisitor;
import org.apache.iotdb.db.queryengine.plan.statement.metadata.ShowStatement;
-import org.apache.iotdb.rpc.TSStatusCode;
public class ShowPipePluginsStatement extends ShowStatement implements IConfigStatement {
@@ -55,14 +51,4 @@ public class ShowPipePluginsStatement extends ShowStatement implements IConfigSt
public QueryType getQueryType() {
return QueryType.READ;
}
-
- @Override
- public TSStatus checkPermissionBeforeProcess(final String userName) {
- if (AuthorityChecker.SUPER_USER.equals(userName)) {
- return new TSStatus(TSStatusCode.SUCCESS_STATUS.getStatusCode());
- }
- return AuthorityChecker.getTSStatus(
- AuthorityChecker.checkSystemPermission(userName, PrivilegeType.USE_PIPE),
- PrivilegeType.USE_PIPE);
- }
}
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/pipe/ShowPipesStatement.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/pipe/ShowPipesStatement.java
index 51de7b7c005..26bf6764a44 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/pipe/ShowPipesStatement.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/pipe/ShowPipesStatement.java
@@ -19,15 +19,11 @@
package org.apache.iotdb.db.queryengine.plan.statement.metadata.pipe;
-import org.apache.iotdb.common.rpc.thrift.TSStatus;
-import org.apache.iotdb.commons.auth.entity.PrivilegeType;
-import org.apache.iotdb.db.auth.AuthorityChecker;
import org.apache.iotdb.db.queryengine.plan.analyze.QueryType;
import org.apache.iotdb.db.queryengine.plan.statement.IConfigStatement;
import org.apache.iotdb.db.queryengine.plan.statement.StatementType;
import org.apache.iotdb.db.queryengine.plan.statement.StatementVisitor;
import org.apache.iotdb.db.queryengine.plan.statement.metadata.ShowStatement;
-import org.apache.iotdb.rpc.TSStatusCode;
public class ShowPipesStatement extends ShowStatement implements IConfigStatement {
public ShowPipesStatement() {
@@ -70,16 +66,6 @@ public class ShowPipesStatement extends ShowStatement implements IConfigStatemen
return QueryType.READ;
}
- @Override
- public TSStatus checkPermissionBeforeProcess(final String userName) {
- if (AuthorityChecker.SUPER_USER.equals(userName)) {
- return new TSStatus(TSStatusCode.SUCCESS_STATUS.getStatusCode());
- }
- return AuthorityChecker.getTSStatus(
- AuthorityChecker.checkSystemPermission(userName, PrivilegeType.USE_PIPE),
- PrivilegeType.USE_PIPE);
- }
-
@Override
public <R, C> R accept(final StatementVisitor<R, C> visitor, final C context) {
return visitor.visitShowPipes(this, context);
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/pipe/StartPipeStatement.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/pipe/StartPipeStatement.java
index 346eaf05cd3..1122310b001 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/pipe/StartPipeStatement.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/pipe/StartPipeStatement.java
@@ -19,16 +19,12 @@
package org.apache.iotdb.db.queryengine.plan.statement.metadata.pipe;
-import org.apache.iotdb.common.rpc.thrift.TSStatus;
-import org.apache.iotdb.commons.auth.entity.PrivilegeType;
import org.apache.iotdb.commons.path.PartialPath;
-import org.apache.iotdb.db.auth.AuthorityChecker;
import org.apache.iotdb.db.queryengine.plan.analyze.QueryType;
import org.apache.iotdb.db.queryengine.plan.statement.IConfigStatement;
import org.apache.iotdb.db.queryengine.plan.statement.Statement;
import org.apache.iotdb.db.queryengine.plan.statement.StatementType;
import org.apache.iotdb.db.queryengine.plan.statement.StatementVisitor;
-import org.apache.iotdb.rpc.TSStatusCode;
import java.util.Collections;
import java.util.List;
@@ -68,16 +64,6 @@ public class StartPipeStatement extends Statement implements IConfigStatement {
return Collections.emptyList();
}
- @Override
- public TSStatus checkPermissionBeforeProcess(final String userName) {
- if (AuthorityChecker.SUPER_USER.equals(userName)) {
- return new TSStatus(TSStatusCode.SUCCESS_STATUS.getStatusCode());
- }
- return AuthorityChecker.getTSStatus(
- AuthorityChecker.checkSystemPermission(userName, PrivilegeType.USE_PIPE),
- PrivilegeType.USE_PIPE);
- }
-
@Override
public <R, C> R accept(final StatementVisitor<R, C> visitor, final C context) {
return visitor.visitStartPipe(this, context);
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/pipe/StopPipeStatement.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/pipe/StopPipeStatement.java
index 70447ae7b90..23bb60ae39c 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/pipe/StopPipeStatement.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/pipe/StopPipeStatement.java
@@ -19,16 +19,12 @@
package org.apache.iotdb.db.queryengine.plan.statement.metadata.pipe;
-import org.apache.iotdb.common.rpc.thrift.TSStatus;
-import org.apache.iotdb.commons.auth.entity.PrivilegeType;
import org.apache.iotdb.commons.path.PartialPath;
-import org.apache.iotdb.db.auth.AuthorityChecker;
import org.apache.iotdb.db.queryengine.plan.analyze.QueryType;
import org.apache.iotdb.db.queryengine.plan.statement.IConfigStatement;
import org.apache.iotdb.db.queryengine.plan.statement.Statement;
import org.apache.iotdb.db.queryengine.plan.statement.StatementType;
import org.apache.iotdb.db.queryengine.plan.statement.StatementVisitor;
-import org.apache.iotdb.rpc.TSStatusCode;
import java.util.Collections;
import java.util.List;
@@ -68,16 +64,6 @@ public class StopPipeStatement extends Statement implements IConfigStatement {
return Collections.emptyList();
}
- @Override
- public TSStatus checkPermissionBeforeProcess(final String userName) {
- if (AuthorityChecker.SUPER_USER.equals(userName)) {
- return new TSStatus(TSStatusCode.SUCCESS_STATUS.getStatusCode());
- }
- return AuthorityChecker.getTSStatus(
- AuthorityChecker.checkSystemPermission(userName, PrivilegeType.USE_PIPE),
- PrivilegeType.USE_PIPE);
- }
-
@Override
public <R, C> R accept(final StatementVisitor<R, C> visitor, final C context) {
return visitor.visitStopPipe(this, context);
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/region/ExtendRegionStatement.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/region/ExtendRegionStatement.java
index 591c62c4b6b..353cb119553 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/region/ExtendRegionStatement.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/region/ExtendRegionStatement.java
@@ -19,9 +19,7 @@
package org.apache.iotdb.db.queryengine.plan.statement.metadata.region;
-import org.apache.iotdb.common.rpc.thrift.TSStatus;
import org.apache.iotdb.commons.path.PartialPath;
-import org.apache.iotdb.db.auth.AuthorityChecker;
import org.apache.iotdb.db.queryengine.plan.analyze.QueryType;
import org.apache.iotdb.db.queryengine.plan.statement.IConfigStatement;
import org.apache.iotdb.db.queryengine.plan.statement.Statement;
@@ -49,11 +47,6 @@ public class ExtendRegionStatement extends Statement implements IConfigStatement
return dataNodeId;
}
- @Override
- public TSStatus checkPermissionBeforeProcess(String userName) {
- return AuthorityChecker.checkSuperUserOrMaintain(userName);
- }
-
@Override
public <R, C> R accept(StatementVisitor<R, C> visitor, C context) {
return visitor.visitExtendRegion(this, context);
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/region/MigrateRegionStatement.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/region/MigrateRegionStatement.java
index ef272c81d2c..616357f5379 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/region/MigrateRegionStatement.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/region/MigrateRegionStatement.java
@@ -19,9 +19,7 @@
package org.apache.iotdb.db.queryengine.plan.statement.metadata.region;
-import org.apache.iotdb.common.rpc.thrift.TSStatus;
import org.apache.iotdb.commons.path.PartialPath;
-import org.apache.iotdb.db.auth.AuthorityChecker;
import org.apache.iotdb.db.queryengine.plan.analyze.QueryType;
import org.apache.iotdb.db.queryengine.plan.statement.IConfigStatement;
import org.apache.iotdb.db.queryengine.plan.statement.Statement;
@@ -65,11 +63,6 @@ public class MigrateRegionStatement extends Statement implements IConfigStatemen
return toId;
}
- @Override
- public TSStatus checkPermissionBeforeProcess(String userName) {
- return AuthorityChecker.checkSuperUserOrMaintain(userName);
- }
-
@Override
public <R, C> R accept(StatementVisitor<R, C> visitor, C context) {
return visitor.visitMigrateRegion(this, context);
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/region/ReconstructRegionStatement.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/region/ReconstructRegionStatement.java
index 25f3d65d837..cd22e61ad7f 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/region/ReconstructRegionStatement.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/region/ReconstructRegionStatement.java
@@ -19,9 +19,7 @@
package org.apache.iotdb.db.queryengine.plan.statement.metadata.region;
-import org.apache.iotdb.common.rpc.thrift.TSStatus;
import org.apache.iotdb.commons.path.PartialPath;
-import org.apache.iotdb.db.auth.AuthorityChecker;
import org.apache.iotdb.db.queryengine.plan.analyze.QueryType;
import org.apache.iotdb.db.queryengine.plan.statement.IConfigStatement;
import org.apache.iotdb.db.queryengine.plan.statement.Statement;
@@ -47,11 +45,6 @@ public class ReconstructRegionStatement extends Statement implements IConfigStat
return regionIds;
}
- @Override
- public TSStatus checkPermissionBeforeProcess(String userName) {
- return AuthorityChecker.checkSuperUserOrMaintain(userName);
- }
-
@Override
public <R, C> R accept(StatementVisitor<R, C> visitor, C context) {
return visitor.visitReconstructRegion(this, context);
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/region/RemoveRegionStatement.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/region/RemoveRegionStatement.java
index f4d3b94c682..f64d6d84fe1 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/region/RemoveRegionStatement.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/region/RemoveRegionStatement.java
@@ -19,9 +19,7 @@
package org.apache.iotdb.db.queryengine.plan.statement.metadata.region;
-import org.apache.iotdb.common.rpc.thrift.TSStatus;
import org.apache.iotdb.commons.path.PartialPath;
-import org.apache.iotdb.db.auth.AuthorityChecker;
import org.apache.iotdb.db.queryengine.plan.analyze.QueryType;
import org.apache.iotdb.db.queryengine.plan.statement.IConfigStatement;
import org.apache.iotdb.db.queryengine.plan.statement.Statement;
@@ -49,11 +47,6 @@ public class RemoveRegionStatement extends Statement implements IConfigStatement
return dataNodeId;
}
- @Override
- public TSStatus checkPermissionBeforeProcess(String userName) {
- return AuthorityChecker.checkSuperUserOrMaintain(userName);
- }
-
@Override
public <R, C> R accept(StatementVisitor<R, C> visitor, C context) {
return visitor.visitRemoveRegion(this, context);
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/subscription/CreateTopicStatement.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/subscription/CreateTopicStatement.java
index 8f3f237918f..7d1d59c44f4 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/subscription/CreateTopicStatement.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/subscription/CreateTopicStatement.java
@@ -19,16 +19,12 @@
package org.apache.iotdb.db.queryengine.plan.statement.metadata.subscription;
-import org.apache.iotdb.common.rpc.thrift.TSStatus;
-import org.apache.iotdb.commons.auth.entity.PrivilegeType;
import org.apache.iotdb.commons.path.PartialPath;
-import org.apache.iotdb.db.auth.AuthorityChecker;
import org.apache.iotdb.db.queryengine.plan.analyze.QueryType;
import org.apache.iotdb.db.queryengine.plan.statement.IConfigStatement;
import org.apache.iotdb.db.queryengine.plan.statement.Statement;
import org.apache.iotdb.db.queryengine.plan.statement.StatementType;
import org.apache.iotdb.db.queryengine.plan.statement.StatementVisitor;
-import org.apache.iotdb.rpc.TSStatusCode;
import java.util.Collections;
import java.util.List;
@@ -79,16 +75,6 @@ public class CreateTopicStatement extends Statement implements IConfigStatement
return Collections.emptyList();
}
- @Override
- public TSStatus checkPermissionBeforeProcess(String userName) {
- if (AuthorityChecker.SUPER_USER.equals(userName)) {
- return new TSStatus(TSStatusCode.SUCCESS_STATUS.getStatusCode());
- }
- return AuthorityChecker.getTSStatus(
- AuthorityChecker.checkSystemPermission(userName, PrivilegeType.USE_PIPE),
- PrivilegeType.USE_PIPE);
- }
-
@Override
public <R, C> R accept(StatementVisitor<R, C> visitor, C context) {
return visitor.visitCreateTopic(this, context);
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/subscription/DropSubscriptionStatement.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/subscription/DropSubscriptionStatement.java
index 53ecb6164fa..fb64cfdeb8e 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/subscription/DropSubscriptionStatement.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/subscription/DropSubscriptionStatement.java
@@ -19,16 +19,12 @@
package org.apache.iotdb.db.queryengine.plan.statement.metadata.subscription;
-import org.apache.iotdb.common.rpc.thrift.TSStatus;
-import org.apache.iotdb.commons.auth.entity.PrivilegeType;
import org.apache.iotdb.commons.path.PartialPath;
-import org.apache.iotdb.db.auth.AuthorityChecker;
import org.apache.iotdb.db.queryengine.plan.analyze.QueryType;
import org.apache.iotdb.db.queryengine.plan.statement.IConfigStatement;
import org.apache.iotdb.db.queryengine.plan.statement.Statement;
import org.apache.iotdb.db.queryengine.plan.statement.StatementType;
import org.apache.iotdb.db.queryengine.plan.statement.StatementVisitor;
-import org.apache.iotdb.rpc.TSStatusCode;
import java.util.Collections;
import java.util.List;
@@ -82,14 +78,4 @@ public class DropSubscriptionStatement extends Statement implements IConfigState
public <R, C> R accept(StatementVisitor<R, C> visitor, C context) {
return visitor.visitDropSubscription(this, context);
}
-
- @Override
- public TSStatus checkPermissionBeforeProcess(String userName) {
- if (AuthorityChecker.SUPER_USER.equals(userName)) {
- return new TSStatus(TSStatusCode.SUCCESS_STATUS.getStatusCode());
- }
- return AuthorityChecker.getTSStatus(
- AuthorityChecker.checkSystemPermission(userName, PrivilegeType.USE_PIPE),
- PrivilegeType.USE_PIPE);
- }
}
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/subscription/DropTopicStatement.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/subscription/DropTopicStatement.java
index 3bc5d866bc4..5c7d7d115f6 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/subscription/DropTopicStatement.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/subscription/DropTopicStatement.java
@@ -19,16 +19,12 @@
package org.apache.iotdb.db.queryengine.plan.statement.metadata.subscription;
-import org.apache.iotdb.common.rpc.thrift.TSStatus;
-import org.apache.iotdb.commons.auth.entity.PrivilegeType;
import org.apache.iotdb.commons.path.PartialPath;
-import org.apache.iotdb.db.auth.AuthorityChecker;
import org.apache.iotdb.db.queryengine.plan.analyze.QueryType;
import org.apache.iotdb.db.queryengine.plan.statement.IConfigStatement;
import org.apache.iotdb.db.queryengine.plan.statement.Statement;
import org.apache.iotdb.db.queryengine.plan.statement.StatementType;
import org.apache.iotdb.db.queryengine.plan.statement.StatementVisitor;
-import org.apache.iotdb.rpc.TSStatusCode;
import java.util.Collections;
import java.util.List;
@@ -82,14 +78,4 @@ public class DropTopicStatement extends Statement implements IConfigStatement {
public <R, C> R accept(final StatementVisitor<R, C> visitor, final C context) {
return visitor.visitDropTopic(this, context);
}
-
- @Override
- public TSStatus checkPermissionBeforeProcess(final String userName) {
- if (AuthorityChecker.SUPER_USER.equals(userName)) {
- return new TSStatus(TSStatusCode.SUCCESS_STATUS.getStatusCode());
- }
- return AuthorityChecker.getTSStatus(
- AuthorityChecker.checkSystemPermission(userName, PrivilegeType.USE_PIPE),
- PrivilegeType.USE_PIPE);
- }
}
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/subscription/ShowSubscriptionsStatement.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/subscription/ShowSubscriptionsStatement.java
index 9bccb3270ae..aa2abbfc188 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/subscription/ShowSubscriptionsStatement.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/subscription/ShowSubscriptionsStatement.java
@@ -19,16 +19,12 @@
package org.apache.iotdb.db.queryengine.plan.statement.metadata.subscription;
-import org.apache.iotdb.common.rpc.thrift.TSStatus;
-import org.apache.iotdb.commons.auth.entity.PrivilegeType;
import org.apache.iotdb.commons.path.PartialPath;
-import org.apache.iotdb.db.auth.AuthorityChecker;
import org.apache.iotdb.db.queryengine.plan.analyze.QueryType;
import org.apache.iotdb.db.queryengine.plan.statement.IConfigStatement;
import org.apache.iotdb.db.queryengine.plan.statement.Statement;
import org.apache.iotdb.db.queryengine.plan.statement.StatementType;
import org.apache.iotdb.db.queryengine.plan.statement.StatementVisitor;
-import org.apache.iotdb.rpc.TSStatusCode;
import java.util.Collections;
import java.util.List;
@@ -73,14 +69,4 @@ public class ShowSubscriptionsStatement extends Statement implements IConfigStat
public List<PartialPath> getPaths() {
return Collections.emptyList();
}
-
- @Override
- public TSStatus checkPermissionBeforeProcess(final String userName) {
- if (AuthorityChecker.SUPER_USER.equals(userName)) {
- return new TSStatus(TSStatusCode.SUCCESS_STATUS.getStatusCode());
- }
- return AuthorityChecker.getTSStatus(
- AuthorityChecker.checkSystemPermission(userName, PrivilegeType.USE_PIPE),
- PrivilegeType.USE_PIPE);
- }
}
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/subscription/ShowTopicsStatement.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/subscription/ShowTopicsStatement.java
index eee05092407..a9c38856fd2 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/subscription/ShowTopicsStatement.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/subscription/ShowTopicsStatement.java
@@ -19,16 +19,12 @@
package org.apache.iotdb.db.queryengine.plan.statement.metadata.subscription;
-import org.apache.iotdb.common.rpc.thrift.TSStatus;
-import org.apache.iotdb.commons.auth.entity.PrivilegeType;
import org.apache.iotdb.commons.path.PartialPath;
-import org.apache.iotdb.db.auth.AuthorityChecker;
import org.apache.iotdb.db.queryengine.plan.analyze.QueryType;
import org.apache.iotdb.db.queryengine.plan.statement.IConfigStatement;
import org.apache.iotdb.db.queryengine.plan.statement.Statement;
import org.apache.iotdb.db.queryengine.plan.statement.StatementType;
import org.apache.iotdb.db.queryengine.plan.statement.StatementVisitor;
-import org.apache.iotdb.rpc.TSStatusCode;
import java.util.Collections;
import java.util.List;
@@ -73,14 +69,4 @@ public class ShowTopicsStatement extends Statement implements IConfigStatement {
public List<PartialPath> getPaths() {
return Collections.emptyList();
}
-
- @Override
- public TSStatus checkPermissionBeforeProcess(final String userName) {
- if (AuthorityChecker.SUPER_USER.equals(userName)) {
- return new TSStatus(TSStatusCode.SUCCESS_STATUS.getStatusCode());
- }
- return AuthorityChecker.getTSStatus(
- AuthorityChecker.checkSystemPermission(userName, PrivilegeType.USE_PIPE),
- PrivilegeType.USE_PIPE);
- }
}
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/template/ActivateTemplateStatement.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/template/ActivateTemplateStatement.java
index 0bf2edfb5ba..e5abc9be3b3 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/template/ActivateTemplateStatement.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/template/ActivateTemplateStatement.java
@@ -19,16 +19,12 @@
package org.apache.iotdb.db.queryengine.plan.statement.metadata.template;
-import org.apache.iotdb.common.rpc.thrift.TSStatus;
-import org.apache.iotdb.commons.auth.entity.PrivilegeType;
import org.apache.iotdb.commons.path.PartialPath;
-import org.apache.iotdb.db.auth.AuthorityChecker;
import org.apache.iotdb.db.queryengine.plan.statement.Statement;
import org.apache.iotdb.db.queryengine.plan.statement.StatementType;
import org.apache.iotdb.db.queryengine.plan.statement.StatementVisitor;
import org.apache.iotdb.db.schemaengine.template.ClusterTemplateManager;
import org.apache.iotdb.db.schemaengine.template.Template;
-import org.apache.iotdb.rpc.TSStatusCode;
import org.apache.tsfile.utils.Pair;
@@ -63,19 +59,6 @@ public class ActivateTemplateStatement extends Statement {
.collect(Collectors.toList());
}
- @Override
- public TSStatus checkPermissionBeforeProcess(String userName) {
- if (AuthorityChecker.SUPER_USER.equals(userName)) {
- return new TSStatus(TSStatusCode.SUCCESS_STATUS.getStatusCode());
- }
- List<PartialPath> checkedPaths = getPaths();
- return AuthorityChecker.getTSStatus(
- AuthorityChecker.checkFullPathOrPatternListPermission(
- userName, checkedPaths, PrivilegeType.WRITE_SCHEMA),
- checkedPaths,
- PrivilegeType.WRITE_SCHEMA);
- }
-
public PartialPath getPath() {
return path;
}
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/template/BatchActivateTemplateStatement.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/template/BatchActivateTemplateStatement.java
index 85e77c2697f..e518eee0d1e 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/template/BatchActivateTemplateStatement.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/template/BatchActivateTemplateStatement.java
@@ -19,16 +19,12 @@
package org.apache.iotdb.db.queryengine.plan.statement.metadata.template;
-import org.apache.iotdb.common.rpc.thrift.TSStatus;
-import org.apache.iotdb.commons.auth.entity.PrivilegeType;
import org.apache.iotdb.commons.path.PartialPath;
-import org.apache.iotdb.db.auth.AuthorityChecker;
import org.apache.iotdb.db.queryengine.plan.statement.Statement;
import org.apache.iotdb.db.queryengine.plan.statement.StatementType;
import org.apache.iotdb.db.queryengine.plan.statement.StatementVisitor;
import org.apache.iotdb.db.schemaengine.template.ClusterTemplateManager;
import org.apache.iotdb.db.schemaengine.template.Template;
-import org.apache.iotdb.rpc.TSStatusCode;
import org.apache.tsfile.utils.Pair;
@@ -46,19 +42,6 @@ public class BatchActivateTemplateStatement extends Statement {
statementType = StatementType.BATCH_ACTIVATE_TEMPLATE;
}
- @Override
- public TSStatus checkPermissionBeforeProcess(String userName) {
- if (AuthorityChecker.SUPER_USER.equals(userName)) {
- return new TSStatus(TSStatusCode.SUCCESS_STATUS.getStatusCode());
- }
- List<PartialPath> checkedPaths = getPaths();
- return AuthorityChecker.getTSStatus(
- AuthorityChecker.checkFullPathOrPatternListPermission(
- userName, checkedPaths, PrivilegeType.WRITE_SCHEMA),
- checkedPaths,
- PrivilegeType.WRITE_SCHEMA);
- }
-
@Override
public List<PartialPath> getPaths() {
ClusterTemplateManager clusterTemplateManager = ClusterTemplateManager.getInstance();
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/template/DeactivateTemplateStatement.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/template/DeactivateTemplateStatement.java
index bdb6375e83c..b2d7a5fef7b 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/template/DeactivateTemplateStatement.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/template/DeactivateTemplateStatement.java
@@ -19,11 +19,8 @@
package org.apache.iotdb.db.queryengine.plan.statement.metadata.template;
-import org.apache.iotdb.common.rpc.thrift.TSStatus;
-import org.apache.iotdb.commons.auth.entity.PrivilegeType;
import org.apache.iotdb.commons.exception.IoTDBException;
import org.apache.iotdb.commons.path.PartialPath;
-import org.apache.iotdb.db.auth.AuthorityChecker;
import org.apache.iotdb.db.queryengine.plan.analyze.QueryType;
import org.apache.iotdb.db.queryengine.plan.statement.IConfigStatement;
import org.apache.iotdb.db.queryengine.plan.statement.Statement;
@@ -31,7 +28,6 @@ import org.apache.iotdb.db.queryengine.plan.statement.StatementType;
import org.apache.iotdb.db.queryengine.plan.statement.StatementVisitor;
import org.apache.iotdb.db.schemaengine.template.ClusterTemplateManager;
import org.apache.iotdb.db.schemaengine.template.Template;
-import org.apache.iotdb.rpc.TSStatusCode;
import java.util.Collections;
import java.util.List;
@@ -58,6 +54,13 @@ public class DeactivateTemplateStatement extends Statement implements IConfigSta
@Override
public List<PartialPath> getPaths() {
+ if (templateName == null) {
+ // When the template name is not specified, we cannot obtain the specific path, so we use *
+ // for concatenation and it just works
+ return pathPatternList.stream()
+ .map(path -> path.concatAsMeasurementPath(ONE_LEVEL_PATH_WILDCARD))
+ .collect(Collectors.toList());
+ }
ClusterTemplateManager clusterTemplateManager = ClusterTemplateManager.getInstance();
Template template;
@@ -77,19 +80,6 @@ public class DeactivateTemplateStatement extends Statement implements IConfigSta
.collect(Collectors.toList());
}
- @Override
- public TSStatus checkPermissionBeforeProcess(String userName) {
- if (AuthorityChecker.SUPER_USER.equals(userName)) {
- return new TSStatus(TSStatusCode.SUCCESS_STATUS.getStatusCode());
- }
- List<PartialPath> checkedPaths = getPaths();
- return AuthorityChecker.getTSStatus(
- AuthorityChecker.checkFullPathOrPatternListPermission(
- userName, checkedPaths, PrivilegeType.WRITE_SCHEMA),
- checkedPaths,
- PrivilegeType.WRITE_SCHEMA);
- }
-
public String getTemplateName() {
return templateName == null ? ONE_LEVEL_PATH_WILDCARD : templateName;
}
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/template/ShowNodesInSchemaTemplateStatement.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/template/ShowNodesInSchemaTemplateStatement.java
index 9f95310ce18..04b4c92a6e8 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/template/ShowNodesInSchemaTemplateStatement.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/template/ShowNodesInSchemaTemplateStatement.java
@@ -19,8 +19,6 @@
package org.apache.iotdb.db.queryengine.plan.statement.metadata.template;
-import org.apache.iotdb.common.rpc.thrift.TSStatus;
-import org.apache.iotdb.db.auth.AuthorityChecker;
import org.apache.iotdb.db.queryengine.plan.analyze.QueryType;
import org.apache.iotdb.db.queryengine.plan.statement.IConfigStatement;
import org.apache.iotdb.db.queryengine.plan.statement.StatementType;
@@ -37,13 +35,6 @@ public class ShowNodesInSchemaTemplateStatement extends ShowStatement implements
this.templateName = templateName;
}
- @Override
- public TSStatus checkPermissionBeforeProcess(String userName) {
- return AuthorityChecker.getTSStatus(
- AuthorityChecker.SUPER_USER.equals(userName),
- "Only the admin user can perform this operation");
- }
-
@Override
public <R, C> R accept(StatementVisitor<R, C> visitor, C context) {
return visitor.visitShowNodesInSchemaTemplate(this, context);
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/template/ShowPathSetTemplateStatement.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/template/ShowPathSetTemplateStatement.java
index 6865f4846ba..be4a7ef1af5 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/template/ShowPathSetTemplateStatement.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/template/ShowPathSetTemplateStatement.java
@@ -19,8 +19,6 @@
package org.apache.iotdb.db.queryengine.plan.statement.metadata.template;
-import org.apache.iotdb.common.rpc.thrift.TSStatus;
-import org.apache.iotdb.db.auth.AuthorityChecker;
import org.apache.iotdb.db.queryengine.plan.analyze.QueryType;
import org.apache.iotdb.db.queryengine.plan.statement.IConfigStatement;
import org.apache.iotdb.db.queryengine.plan.statement.StatementType;
@@ -45,13 +43,6 @@ public class ShowPathSetTemplateStatement extends ShowStatement implements IConf
this.templateName = templateName;
}
- @Override
- public TSStatus checkPermissionBeforeProcess(String userName) {
- return AuthorityChecker.getTSStatus(
- AuthorityChecker.SUPER_USER.equals(userName),
- "Only the admin user can perform this operation");
- }
-
@Override
public <R, C> R accept(StatementVisitor<R, C> visitor, C context) {
return visitor.visitShowPathSetTemplate(this, context);
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/template/ShowSchemaTemplateStatement.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/template/ShowSchemaTemplateStatement.java
index 77749b23d47..c31689aca2b 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/template/ShowSchemaTemplateStatement.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/template/ShowSchemaTemplateStatement.java
@@ -19,8 +19,6 @@
package org.apache.iotdb.db.queryengine.plan.statement.metadata.template;
-import org.apache.iotdb.common.rpc.thrift.TSStatus;
-import org.apache.iotdb.db.auth.AuthorityChecker;
import org.apache.iotdb.db.queryengine.plan.analyze.QueryType;
import org.apache.iotdb.db.queryengine.plan.statement.IConfigStatement;
import org.apache.iotdb.db.queryengine.plan.statement.StatementType;
@@ -34,13 +32,6 @@ public class ShowSchemaTemplateStatement extends ShowStatement implements IConfi
statementType = StatementType.SHOW_SCHEMA_TEMPLATE;
}
- @Override
- public TSStatus checkPermissionBeforeProcess(String userName) {
- return AuthorityChecker.getTSStatus(
- AuthorityChecker.SUPER_USER.equals(userName),
- "Only the admin user can perform this operation");
- }
-
@Override
public <R, C> R accept(StatementVisitor<R, C> visitor, C context) {
return visitor.visitShowSchemaTemplate(this, context);
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/view/AlterLogicalViewStatement.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/view/AlterLogicalViewStatement.java
index 7d5fbd11b68..73992479c3b 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/view/AlterLogicalViewStatement.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/view/AlterLogicalViewStatement.java
@@ -19,10 +19,7 @@
package org.apache.iotdb.db.queryengine.plan.statement.metadata.view;
-import org.apache.iotdb.common.rpc.thrift.TSStatus;
-import org.apache.iotdb.commons.auth.entity.PrivilegeType;
import org.apache.iotdb.commons.path.PartialPath;
-import org.apache.iotdb.db.auth.AuthorityChecker;
import org.apache.iotdb.db.queryengine.plan.analyze.QueryType;
import org.apache.iotdb.db.queryengine.plan.expression.Expression;
import org.apache.iotdb.db.queryengine.plan.statement.IConfigStatement;
@@ -32,7 +29,6 @@ import org.apache.iotdb.db.queryengine.plan.statement.StatementVisitor;
import org.apache.iotdb.db.queryengine.plan.statement.crud.QueryStatement;
import org.apache.iotdb.db.schemaengine.schemaregion.view.ViewPathType;
import org.apache.iotdb.db.schemaengine.schemaregion.view.ViewPaths;
-import org.apache.iotdb.rpc.TSStatusCode;
import java.util.List;
@@ -60,41 +56,6 @@ public class AlterLogicalViewStatement extends Statement implements IConfigState
return this.getTargetPathList();
}
- @Override
- public TSStatus checkPermissionBeforeProcess(String userName) {
- if (AuthorityChecker.SUPER_USER.equals(userName)) {
- return new TSStatus(TSStatusCode.SUCCESS_STATUS.getStatusCode());
- }
- TSStatus status = new TSStatus(TSStatusCode.SUCCESS_STATUS.getStatusCode());
- List<PartialPath> sourcePathList = sourcePaths.fullPathList;
- if (sourcePathList != null) {
- status =
- AuthorityChecker.getTSStatus(
- AuthorityChecker.checkFullPathOrPatternListPermission(
- userName, sourcePathList, PrivilegeType.READ_SCHEMA),
- sourcePathList,
- PrivilegeType.READ_SCHEMA);
- }
- if (queryStatement != null && status.getCode() == TSStatusCode.SUCCESS_STATUS.getStatusCode()) {
- sourcePathList = queryStatement.getPaths();
- status =
- AuthorityChecker.getTSStatus(
- AuthorityChecker.checkFullPathOrPatternListPermission(
- userName, sourcePathList, PrivilegeType.READ_SCHEMA),
- sourcePathList,
- PrivilegeType.READ_SCHEMA);
- }
-
- if (status.getCode() == TSStatusCode.SUCCESS_STATUS.getStatusCode()) {
- return AuthorityChecker.getTSStatus(
- AuthorityChecker.checkFullPathOrPatternListPermission(
- userName, getTargetPathList(), PrivilegeType.WRITE_SCHEMA),
- getTargetPathList(),
- PrivilegeType.WRITE_SCHEMA);
- }
- return status;
- }
-
public ViewPaths getTargetPaths() {
return targetPaths;
}
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/view/CreateLogicalViewStatement.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/view/CreateLogicalViewStatement.java
index 70d5ade4c24..a69f763e1eb 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/view/CreateLogicalViewStatement.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/view/CreateLogicalViewStatement.java
@@ -19,12 +19,8 @@
package org.apache.iotdb.db.queryengine.plan.statement.metadata.view;
-import org.apache.iotdb.common.rpc.thrift.TSStatus;
-import org.apache.iotdb.commons.auth.entity.PrivilegeType;
-import org.apache.iotdb.commons.conf.IoTDBConstant;
import org.apache.iotdb.commons.path.PartialPath;
import org.apache.iotdb.commons.schema.view.viewExpression.ViewExpression;
-import org.apache.iotdb.db.auth.AuthorityChecker;
import org.apache.iotdb.db.exception.metadata.view.UnsupportedViewException;
import org.apache.iotdb.db.exception.sql.SemanticException;
import org.apache.iotdb.db.queryengine.plan.analyze.SelectIntoUtils;
@@ -38,14 +34,12 @@ import org.apache.iotdb.db.queryengine.plan.statement.component.IntoItem;
import org.apache.iotdb.db.queryengine.plan.statement.crud.QueryStatement;
import org.apache.iotdb.db.schemaengine.schemaregion.view.ViewPathType;
import org.apache.iotdb.db.schemaengine.schemaregion.view.ViewPaths;
-import org.apache.iotdb.rpc.TSStatusCode;
import org.apache.tsfile.utils.Pair;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
-import java.util.Objects;
/** CREATE LOGICAL VIEW statement. */
public class CreateLogicalViewStatement extends Statement {
@@ -76,48 +70,6 @@ public class CreateLogicalViewStatement extends Statement {
return this.getTargetPathList();
}
- @Override
- public TSStatus checkPermissionBeforeProcess(String userName) {
- if (AuthorityChecker.SUPER_USER.equals(userName)) {
- return new TSStatus(TSStatusCode.SUCCESS_STATUS.getStatusCode());
- }
- TSStatus status = new TSStatus(TSStatusCode.SUCCESS_STATUS.getStatusCode());
- List<PartialPath> sourcePathList = sourcePaths.fullPathList;
- if (sourcePathList != null) {
- status =
- AuthorityChecker.getTSStatus(
- AuthorityChecker.checkFullPathOrPatternListPermission(
- userName, sourcePathList, PrivilegeType.READ_SCHEMA),
- sourcePathList,
- PrivilegeType.READ_SCHEMA);
- }
- if (queryStatement != null && status.getCode() == TSStatusCode.SUCCESS_STATUS.getStatusCode()) {
- sourcePathList = queryStatement.getPaths();
- status =
- AuthorityChecker.getTSStatus(
- AuthorityChecker.checkFullPathOrPatternListPermission(
- userName, sourcePathList, PrivilegeType.READ_SCHEMA),
- sourcePathList,
- PrivilegeType.READ_SCHEMA);
- }
-
- final List<PartialPath> paths =
- Objects.nonNull(getTargetPathList())
- ? getTargetPathList()
- : Collections.singletonList(
- batchGenerationItem
- .getIntoDevice()
- .concatNode(IoTDBConstant.ONE_LEVEL_PATH_WILDCARD));
- if (status.getCode() == TSStatusCode.SUCCESS_STATUS.getStatusCode()) {
- return AuthorityChecker.getTSStatus(
- AuthorityChecker.checkFullPathOrPatternListPermission(
- userName, paths, PrivilegeType.WRITE_SCHEMA),
- paths,
- PrivilegeType.WRITE_SCHEMA);
- }
- return status;
- }
-
public ViewPaths getTargetPaths() {
return targetPaths;
}
@@ -239,6 +191,10 @@ public class CreateLogicalViewStatement extends Statement {
}
}
+ public IntoItem getBatchGenerationItem() {
+ return batchGenerationItem;
+ }
+
// endregion
// region Interfaces for checking
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/view/DeleteLogicalViewStatement.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/view/DeleteLogicalViewStatement.java
index 38e67b6e868..f09ab0829f2 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/view/DeleteLogicalViewStatement.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/view/DeleteLogicalViewStatement.java
@@ -19,16 +19,12 @@
package org.apache.iotdb.db.queryengine.plan.statement.metadata.view;
-import org.apache.iotdb.common.rpc.thrift.TSStatus;
-import org.apache.iotdb.commons.auth.entity.PrivilegeType;
import org.apache.iotdb.commons.path.PartialPath;
-import org.apache.iotdb.db.auth.AuthorityChecker;
import org.apache.iotdb.db.queryengine.plan.analyze.QueryType;
import org.apache.iotdb.db.queryengine.plan.statement.IConfigStatement;
import org.apache.iotdb.db.queryengine.plan.statement.Statement;
import org.apache.iotdb.db.queryengine.plan.statement.StatementType;
import org.apache.iotdb.db.queryengine.plan.statement.StatementVisitor;
-import org.apache.iotdb.rpc.TSStatusCode;
import java.util.List;
@@ -50,19 +46,6 @@ public class DeleteLogicalViewStatement extends Statement implements IConfigStat
return pathPatternList;
}
- @Override
- public TSStatus checkPermissionBeforeProcess(String userName) {
- if (AuthorityChecker.SUPER_USER.equals(userName)) {
- return new TSStatus(TSStatusCode.SUCCESS_STATUS.getStatusCode());
- }
- List<PartialPath> checkedPaths = getPaths();
- return AuthorityChecker.getTSStatus(
- AuthorityChecker.checkFullPathOrPatternListPermission(
- userName, checkedPaths, PrivilegeType.WRITE_SCHEMA),
- checkedPaths,
- PrivilegeType.WRITE_SCHEMA);
- }
-
public List<PartialPath> getPathPatternList() {
return pathPatternList;
}
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/view/RenameLogicalViewStatement.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/view/RenameLogicalViewStatement.java
index 4c3d13d559f..af1246d5339 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/view/RenameLogicalViewStatement.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/view/RenameLogicalViewStatement.java
@@ -19,18 +19,12 @@
package org.apache.iotdb.db.queryengine.plan.statement.metadata.view;
-import org.apache.iotdb.common.rpc.thrift.TSStatus;
-import org.apache.iotdb.commons.auth.entity.PrivilegeType;
import org.apache.iotdb.commons.path.PartialPath;
-import org.apache.iotdb.db.auth.AuthorityChecker;
import org.apache.iotdb.db.queryengine.plan.analyze.QueryType;
import org.apache.iotdb.db.queryengine.plan.statement.IConfigStatement;
import org.apache.iotdb.db.queryengine.plan.statement.Statement;
import org.apache.iotdb.db.queryengine.plan.statement.StatementType;
import org.apache.iotdb.db.queryengine.plan.statement.StatementVisitor;
-import org.apache.iotdb.rpc.TSStatusCode;
-
-import com.google.common.collect.ImmutableList;
import java.util.Arrays;
import java.util.List;
@@ -67,19 +61,6 @@ public class RenameLogicalViewStatement extends Statement implements IConfigStat
return Arrays.asList(oldName, newName);
}
- @Override
- public TSStatus checkPermissionBeforeProcess(String userName) {
- if (AuthorityChecker.SUPER_USER.equals(userName)) {
- return new TSStatus(TSStatusCode.SUCCESS_STATUS.getStatusCode());
- }
- List<PartialPath> checkedPaths = ImmutableList.of(oldName, newName);
- return AuthorityChecker.getTSStatus(
- AuthorityChecker.checkFullPathOrPatternListPermission(
- userName, checkedPaths, PrivilegeType.WRITE_SCHEMA),
- checkedPaths,
- PrivilegeType.WRITE_SCHEMA);
- }
-
@Override
public <R, C> R accept(StatementVisitor<R, C> visitor, C context) {
return visitor.visitRenameLogicalView(this, context);
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 e34f289b742..7ffdba24b4d 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
@@ -20,11 +20,9 @@
package org.apache.iotdb.db.queryengine.plan.statement.sys;
import org.apache.iotdb.common.rpc.thrift.TSStatus;
-import org.apache.iotdb.commons.auth.entity.PrivilegeType;
import org.apache.iotdb.commons.path.PartialPath;
import org.apache.iotdb.commons.utils.AuthUtils;
import org.apache.iotdb.commons.utils.CommonDateTimeUtils;
-import org.apache.iotdb.db.auth.AuthorityChecker;
import org.apache.iotdb.db.queryengine.plan.analyze.QueryType;
import org.apache.iotdb.db.queryengine.plan.statement.AuthorType;
import org.apache.iotdb.db.queryengine.plan.statement.IConfigStatement;
@@ -34,7 +32,6 @@ import org.apache.iotdb.db.queryengine.plan.statement.StatementVisitor;
import org.apache.iotdb.db.utils.DataNodeAuthUtils;
import org.apache.iotdb.rpc.RpcUtils;
import org.apache.iotdb.rpc.StatementExecutionException;
-import org.apache.iotdb.rpc.TSStatusCode;
import java.util.Collections;
import java.util.List;
@@ -219,138 +216,6 @@ public class AuthorStatement extends Statement implements IConfigStatement {
return nodeNameList != null ? nodeNameList : Collections.emptyList();
}
- @Override
- public TSStatus checkPermissionBeforeProcess(String userName) {
- switch (authorType) {
- case CREATE_USER:
- if (AuthorityChecker.SUPER_USER.equals(this.userName)) {
- return AuthorityChecker.getTSStatus(
- false, "Cannot create user has same name with admin user");
- }
- if (AuthorityChecker.SUPER_USER.equals(userName)) {
- return new TSStatus(TSStatusCode.SUCCESS_STATUS.getStatusCode());
- }
- return AuthorityChecker.getTSStatus(
- AuthorityChecker.checkSystemPermission(userName, PrivilegeType.MANAGE_USER),
- PrivilegeType.MANAGE_USER);
-
- case UPDATE_USER:
- // users can change passwords of themselves
- if (AuthorityChecker.SUPER_USER.equals(userName) || this.userName.equals(userName)) {
- return new TSStatus(TSStatusCode.SUCCESS_STATUS.getStatusCode());
- }
- return AuthorityChecker.getTSStatus(
- AuthorityChecker.checkSystemPermission(userName, PrivilegeType.MANAGE_USER),
- PrivilegeType.MANAGE_USER);
-
- case DROP_USER:
- if (AuthorityChecker.SUPER_USER.equals(this.userName) || this.userName.equals(userName)) {
- return AuthorityChecker.getTSStatus(false, "Cannot drop admin user or yourself");
- }
- if (AuthorityChecker.SUPER_USER.equals(userName)) {
- return new TSStatus(TSStatusCode.SUCCESS_STATUS.getStatusCode());
- }
- return AuthorityChecker.getTSStatus(
- AuthorityChecker.checkSystemPermission(userName, PrivilegeType.MANAGE_USER),
- PrivilegeType.MANAGE_USER);
-
- case LIST_USER:
- if (AuthorityChecker.SUPER_USER.equals(userName)) {
- return new TSStatus(TSStatusCode.SUCCESS_STATUS.getStatusCode());
- }
- return AuthorityChecker.getTSStatus(
- AuthorityChecker.checkSystemPermission(userName, PrivilegeType.MANAGE_USER),
- PrivilegeType.MANAGE_USER);
-
- case LIST_USER_PRIVILEGE:
- if (AuthorityChecker.SUPER_USER.equals(userName) || userName.equals(this.userName)) {
- return new TSStatus(TSStatusCode.SUCCESS_STATUS.getStatusCode());
- }
- return AuthorityChecker.getTSStatus(
- AuthorityChecker.checkSystemPermission(userName, PrivilegeType.MANAGE_USER),
- PrivilegeType.MANAGE_USER);
-
- case LIST_ROLE_PRIVILEGE:
- if (AuthorityChecker.SUPER_USER.equals(userName)) {
- return new TSStatus(TSStatusCode.SUCCESS_STATUS.getStatusCode());
- }
- if (!AuthorityChecker.checkRole(userName, roleName)) {
- return AuthorityChecker.getTSStatus(
- AuthorityChecker.checkSystemPermission(userName, PrivilegeType.MANAGE_ROLE),
- PrivilegeType.MANAGE_ROLE);
- } else {
- return new TSStatus(TSStatusCode.SUCCESS_STATUS.getStatusCode());
- }
-
- case LIST_ROLE:
- if (AuthorityChecker.SUPER_USER.equals(userName)) {
- return new TSStatus(TSStatusCode.SUCCESS_STATUS.getStatusCode());
- }
- if (this.userName != null && userName.equals(this.userName)) {
- return new TSStatus(TSStatusCode.SUCCESS_STATUS.getStatusCode());
- } else {
- return AuthorityChecker.getTSStatus(
- AuthorityChecker.checkSystemPermission(userName, PrivilegeType.MANAGE_ROLE),
- PrivilegeType.MANAGE_ROLE);
- }
-
- case CREATE_ROLE:
- if (AuthorityChecker.SUPER_USER.equals(this.roleName)) {
- return AuthorityChecker.getTSStatus(
- false, "Cannot create role has same name with admin user");
- }
- case DROP_ROLE:
- case GRANT_USER_ROLE:
- case REVOKE_USER_ROLE:
- if (AuthorityChecker.SUPER_USER.equals(userName)) {
- return new TSStatus(TSStatusCode.SUCCESS_STATUS.getStatusCode());
- }
- return AuthorityChecker.getTSStatus(
- AuthorityChecker.checkSystemPermission(userName, PrivilegeType.MANAGE_ROLE),
- PrivilegeType.MANAGE_ROLE);
-
- case REVOKE_USER:
- case GRANT_USER:
- case GRANT_ROLE:
- case REVOKE_ROLE:
- if (AuthorityChecker.SUPER_USER.equals(this.userName)) {
- return AuthorityChecker.getTSStatus(
- false, "Cannot grant/revoke privileges of admin user");
- }
- if (AuthorityChecker.SUPER_USER.equals(userName)) {
- return new TSStatus(TSStatusCode.SUCCESS_STATUS.getStatusCode());
- }
-
- for (String s : privilegeList) {
- PrivilegeType privilegeType = PrivilegeType.valueOf(s.toUpperCase());
- if (privilegeType.isSystemPrivilege()) {
- if (!AuthorityChecker.checkSystemPermissionGrantOption(userName, privilegeType)) {
- return AuthorityChecker.getTSStatus(
- false,
- "Has no permission to execute "
- + authorType
- + ", please ensure you have these privileges and the grant option is TRUE when granted)");
- }
- } else if (privilegeType.isPathPrivilege()) {
- if (!AuthorityChecker.checkPathPermissionGrantOption(
- userName, privilegeType, nodeNameList)) {
- return AuthorityChecker.getTSStatus(
- false,
- "Has no permission to execute "
- + authorType
- + ", please ensure you have these privileges and the grant option is TRUE when granted)");
- }
- } else {
- return AuthorityChecker.getTSStatus(
- false, "Not support Relation statement in tree sql_dialect");
- }
- }
- return new TSStatus(TSStatusCode.SUCCESS_STATUS.getStatusCode());
- default:
- throw new IllegalArgumentException("Unknown authorType: " + authorType);
- }
- }
-
/**
* Post-process when the statement is successfully executed.
*
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/sys/ExplainAnalyzeStatement.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/sys/ExplainAnalyzeStatement.java
index 34eec9f2a0e..352ec1c4041 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/sys/ExplainAnalyzeStatement.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/sys/ExplainAnalyzeStatement.java
@@ -19,7 +19,6 @@
package org.apache.iotdb.db.queryengine.plan.statement.sys;
-import org.apache.iotdb.common.rpc.thrift.TSStatus;
import org.apache.iotdb.commons.path.PartialPath;
import org.apache.iotdb.db.queryengine.plan.statement.Statement;
import org.apache.iotdb.db.queryengine.plan.statement.StatementType;
@@ -39,11 +38,6 @@ public class ExplainAnalyzeStatement extends Statement {
this.queryStatement = queryStatement;
}
- @Override
- public TSStatus checkPermissionBeforeProcess(String userName) {
- return queryStatement.checkPermissionBeforeProcess(userName);
- }
-
public QueryStatement getQueryStatement() {
return queryStatement;
}
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/sys/KillQueryStatement.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/sys/KillQueryStatement.java
index fe2781331ec..4e1a8618561 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/sys/KillQueryStatement.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/sys/KillQueryStatement.java
@@ -19,9 +19,7 @@
package org.apache.iotdb.db.queryengine.plan.statement.sys;
-import org.apache.iotdb.common.rpc.thrift.TSStatus;
import org.apache.iotdb.commons.path.PartialPath;
-import org.apache.iotdb.db.auth.AuthorityChecker;
import org.apache.iotdb.db.queryengine.plan.analyze.QueryType;
import org.apache.iotdb.db.queryengine.plan.statement.IConfigStatement;
import org.apache.iotdb.db.queryengine.plan.statement.Statement;
@@ -54,11 +52,6 @@ public class KillQueryStatement extends Statement implements IConfigStatement {
return Collections.emptyList();
}
- @Override
- public TSStatus checkPermissionBeforeProcess(String userName) {
- return AuthorityChecker.checkSuperUserOrMaintain(userName);
- }
-
@Override
public <R, C> R accept(StatementVisitor<R, C> visitor, C context) {
return visitor.visitKillQuery(this, context);
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/sys/SetSqlDialectStatement.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/sys/SetSqlDialectStatement.java
index edb63ef4893..75cbbee32e6 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/sys/SetSqlDialectStatement.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/sys/SetSqlDialectStatement.java
@@ -19,7 +19,6 @@
package org.apache.iotdb.db.queryengine.plan.statement.sys;
-import org.apache.iotdb.common.rpc.thrift.TSStatus;
import org.apache.iotdb.commons.path.PartialPath;
import org.apache.iotdb.db.protocol.session.IClientSession;
import org.apache.iotdb.db.queryengine.plan.analyze.QueryType;
@@ -31,8 +30,6 @@ import java.util.Collections;
import java.util.List;
import java.util.Objects;
-import static org.apache.iotdb.db.auth.AuthorityChecker.SUCCEED;
-
public class SetSqlDialectStatement extends Statement implements IConfigStatement {
private final IClientSession.SqlDialect sqlDialect;
@@ -68,9 +65,4 @@ public class SetSqlDialectStatement extends Statement implements IConfigStatemen
public <R, C> R accept(StatementVisitor<R, C> visitor, C context) {
return visitor.visitSetSqlDialect(this, context);
}
-
- @Override
- public TSStatus checkPermissionBeforeProcess(final String userName) {
- return SUCCEED;
- }
}
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/sys/ShowCurrentSqlDialectStatement.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/sys/ShowCurrentSqlDialectStatement.java
index 73a40db282f..da8da0774ff 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/sys/ShowCurrentSqlDialectStatement.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/sys/ShowCurrentSqlDialectStatement.java
@@ -19,25 +19,17 @@
package org.apache.iotdb.db.queryengine.plan.statement.sys;
-import org.apache.iotdb.common.rpc.thrift.TSStatus;
import org.apache.iotdb.db.queryengine.plan.analyze.QueryType;
import org.apache.iotdb.db.queryengine.plan.statement.IConfigStatement;
import org.apache.iotdb.db.queryengine.plan.statement.StatementVisitor;
import org.apache.iotdb.db.queryengine.plan.statement.metadata.ShowStatement;
-import static org.apache.iotdb.db.auth.AuthorityChecker.SUCCEED;
-
public class ShowCurrentSqlDialectStatement extends ShowStatement implements IConfigStatement {
@Override
public <R, C> R accept(StatementVisitor<R, C> visitor, C context) {
return visitor.visitShowCurrentSqlDialect(this, context);
}
- @Override
- public TSStatus checkPermissionBeforeProcess(String userName) {
- return SUCCEED;
- }
-
@Override
public QueryType getQueryType() {
return QueryType.READ;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/sys/ShowCurrentUserStatement.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/sys/ShowCurrentUserStatement.java
index 81650ef21ae..eefe4520372 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/sys/ShowCurrentUserStatement.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/sys/ShowCurrentUserStatement.java
@@ -19,25 +19,17 @@
package org.apache.iotdb.db.queryengine.plan.statement.sys;
-import org.apache.iotdb.common.rpc.thrift.TSStatus;
import org.apache.iotdb.db.queryengine.plan.analyze.QueryType;
import org.apache.iotdb.db.queryengine.plan.statement.IConfigStatement;
import org.apache.iotdb.db.queryengine.plan.statement.StatementVisitor;
import org.apache.iotdb.db.queryengine.plan.statement.metadata.ShowStatement;
-import static org.apache.iotdb.db.auth.AuthorityChecker.SUCCEED;
-
public class ShowCurrentUserStatement extends ShowStatement implements IConfigStatement {
@Override
public <R, C> R accept(StatementVisitor<R, C> visitor, C context) {
return visitor.visitShowCurrentUser(this, context);
}
- @Override
- public TSStatus checkPermissionBeforeProcess(String userName) {
- return SUCCEED;
- }
-
@Override
public QueryType getQueryType() {
return QueryType.READ;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/sys/ShowQueriesStatement.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/sys/ShowQueriesStatement.java
index e23f2d647b1..1baca6e07b9 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/sys/ShowQueriesStatement.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/sys/ShowQueriesStatement.java
@@ -19,8 +19,6 @@
package org.apache.iotdb.db.queryengine.plan.statement.sys;
-import org.apache.iotdb.common.rpc.thrift.TSStatus;
-import org.apache.iotdb.db.auth.AuthorityChecker;
import org.apache.iotdb.db.queryengine.plan.statement.StatementType;
import org.apache.iotdb.db.queryengine.plan.statement.StatementVisitor;
import org.apache.iotdb.db.queryengine.plan.statement.component.OrderByComponent;
@@ -56,11 +54,6 @@ public class ShowQueriesStatement extends ShowStatement {
return visitor.visitShowQueries(this, context);
}
- @Override
- public TSStatus checkPermissionBeforeProcess(String userName) {
- return AuthorityChecker.checkSuperUserOrMaintain(userName);
- }
-
public void setWhereCondition(WhereCondition whereCondition) {
this.whereCondition = whereCondition;
}
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/sys/ShowVersionStatement.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/sys/ShowVersionStatement.java
index 69825844311..cb8083422b1 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/sys/ShowVersionStatement.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/sys/ShowVersionStatement.java
@@ -19,12 +19,9 @@
package org.apache.iotdb.db.queryengine.plan.statement.sys;
-import org.apache.iotdb.common.rpc.thrift.TSStatus;
import org.apache.iotdb.db.queryengine.plan.statement.StatementVisitor;
import org.apache.iotdb.db.queryengine.plan.statement.metadata.ShowStatement;
-import static org.apache.iotdb.db.auth.AuthorityChecker.SUCCEED;
-
public class ShowVersionStatement extends ShowStatement {
public ShowVersionStatement() {
@@ -35,9 +32,4 @@ public class ShowVersionStatement extends ShowStatement {
public <R, C> R accept(StatementVisitor<R, C> visitor, C context) {
return visitor.visitShowVersion(this, context);
}
-
- @Override
- public TSStatus checkPermissionBeforeProcess(String userName) {
- return SUCCEED;
- }
}
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/sys/TestConnectionStatement.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/sys/TestConnectionStatement.java
index ebcfe8be859..4940254120c 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/sys/TestConnectionStatement.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/sys/TestConnectionStatement.java
@@ -19,9 +19,7 @@
package org.apache.iotdb.db.queryengine.plan.statement.sys;
-import org.apache.iotdb.common.rpc.thrift.TSStatus;
import org.apache.iotdb.commons.path.PartialPath;
-import org.apache.iotdb.db.auth.AuthorityChecker;
import org.apache.iotdb.db.queryengine.plan.analyze.QueryType;
import org.apache.iotdb.db.queryengine.plan.statement.IConfigStatement;
import org.apache.iotdb.db.queryengine.plan.statement.Statement;
@@ -55,9 +53,4 @@ public class TestConnectionStatement extends Statement implements IConfigStateme
public <R, C> R accept(StatementVisitor<R, C> visitor, C context) {
return visitor.visitTestConnection(this, context);
}
-
- @Override
- public TSStatus checkPermissionBeforeProcess(String userName) {
- return AuthorityChecker.checkSuperUserOrMaintain(userName);
- }
}
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/load/converter/LoadConvertedInsertTabletStatementTSStatusVisitor.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/load/converter/LoadConvertedInsertTabletStatementTSStatusVisitor.java
index a4b1c0385ed..a94c050e7ac 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/load/converter/LoadConvertedInsertTabletStatementTSStatusVisitor.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/load/converter/LoadConvertedInsertTabletStatementTSStatusVisitor.java
@@ -52,7 +52,8 @@ public class LoadConvertedInsertTabletStatementTSStatusVisitor
return visitInsertBase(insertMultiTabletsStatement, context);
}
- private TSStatus visitInsertBase(
+ @Override
+ public TSStatus visitInsertBase(
final InsertBaseStatement insertBaseStatement, final TSStatus context) {
if (context.getCode() == TSStatusCode.SYSTEM_READ_ONLY.getStatusCode()
|| context.getCode() == TSStatusCode.WRITE_PROCESS_REJECT.getStatusCode()) {
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/auth/entity/RoleTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/auth/entity/RoleTest.java
index 83b410ba8ef..270dd8af689 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/auth/entity/RoleTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/auth/entity/RoleTest.java
@@ -78,21 +78,7 @@ public class RoleTest {
admin.getDBScopePrivilegeMap().put("testDB", databasePrivilege);
admin.getPathPrivilegeList().add(pathPri);
Assert.assertEquals(
- "Role{name='root', pathPrivilegeList=[root.** : READ_DATA_wi"
- + "th_grant_option WRITE_DATA_with_grant_option READ_SCHEMA"
- + "_with_grant_option WRITE_SCHEMA_with_grant_option], systemPr"
- + "ivilegeSet=[MANAGE_USER_with_grant_option, USE_TRIGGER_with_gra"
- + "nt_option, USE_MODEL_with_grant_option, MAINTAIN_with_grant_option"
- + ", USE_CQ_with_grant_option, USE_PIPE_with_grant_option, USE_UDF_wit"
- + "h_grant_option, EXTEND_TEMPLATE_with_grant_option, MANAGE_ROLE_with_gr"
- + "ant_option, MANAGE_DATABASE_with_grant_option], AnyScopePrivilegeMap=[D"
- + "ELETE_with_grant_option, DROP_with_grant_option, ALTER_with_grant_optio"
- + "n, CREATE_with_grant_option, SELECT_with_grant_option, INSERT_with_gran"
- + "t_option], objectPrivilegeSet={testDB=Database(testDB):{CREATE_with_gran"
- + "t_option,DROP_with_grant_option,ALTER_with_grant_option,SELECT_with_grant_"
- + "option,INSERT_with_grant_option,DELETE_with_grant_option,; Tables: [ testTa"
- + "ble(CREATE_with_grant_option,DROP_with_grant_option,ALTER_with_grant_option"
- + ",SELECT_with_grant_option,INSERT_with_grant_option,DELETE_with_grant_option,)]}}}",
+ "Role{name='root', pathPrivilegeList=[root.** : READ_DATA_with_grant_option WRITE_DATA_with_grant_option READ_SCHEMA_with_grant_option WRITE_SCHEMA_with_grant_option], systemPrivilegeSet=[USE_MODEL_with_grant_option, MAINTAIN_with_grant_option, EXTEND_TEMPLATE_with_grant_option, SYSTEM_with_grant_option, MANAGE_DATABASE_with_grant_option, MANAGE_USER_with_grant_option, USE_TRIGGER_with_grant_option, USE_CQ_with_grant_option, SECURITY_with_grant_option, USE_PIPE_with_grant_option, [...]
admin.toString());
}
}
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/parser/StatementGeneratorTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/parser/StatementGeneratorTest.java
index cc46c63f24e..4245eb8a513 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/parser/StatementGeneratorTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/parser/StatementGeneratorTest.java
@@ -715,7 +715,7 @@ public class StatementGeneratorTest {
// 1. check simple privilege grant to user/role with/without grant option.
for (PrivilegeType privilege : PrivilegeType.values()) {
- if (privilege.isRelationalPrivilege()) {
+ if (privilege.isRelationalPrivilege() || privilege.isAdminPrivilege()) {
continue;
}
testGrant.checkParser(privilege.toString(), name, true, path, true);
@@ -753,7 +753,7 @@ public class StatementGeneratorTest {
// 3. check simple privilege revoke from user/role on simple path
for (PrivilegeType type : PrivilegeType.values()) {
- if (type.isRelationalPrivilege()) {
+ if (type.isRelationalPrivilege() || type.isAdminPrivilege()) {
continue;
}
testRevoke.checkParser(type.toString(), name, true, path, false);
@@ -780,14 +780,14 @@ public class StatementGeneratorTest {
// 1. test complex privilege on single path :"root.**"
Set<String> allPriv = new HashSet<>();
for (PrivilegeType type : PrivilegeType.values()) {
- if (type.isRelationalPrivilege()) {
+ if (type.isRelationalPrivilege() || type.isAdminPrivilege()) {
continue;
}
allPriv.add(type.toString());
}
for (PrivilegeType type : PrivilegeType.values()) {
- if (type.isRelationalPrivilege()) {
+ if (type.isRelationalPrivilege() || type.isAdminPrivilege()) {
continue;
}
{
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/relational/analyzer/AuthTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/relational/analyzer/AuthTest.java
index 831388de575..eaf8019ea33 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/relational/analyzer/AuthTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/relational/analyzer/AuthTest.java
@@ -28,6 +28,7 @@ import org.apache.iotdb.db.queryengine.plan.relational.metadata.QualifiedObjectN
import org.apache.iotdb.db.queryengine.plan.relational.security.AccessControlImpl;
import org.apache.iotdb.db.queryengine.plan.relational.security.ITableAuthChecker;
import org.apache.iotdb.db.queryengine.plan.relational.security.TableModelPrivilege;
+import org.apache.iotdb.db.queryengine.plan.relational.security.TreeAccessCheckVisitor;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.Statement;
import org.apache.iotdb.db.queryengine.plan.relational.sql.parser.SqlParser;
import org.apache.iotdb.db.queryengine.plan.relational.sql.rewrite.StatementRewrite;
@@ -216,7 +217,10 @@ public class AuthTest {
new SessionInfo(
0, userName, zoneId, databaseNameInSessionInfo, IClientSession.SqlDialect.TABLE);
StatementAnalyzerFactory statementAnalyzerFactory =
- new StatementAnalyzerFactory(TEST_MATADATA, sqlParser, new AccessControlImpl(authChecker));
+ new StatementAnalyzerFactory(
+ TEST_MATADATA,
+ sqlParser,
+ new AccessControlImpl(authChecker, new TreeAccessCheckVisitor()));
MPPQueryContext context = new MPPQueryContext(sql, QUERY_ID, 0, session, null, null);
Analyzer analyzer =
new Analyzer(
@@ -241,7 +245,9 @@ public class AuthTest {
statement.accept(
new TableConfigTaskVisitor(
- Mockito.mock(IClientSession.class), TEST_MATADATA, new AccessControlImpl(authChecker)),
+ Mockito.mock(IClientSession.class),
+ TEST_MATADATA,
+ new AccessControlImpl(authChecker, new TreeAccessCheckVisitor())),
context);
}
@@ -254,7 +260,9 @@ public class AuthTest {
statement.accept(
new TableConfigTaskVisitor(
- clientSession, TEST_MATADATA, new AccessControlImpl(authChecker)),
+ clientSession,
+ TEST_MATADATA,
+ new AccessControlImpl(authChecker, new TreeAccessCheckVisitor())),
context);
}
}
diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/auth/entity/PrivilegeType.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/auth/entity/PrivilegeType.java
index 773a1be38ba..c7330ac8356 100644
--- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/auth/entity/PrivilegeType.java
+++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/auth/entity/PrivilegeType.java
@@ -44,7 +44,11 @@ public enum PrivilegeType {
ALTER(PrivilegeModelType.RELATIONAL),
SELECT(PrivilegeModelType.RELATIONAL),
INSERT(PrivilegeModelType.RELATIONAL),
- DELETE(PrivilegeModelType.RELATIONAL);
+ DELETE(PrivilegeModelType.RELATIONAL),
+
+ SYSTEM(PrivilegeModelType.SYSTEM),
+ SECURITY(PrivilegeModelType.SYSTEM),
+ AUDIT(PrivilegeModelType.SYSTEM);
private final PrivilegeModelType modelType;
@@ -64,6 +68,10 @@ public enum PrivilegeType {
return this.modelType == PrivilegeModelType.RELATIONAL;
}
+ public boolean isAdminPrivilege() {
+ return this == SYSTEM || this == SECURITY || this == AUDIT;
+ }
+
public static int getPrivilegeCount(PrivilegeModelType type) {
int size = 0;
for (PrivilegeType item : PrivilegeType.values()) {
@@ -93,7 +101,16 @@ public enum PrivilegeType {
}
public boolean forRelationalSys() {
- return this == MANAGE_USER || this == MANAGE_ROLE;
+ switch (this) {
+ case MANAGE_USER:
+ case MANAGE_ROLE:
+ case SYSTEM:
+ case SECURITY:
+ case AUDIT:
+ return true;
+ default:
+ return false;
+ }
}
public PrivilegeModelType getModelType() {
diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/auth/entity/Role.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/auth/entity/Role.java
index 21481de80c4..d798f0085ca 100644
--- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/auth/entity/Role.java
+++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/auth/entity/Role.java
@@ -515,7 +515,8 @@ public class Role {
}
public boolean checkSysPrivilege(PrivilegeType priv) {
- return sysPrivilegeSet.contains(priv);
+ return AuthUtils.getAllPrivilegesContainingCurrentPrivilege(priv).stream()
+ .anyMatch(sysPrivilegeSet::contains);
}
public boolean checkSysPriGrantOpt(PrivilegeType priv) {
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 296cd0fa6a4..3ac91f653ab 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
@@ -82,6 +82,9 @@ public abstract class BasicUserManager extends BasicRoleManager {
PartialPath rootPath = new PartialPath(IoTDBConstant.PATH_ROOT + ".**");
PathPrivilege pathPri = new PathPrivilege(rootPath);
for (PrivilegeType item : PrivilegeType.values()) {
+ if (item.isAdminPrivilege()) {
+ continue;
+ }
if (item.isSystemPrivilege()) {
admin.grantSysPrivilege(item, true);
} else if (item.isRelationalPrivilege()) {
diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/utils/AuthUtils.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/utils/AuthUtils.java
index 09824dfbd69..1ee4c8beb46 100644
--- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/utils/AuthUtils.java
+++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/utils/AuthUtils.java
@@ -41,6 +41,8 @@ import java.io.DataOutputStream;
import java.io.IOException;
import java.nio.ByteBuffer;
import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
@@ -508,6 +510,12 @@ public class AuthUtils {
return PrivilegeType.MAINTAIN;
case 9:
return PrivilegeType.USE_MODEL;
+ case 10:
+ return PrivilegeType.SYSTEM;
+ case 11:
+ return PrivilegeType.SECURITY;
+ case 12:
+ return PrivilegeType.AUDIT;
default:
// Not reach here.
LOGGER.warn("Not support position");
@@ -537,11 +545,36 @@ public class AuthUtils {
return 8;
case USE_MODEL:
return 9;
+ case SYSTEM:
+ return 10;
+ case SECURITY:
+ return 11;
+ case AUDIT:
+ return 12;
default:
return -1;
}
}
+ public static List<PrivilegeType> getAllPrivilegesContainingCurrentPrivilege(PrivilegeType priv) {
+ switch (priv) {
+ case MANAGE_USER:
+ case MANAGE_ROLE:
+ return Arrays.asList(priv, PrivilegeType.SECURITY);
+ case MAINTAIN:
+ case USE_UDF:
+ case USE_MODEL:
+ case USE_TRIGGER:
+ case USE_CQ:
+ case USE_PIPE:
+ case MANAGE_DATABASE:
+ case EXTEND_TEMPLATE:
+ return Arrays.asList(priv, PrivilegeType.SYSTEM);
+ default:
+ return Collections.singletonList(priv);
+ }
+ }
+
public static int pathPosToPri(int pos) {
switch (pos) {
case 0:
diff --git a/iotdb-core/relational-grammar/src/main/antlr4/org/apache/iotdb/db/relational/grammar/sql/RelationalSql.g4 b/iotdb-core/relational-grammar/src/main/antlr4/org/apache/iotdb/db/relational/grammar/sql/RelationalSql.g4
index 3fd595b149a..cf1103182d7 100644
--- a/iotdb-core/relational-grammar/src/main/antlr4/org/apache/iotdb/db/relational/grammar/sql/RelationalSql.g4
+++ b/iotdb-core/relational-grammar/src/main/antlr4/org/apache/iotdb/db/relational/grammar/sql/RelationalSql.g4
@@ -1797,6 +1797,7 @@ WRAPPER: 'WRAPPER';
WRITE: 'WRITE';
YEAR: 'YEAR' | 'Y';
ZONE: 'ZONE';
+AUDIT: 'AUDIT';
EQ: '=';
NEQ: '<>' | '!=';