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 b2175ffa672 Added some common interfaces for compatibility
b2175ffa672 is described below

commit b2175ffa6727c4d67ba0509d8516d452fdb0e0d8
Author: shuwenwei <[email protected]>
AuthorDate: Mon Sep 29 20:19:02 2025 +0800

    Added some common interfaces for compatibility
---
 .../client/async/CnToDnAsyncRequestType.java           |  3 ++-
 .../apache/iotdb/confignode/manager/ConfigManager.java | 18 +++++++++++++++---
 .../iotdb/confignode/manager/PermissionManager.java    | 11 ++++++++---
 .../iotdb/confignode/manager/ProcedureManager.java     |  2 +-
 .../manager/load/service/HeartbeatService.java         |  2 +-
 .../iotdb/confignode/persistence/auth/AuthorInfo.java  |  9 +++++++--
 .../confignode/procedure/store/ProcedureType.java      |  2 ++
 .../plan/execution/config/TableConfigTaskVisitor.java  |  1 +
 .../plan/execution/config/TreeConfigTaskVisitor.java   |  1 +
 .../db/queryengine/plan/statement/StatementType.java   |  3 ++-
 .../plan/statement/sys/ShowConfigurationStatement.java |  2 ++
 .../resources/conf/iotdb-system.properties.template    |  2 +-
 .../src/main/thrift/confignode.thrift                  |  1 +
 .../thrift-datanode/src/main/thrift/datanode.thrift    |  3 +++
 14 files changed, 47 insertions(+), 13 deletions(-)

diff --git 
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/client/async/CnToDnAsyncRequestType.java
 
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/client/async/CnToDnAsyncRequestType.java
index badad8a1fe7..fc7ff81c75b 100644
--- 
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/client/async/CnToDnAsyncRequestType.java
+++ 
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/client/async/CnToDnAsyncRequestType.java
@@ -125,5 +125,6 @@ public enum CnToDnAsyncRequestType {
   DETECT_TREE_DEVICE_VIEW_FIELD_TYPE,
 
   // audit log and event write-back
-  INSERT_RECORD
+  INSERT_RECORD,
+  ENABLE_SEPARATION_OF_ADMIN_POWERS,
 }
diff --git 
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/ConfigManager.java
 
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/ConfigManager.java
index c406b724773..696bf25be6b 100644
--- 
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/ConfigManager.java
+++ 
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/ConfigManager.java
@@ -369,7 +369,7 @@ public class ConfigManager implements IManager {
     NodeInfo nodeInfo = new NodeInfo();
     ClusterSchemaInfo clusterSchemaInfo = new ClusterSchemaInfo();
     PartitionInfo partitionInfo = new PartitionInfo();
-    AuthorInfo authorInfo = new AuthorInfo();
+    AuthorInfo authorInfo = createAuthorInfo();
     ProcedureInfo procedureInfo = new ProcedureInfo(this);
     UDFInfo udfInfo = new UDFInfo();
     TriggerInfo triggerInfo = new TriggerInfo();
@@ -409,8 +409,8 @@ public class ConfigManager implements IManager {
             new ClusterSchemaQuotaStatistics(
                 COMMON_CONF.getSeriesLimitThreshold(), 
COMMON_CONF.getDeviceLimitThreshold()));
     this.partitionManager = new PartitionManager(this, partitionInfo);
-    this.permissionManager = new PermissionManager(this, authorInfo);
-    this.procedureManager = new ProcedureManager(this, procedureInfo);
+    this.permissionManager = createPermissionManager(authorInfo);
+    this.procedureManager = createProcedureManager(procedureInfo);
     this.udfManager = new UDFManager(this, udfInfo);
     this.triggerManager = new TriggerManager(this, triggerInfo);
     this.cqManager = new CQManager(this);
@@ -435,6 +435,18 @@ public class ConfigManager implements IManager {
     this.consensusManager.get().start();
   }
 
+  protected PermissionManager createPermissionManager(AuthorInfo authorInfo) {
+    return new PermissionManager(this, authorInfo);
+  }
+
+  protected ProcedureManager createProcedureManager(ProcedureInfo 
procedureInfo) {
+    return new ProcedureManager(this, procedureInfo);
+  }
+
+  protected AuthorInfo createAuthorInfo() {
+    return new AuthorInfo();
+  }
+
   protected void setNodeManager(NodeInfo nodeInfo) {
     this.nodeManager = new NodeManager(this, nodeInfo);
   }
diff --git 
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/PermissionManager.java
 
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/PermissionManager.java
index c83ef18e04b..087c7669058 100644
--- 
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/PermissionManager.java
+++ 
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/PermissionManager.java
@@ -44,8 +44,8 @@ public class PermissionManager {
 
   private static final Logger LOGGER = 
LoggerFactory.getLogger(PermissionManager.class);
 
-  private final ConfigManager configManager;
-  private final AuthorInfo authorInfo;
+  protected final ConfigManager configManager;
+  protected final AuthorInfo authorInfo;
 
   public PermissionManager(final ConfigManager configManager, final AuthorInfo 
authorInfo) {
     this.configManager = configManager;
@@ -106,7 +106,7 @@ public class PermissionManager {
     }
   }
 
-  private ConsensusManager getConsensusManager() {
+  protected ConsensusManager getConsensusManager() {
     return configManager.getConsensusManager();
   }
 
@@ -145,4 +145,9 @@ public class PermissionManager {
   public String getUserName(long userId) throws AuthException {
     return authorInfo.getUserName(userId);
   }
+
+  public TSStatus enableSeparationOfPowers(
+      String systemAdminUsername, String securityAdminUsername, String 
auditAdminUsername) {
+    throw new UnsupportedOperationException("Enable separation of powers is 
not supported");
+  }
 }
diff --git 
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/ProcedureManager.java
 
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/ProcedureManager.java
index 3dcb01de273..913c5dbd306 100644
--- 
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/ProcedureManager.java
+++ 
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/ProcedureManager.java
@@ -1799,7 +1799,7 @@ public class ProcedureManager {
    * @param procedure The specific procedure
    * @return TSStatus the running result of this procedure
    */
-  private TSStatus waitingProcedureFinished(Procedure<?> procedure) {
+  protected TSStatus waitingProcedureFinished(Procedure<?> procedure) {
     if (procedure == null) {
       LOGGER.error("Unexpected null procedure parameters for 
waitingProcedureFinished");
       return RpcUtils.getStatus(TSStatusCode.INTERNAL_SERVER_ERROR);
diff --git 
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/load/service/HeartbeatService.java
 
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/load/service/HeartbeatService.java
index 561d49aa443..64322da5bbb 100644
--- 
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/load/service/HeartbeatService.java
+++ 
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/load/service/HeartbeatService.java
@@ -138,7 +138,7 @@ public class HeartbeatService {
             });
   }
 
-  private TDataNodeHeartbeatReq genHeartbeatReq() {
+  protected TDataNodeHeartbeatReq genHeartbeatReq() {
     /* Generate heartbeat request */
     TDataNodeHeartbeatReq heartbeatReq = new TDataNodeHeartbeatReq();
     heartbeatReq.setHeartbeatTimestamp(System.nanoTime());
diff --git 
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/auth/AuthorInfo.java
 
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/auth/AuthorInfo.java
index ecc04271481..f1248942ebe 100644
--- 
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/auth/AuthorInfo.java
+++ 
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/auth/AuthorInfo.java
@@ -51,8 +51,8 @@ public class AuthorInfo implements SnapshotProcessor {
   public static final CommonConfig COMMON_CONFIG = 
CommonDescriptor.getInstance().getConfig();
   public static final String NO_USER_MSG = "No such user : ";
 
-  private IAuthorizer authorizer;
-  private volatile IAuthorPlanExecutor authorPlanExecutor;
+  protected IAuthorizer authorizer;
+  protected volatile IAuthorPlanExecutor authorPlanExecutor;
 
   public AuthorInfo() {
     try {
@@ -149,6 +149,11 @@ public class AuthorInfo implements SnapshotProcessor {
     return authorPlanExecutor.getUserPermissionInfo(username, type);
   }
 
+  public TSStatus enableSeparationOfAdminPowers(
+      String systemAdminUsername, String securityAdminUsername, String 
auditAdminUsername) {
+    throw new UnsupportedOperationException("EnableSeparationOfAdminPowers is 
not supported");
+  }
+
   @TestOnly
   public void clear() throws AuthException {
     File userFolder = new File(COMMON_CONFIG.getUserFolder());
diff --git 
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/store/ProcedureType.java
 
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/store/ProcedureType.java
index 76386dde139..620736b9cba 100644
--- 
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/store/ProcedureType.java
+++ 
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/store/ProcedureType.java
@@ -114,6 +114,8 @@ public enum ProcedureType {
   /** Auth privilege */
   AUTH_OPERATE_PROCEDURE((short) 1300),
 
+  ENABLE_SEPARATION_OF_ADMIN_POWERS_PROCEDURE((short) 1301),
+
   /** TTL */
   SET_TTL_PROCEDURE((short) 1400),
 
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/TableConfigTaskVisitor.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/TableConfigTaskVisitor.java
index 5a90bf70ec9..57b4d5bbdae 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/TableConfigTaskVisitor.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/TableConfigTaskVisitor.java
@@ -1387,6 +1387,7 @@ public class TableConfigTaskVisitor extends 
AstVisitor<IConfigTask, MPPQueryCont
   protected IConfigTask visitRelationalAuthorPlan(
       RelationalAuthorStatement node, MPPQueryContext context) {
     context.setQueryType(node.getQueryType());
+    node.setExecutedByUserId(context.getUserId());
     TSStatus status = 
node.checkStatementIsValid(context.getSession().getUserName());
     if (status.getCode() != TSStatusCode.SUCCESS_STATUS.getStatusCode()) {
       throw new AccessDeniedException(status.getMessage());
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/TreeConfigTaskVisitor.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/TreeConfigTaskVisitor.java
index fd838c71cac..e01dfa918db 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/TreeConfigTaskVisitor.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/TreeConfigTaskVisitor.java
@@ -312,6 +312,7 @@ public class TreeConfigTaskVisitor extends 
StatementVisitor<IConfigTask, MPPQuer
 
   @Override
   public IConfigTask visitAuthor(AuthorStatement statement, MPPQueryContext 
context) {
+    statement.setExecutedByUserId(context.getUserId());
     if (statement.getAuthorType() == AuthorType.UPDATE_USER) {
       visitUpdateUser(statement);
     }
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/StatementType.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/StatementType.java
index 7351c392b52..0836f6f4a35 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/StatementType.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/StatementType.java
@@ -188,5 +188,6 @@ public enum StatementType {
 
   SET_CONFIGURATION,
 
-  FAST_LAST_QUERY
+  FAST_LAST_QUERY,
+  SHOW_CONFIGURATION,
 }
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/sys/ShowConfigurationStatement.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/sys/ShowConfigurationStatement.java
index ebbf6e0737f..ed27d68f8a2 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/sys/ShowConfigurationStatement.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/sys/ShowConfigurationStatement.java
@@ -24,6 +24,7 @@ import org.apache.iotdb.commons.path.PartialPath;
 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 java.util.Collection;
@@ -39,6 +40,7 @@ public class ShowConfigurationStatement extends Statement 
implements IConfigStat
 
   public ShowConfigurationStatement(
       boolean showAllConfigurations, int nodeId, boolean withDescription) {
+    this.statementType = StatementType.SHOW_CONFIGURATION;
     this.showAllConfigurations = showAllConfigurations;
     this.nodeId = nodeId;
     this.withDescription = withDescription;
diff --git 
a/iotdb-core/node-commons/src/assembly/resources/conf/iotdb-system.properties.template
 
b/iotdb-core/node-commons/src/assembly/resources/conf/iotdb-system.properties.template
index c7633fbde5a..207c0507093 100644
--- 
a/iotdb-core/node-commons/src/assembly/resources/conf/iotdb-system.properties.template
+++ 
b/iotdb-core/node-commons/src/assembly/resources/conf/iotdb-system.properties.template
@@ -2189,4 +2189,4 @@ enable_retry_for_unknown_error=false
 # The switch to control if allow null value be included in the "quantity 
total" metric statistic.
 # effectiveMode: hot_reload
 # Datatype: Boolean
-include_null_value_in_write_throughput_metric=false
\ No newline at end of file
+include_null_value_in_write_throughput_metric=false
diff --git a/iotdb-protocol/thrift-confignode/src/main/thrift/confignode.thrift 
b/iotdb-protocol/thrift-confignode/src/main/thrift/confignode.thrift
index d0f535c4b37..5ecf2af1d35 100644
--- a/iotdb-protocol/thrift-confignode/src/main/thrift/confignode.thrift
+++ b/iotdb-protocol/thrift-confignode/src/main/thrift/confignode.thrift
@@ -118,6 +118,7 @@ struct TRuntimeConfiguration {
   7: optional binary tableInfo
   8: required TAuditConfig auditConfig
   9: required string superUserName
+  10: optional bool enableSeparationOfAdminPowers
 }
 
 struct TDataNodeRegisterReq {
diff --git a/iotdb-protocol/thrift-datanode/src/main/thrift/datanode.thrift 
b/iotdb-protocol/thrift-datanode/src/main/thrift/datanode.thrift
index 8865f78a4ea..f142928deb2 100644
--- a/iotdb-protocol/thrift-datanode/src/main/thrift/datanode.thrift
+++ b/iotdb-protocol/thrift-datanode/src/main/thrift/datanode.thrift
@@ -285,6 +285,9 @@ struct TDataNodeHeartbeatReq {
   13: optional map<i32, set<i32>> topology
   14: required i64 logicalClock
   15: optional list<common.TConsensusGroupId> currentRegionOperations
+  // Using 8 bit to represent 8 bool
+  // lowest bit: enable separation of admin powers
+  16: optional byte booleanVariables1
 }
 
 struct TDataNodeActivation {

Reply via email to