This is an automated email from the ASF dual-hosted git repository.

rong 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 91fb32a5c3a Pipe: Added default logic for username / password in tree 
sql-dialect pipes & Fixed the NPE for configNode table schema snapshot parsing 
need (#15200)
91fb32a5c3a is described below

commit 91fb32a5c3a7776a935baeb484ce43bea4f47c88
Author: Caideyipi <[email protected]>
AuthorDate: Thu Mar 27 10:37:10 2025 +0800

    Pipe: Added default logic for username / password in tree sql-dialect pipes 
& Fixed the NPE for configNode table schema snapshot parsing need (#15200)
---
 .../pipe/extractor/IoTDBConfigRegionExtractor.java    | 11 ++++++-----
 .../plan/execution/config/TableConfigTaskVisitor.java |  4 ++--
 .../plan/execution/config/TreeConfigTaskVisitor.java  | 14 ++++++++++++--
 .../iotdb/db/queryengine/plan/parser/ASTVisitor.java  | 19 +------------------
 4 files changed, 21 insertions(+), 27 deletions(-)

diff --git 
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/pipe/extractor/IoTDBConfigRegionExtractor.java
 
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/pipe/extractor/IoTDBConfigRegionExtractor.java
index ace61b95314..e8ffe69d2d6 100644
--- 
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/pipe/extractor/IoTDBConfigRegionExtractor.java
+++ 
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/pipe/extractor/IoTDBConfigRegionExtractor.java
@@ -183,11 +183,12 @@ public class IoTDBConfigRegionExtractor extends 
IoTDBNonDataRegionExtractor {
       case SCHEMA:
         // Currently do not check tree model mTree
         return Objects.nonNull(((PipeConfigRegionSnapshotEvent) 
event).getTemplateFile())
-            || permissionManager
-                    .checkUserPrivileges(userName, new PrivilegeUnion(null, 
false, true))
-                    .getStatus()
-                    .getCode()
-                == TSStatusCode.SUCCESS_STATUS.getStatusCode();
+            || Objects.nonNull(userName)
+                && permissionManager
+                        .checkUserPrivileges(userName, new 
PrivilegeUnion(null, false, true))
+                        .getStatus()
+                        .getCode()
+                    == TSStatusCode.SUCCESS_STATUS.getStatusCode();
       default:
         return true;
     }
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 ce986ad8083..8cfcd89d07f 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
@@ -912,7 +912,7 @@ public class TableConfigTaskVisitor extends 
AstVisitor<IConfigTask, MPPQueryCont
     return new CreatePipeTask(node);
   }
 
-  private void checkAndEnrichSourceUserName(
+  public static void checkAndEnrichSourceUserName(
       final String pipeName, final Map<String, String> extractorAttributes, 
final String userName) {
     final PipeParameters extractorParameters = new 
PipeParameters(extractorAttributes);
     final String pluginName =
@@ -944,7 +944,7 @@ public class TableConfigTaskVisitor extends 
AstVisitor<IConfigTask, MPPQueryCont
     }
   }
 
-  private void checkAndEnrichSinkUserName(
+  public static void checkAndEnrichSinkUserName(
       final String pipeName, final Map<String, String> connectorAttributes, 
final String userName) {
     final PipeParameters connectorParameters = new 
PipeParameters(connectorAttributes);
     final String pluginName =
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 c381d31857a..ec849227517 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
@@ -199,6 +199,8 @@ import java.util.List;
 
 import static 
org.apache.iotdb.commons.executable.ExecutableManager.getUnTrustedUriErrorMsg;
 import static 
org.apache.iotdb.commons.executable.ExecutableManager.isUriTrusted;
+import static 
org.apache.iotdb.db.queryengine.plan.execution.config.TableConfigTaskVisitor.checkAndEnrichSinkUserName;
+import static 
org.apache.iotdb.db.queryengine.plan.execution.config.TableConfigTaskVisitor.checkAndEnrichSourceUserName;
 
 public class TreeConfigTaskVisitor extends StatementVisitor<IConfigTask, 
MPPQueryContext> {
 
@@ -515,8 +517,8 @@ public class TreeConfigTaskVisitor extends 
StatementVisitor<IConfigTask, MPPQuer
 
   @Override
   public IConfigTask visitCreatePipe(
-      CreatePipeStatement createPipeStatement, MPPQueryContext context) {
-    for (String ExtractorAttribute : 
createPipeStatement.getExtractorAttributes().keySet()) {
+      final CreatePipeStatement createPipeStatement, final MPPQueryContext 
context) {
+    for (final String ExtractorAttribute : 
createPipeStatement.getExtractorAttributes().keySet()) {
       if (ExtractorAttribute.startsWith(SystemConstant.SYSTEM_PREFIX_KEY)) {
         throw new SemanticException(
             String.format(
@@ -529,6 +531,14 @@ public class TreeConfigTaskVisitor extends 
StatementVisitor<IConfigTask, MPPQuer
     createPipeStatement
         .getExtractorAttributes()
         .put(SystemConstant.SQL_DIALECT_KEY, 
SystemConstant.SQL_DIALECT_TREE_VALUE);
+    checkAndEnrichSourceUserName(
+        createPipeStatement.getPipeName(),
+        createPipeStatement.getExtractorAttributes(),
+        context.getSession().getUserName());
+    checkAndEnrichSinkUserName(
+        createPipeStatement.getPipeName(),
+        createPipeStatement.getConnectorAttributes(),
+        context.getSession().getUserName());
 
     return new CreatePipeTask(createPipeStatement);
   }
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 1ece2b8510e..386eb4255d2 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
@@ -3857,27 +3857,10 @@ public class ASTVisitor extends 
IoTDBSqlParserBaseVisitor<Statement> {
     return new 
DropSchemaTemplateStatement(parseIdentifier(ctx.templateName.getText()));
   }
 
-  public Map<String, String> parseSyncAttributeClauses(
-      IoTDBSqlParser.SyncAttributeClausesContext ctx) {
-
-    Map<String, String> attributes = new HashMap<>();
-
-    List<IoTDBSqlParser.AttributePairContext> attributePairs = 
ctx.attributePair();
-    if (ctx.attributePair(0) != null) {
-      for (IoTDBSqlParser.AttributePairContext attributePair : attributePairs) 
{
-        attributes.put(
-            parseAttributeKey(attributePair.attributeKey()).toLowerCase(),
-            parseAttributeValue(attributePair.attributeValue()).toLowerCase());
-      }
-    }
-
-    return attributes;
-  }
-
   // PIPE
 
   @Override
-  public Statement visitCreatePipe(IoTDBSqlParser.CreatePipeContext ctx) {
+  public Statement visitCreatePipe(final IoTDBSqlParser.CreatePipeContext ctx) 
{
     final CreatePipeStatement createPipeStatement =
         new CreatePipeStatement(StatementType.CREATE_PIPE);
 

Reply via email to