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

weihao 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 c8455c142b7 Add extra client_ip and timeout columns for show queries 
(#17350)
c8455c142b7 is described below

commit c8455c142b77314b7835f46d4814ef3a7fdfe742
Author: Weihao Li <[email protected]>
AuthorDate: Wed Mar 25 18:08:49 2026 +0800

    Add extra client_ip and timeout columns for show queries (#17350)
---
 .../relational/it/query/recent/IoTDBMaintainAuthIT.java     | 12 +++++++++++-
 .../apache/iotdb/relational/it/schema/IoTDBDatabaseIT.java  |  8 +++++++-
 .../apache/iotdb/db/queryengine/common/MPPQueryContext.java |  3 +++
 .../execution/operator/source/ShowQueriesOperator.java      |  4 ++++
 .../relational/InformationSchemaContentSupplierFactory.java |  3 +++
 .../db/queryengine/plan/execution/IQueryExecution.java      |  3 +++
 .../iotdb/db/queryengine/plan/execution/QueryExecution.java |  5 +++++
 .../queryengine/plan/execution/config/ConfigExecution.java  |  5 +++++
 .../plan/planner/plan/node/source/ShowQueriesNode.java      | 12 ++++++------
 .../execution/operator/MergeTreeSortOperatorTest.java       |  5 +++++
 .../planner/informationschema/ShowQueriesTest.java          | 13 +++++++++++--
 .../iotdb/commons/schema/column/ColumnHeaderConstant.java   | 12 ++++++++++--
 .../iotdb/commons/schema/table/InformationSchema.java       |  7 +++++++
 13 files changed, 80 insertions(+), 12 deletions(-)

diff --git 
a/integration-test/src/test/java/org/apache/iotdb/relational/it/query/recent/IoTDBMaintainAuthIT.java
 
b/integration-test/src/test/java/org/apache/iotdb/relational/it/query/recent/IoTDBMaintainAuthIT.java
index 56425b4d7ff..2d86a652194 100644
--- 
a/integration-test/src/test/java/org/apache/iotdb/relational/it/query/recent/IoTDBMaintainAuthIT.java
+++ 
b/integration-test/src/test/java/org/apache/iotdb/relational/it/query/recent/IoTDBMaintainAuthIT.java
@@ -167,7 +167,17 @@ public class IoTDBMaintainAuthIT {
     // case 12: show queries
     // non-root users can access its own queries
     expectedHeader =
-        new String[] {"query_id", "start_time", "datanode_id", "elapsed_time", 
"statement", "user"};
+        new String[] {
+          "query_id",
+          "start_time",
+          "datanode_id",
+          "elapsed_time",
+          "statement",
+          "user",
+          "wait_time_in_server",
+          "client_ip",
+          "timeout"
+        };
     tableQueryNoVerifyResultTest("show queries", expectedHeader, USER_2, 
PASSWORD);
 
     // case 13: kill query
diff --git 
a/integration-test/src/test/java/org/apache/iotdb/relational/it/schema/IoTDBDatabaseIT.java
 
b/integration-test/src/test/java/org/apache/iotdb/relational/it/schema/IoTDBDatabaseIT.java
index 886d6ef10ac..94c215a52ae 100644
--- 
a/integration-test/src/test/java/org/apache/iotdb/relational/it/schema/IoTDBDatabaseIT.java
+++ 
b/integration-test/src/test/java/org/apache/iotdb/relational/it/schema/IoTDBDatabaseIT.java
@@ -464,7 +464,10 @@ public class IoTDBDatabaseIT {
                   "datanode_id,INT32,ATTRIBUTE,",
                   "elapsed_time,FLOAT,ATTRIBUTE,",
                   "statement,STRING,ATTRIBUTE,",
-                  "user,STRING,ATTRIBUTE,")));
+                  "user,STRING,ATTRIBUTE,",
+                  "wait_time_in_server,FLOAT,ATTRIBUTE,",
+                  "client_ip,STRING,ATTRIBUTE,",
+                  "timeout,INT64,ATTRIBUTE,")));
       TestUtils.assertResultSetEqual(
           statement.executeQuery("desc pipes"),
           "ColumnName,DataType,Category,",
@@ -683,6 +686,9 @@ public class IoTDBDatabaseIT {
                   
"information_schema,queries,elapsed_time,FLOAT,ATTRIBUTE,USING,null,",
                   
"information_schema,queries,statement,STRING,ATTRIBUTE,USING,null,",
                   
"information_schema,queries,user,STRING,ATTRIBUTE,USING,null,",
+                  
"information_schema,queries,wait_time_in_server,FLOAT,ATTRIBUTE,USING,null,",
+                  
"information_schema,queries,client_ip,STRING,ATTRIBUTE,USING,null,",
+                  
"information_schema,queries,timeout,INT64,ATTRIBUTE,USING,null,",
                   "test,test,time,TIMESTAMP,TIME,USING,null,",
                   "test,test,a,STRING,TAG,USING,null,",
                   "test,test,b,STRING,ATTRIBUTE,USING,null,",
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/common/MPPQueryContext.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/common/MPPQueryContext.java
index 4eea2457b50..0294a14af25 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/common/MPPQueryContext.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/common/MPPQueryContext.java
@@ -589,6 +589,9 @@ public class MPPQueryContext implements IAuditEntity {
 
   @Override
   public String getCliHostname() {
+    if (session == null || session.getCliHostname() == null) {
+      return "UNKNOWN";
+    }
     return session.getCliHostname();
   }
 
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/ShowQueriesOperator.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/ShowQueriesOperator.java
index b23906f00a1..75013c844dc 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/ShowQueriesOperator.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/ShowQueriesOperator.java
@@ -150,6 +150,10 @@ public class ShowQueriesOperator implements SourceOperator 
{
               (float) (currTime - queryExecution.getStartExecutionTime()) / 
1000);
           columnBuilders[3].writeBinary(
               
BytesUtils.valueOf(queryExecution.getExecuteSQL().orElse("UNKNOWN")));
+          columnBuilders[4].writeFloat(
+              (float) queryExecution.getTotalExecutionTime() / 1000_000_000);
+          
columnBuilders[5].writeBinary(BytesUtils.valueOf(queryExecution.getClientHostname()));
+          columnBuilders[6].writeLong(queryExecution.getTimeout());
           builder.declarePosition();
         }
       }
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/relational/InformationSchemaContentSupplierFactory.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/relational/InformationSchemaContentSupplierFactory.java
index 6d042929fe3..d7162b03be3 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/relational/InformationSchemaContentSupplierFactory.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/relational/InformationSchemaContentSupplierFactory.java
@@ -283,6 +283,9 @@ public class InformationSchemaContentSupplierFactory {
         columnBuilders[4].writeBinary(
             
BytesUtils.valueOf(queryExecution.getExecuteSQL().orElse("UNKNOWN")));
         
columnBuilders[5].writeBinary(BytesUtils.valueOf(queryExecution.getUser()));
+        columnBuilders[6].writeFloat((float) 
queryExecution.getTotalExecutionTime() / 1000_000_000);
+        
columnBuilders[7].writeBinary(BytesUtils.valueOf(queryExecution.getClientHostname()));
+        columnBuilders[8].writeLong(queryExecution.getTimeout());
         resultBuilder.declarePosition();
       }
       nextConsumedIndex++;
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/IQueryExecution.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/IQueryExecution.java
index 9fe9b28a3a2..f754bc4b10e 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/IQueryExecution.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/IQueryExecution.java
@@ -70,6 +70,8 @@ public interface IQueryExecution {
    */
   long getTotalExecutionTime();
 
+  long getTimeout();
+
   Optional<String> getExecuteSQL();
 
   String getStatementType();
@@ -78,6 +80,7 @@ public interface IQueryExecution {
 
   String getUser();
 
+  /** return ip for a thrift-based client, client-id for MQTT/REST client */
   String getClientHostname();
 
   boolean isDebug();
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/QueryExecution.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/QueryExecution.java
index c63937996b9..6e940e9816e 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/QueryExecution.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/QueryExecution.java
@@ -680,6 +680,11 @@ public class QueryExecution implements IQueryExecution {
     return totalExecutionTime;
   }
 
+  @Override
+  public long getTimeout() {
+    return context.getTimeOut();
+  }
+
   @Override
   public Optional<String> getExecuteSQL() {
     return Optional.ofNullable(context.getSql());
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/ConfigExecution.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/ConfigExecution.java
index f75670db84e..f431bb2e51f 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/ConfigExecution.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/ConfigExecution.java
@@ -334,6 +334,11 @@ public class ConfigExecution implements IQueryExecution {
     return totalExecutionTime;
   }
 
+  @Override
+  public long getTimeout() {
+    return context.getTimeOut();
+  }
+
   @Override
   public Optional<String> getExecuteSQL() {
     return Optional.ofNullable(context.getSql());
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/source/ShowQueriesNode.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/source/ShowQueriesNode.java
index 25e94c0da5c..1eaf122c773 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/source/ShowQueriesNode.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/source/ShowQueriesNode.java
@@ -19,7 +19,7 @@
 package org.apache.iotdb.db.queryengine.plan.planner.plan.node.source;
 
 import org.apache.iotdb.common.rpc.thrift.TDataNodeLocation;
-import org.apache.iotdb.commons.schema.column.ColumnHeaderConstant;
+import org.apache.iotdb.commons.schema.column.ColumnHeader;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanNode;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanNodeId;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanNodeType;
@@ -34,14 +34,14 @@ import java.nio.ByteBuffer;
 import java.util.List;
 import java.util.Objects;
 
+import static 
org.apache.iotdb.commons.schema.column.ColumnHeaderConstant.showQueriesColumnHeaders;
+
 public class ShowQueriesNode extends VirtualSourceNode {
 
   public static final List<String> SHOW_QUERIES_HEADER_COLUMNS =
-      ImmutableList.of(
-          ColumnHeaderConstant.QUERY_ID,
-          ColumnHeaderConstant.DATA_NODE_ID,
-          ColumnHeaderConstant.ELAPSED_TIME,
-          ColumnHeaderConstant.STATEMENT);
+      showQueriesColumnHeaders.stream()
+          .map(ColumnHeader::getColumnName)
+          .collect(ImmutableList.toImmutableList());
 
   private final String allowedUsername;
 
diff --git 
a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/MergeTreeSortOperatorTest.java
 
b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/MergeTreeSortOperatorTest.java
index 1758f0c9f49..1739944be7c 100644
--- 
a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/MergeTreeSortOperatorTest.java
+++ 
b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/MergeTreeSortOperatorTest.java
@@ -1876,6 +1876,11 @@ public class MergeTreeSortOperatorTest {
       return Optional.empty();
     }
 
+    @Override
+    public long getTimeout() {
+      return 60_000L;
+    }
+
     @Override
     public Optional<ByteBuffer> getByteBufferBatchResult() {
       return Optional.empty();
diff --git 
a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/relational/planner/informationschema/ShowQueriesTest.java
 
b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/relational/planner/informationschema/ShowQueriesTest.java
index 7161c68f4e9..6226dd98627 100644
--- 
a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/relational/planner/informationschema/ShowQueriesTest.java
+++ 
b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/relational/planner/informationschema/ShowQueriesTest.java
@@ -27,14 +27,17 @@ import org.junit.Test;
 import java.util.Locale;
 import java.util.Optional;
 
+import static 
org.apache.iotdb.commons.schema.column.ColumnHeaderConstant.CLIENT_IP;
 import static 
org.apache.iotdb.commons.schema.column.ColumnHeaderConstant.DATA_NODE_ID_TABLE_MODEL;
 import static 
org.apache.iotdb.commons.schema.column.ColumnHeaderConstant.ELAPSED_TIME_TABLE_MODEL;
 import static 
org.apache.iotdb.commons.schema.column.ColumnHeaderConstant.QUERY_ID_TABLE_MODEL;
 import static 
org.apache.iotdb.commons.schema.column.ColumnHeaderConstant.START_TIME_TABLE_MODEL;
 import static 
org.apache.iotdb.commons.schema.column.ColumnHeaderConstant.STATEMENT;
 import static 
org.apache.iotdb.commons.schema.column.ColumnHeaderConstant.STATEMENT_TABLE_MODEL;
+import static 
org.apache.iotdb.commons.schema.column.ColumnHeaderConstant.TIMEOUT_TABLE_MODEL;
 import static org.apache.iotdb.commons.schema.column.ColumnHeaderConstant.USER;
 import static 
org.apache.iotdb.commons.schema.column.ColumnHeaderConstant.USER_TABLE_MODEL;
+import static 
org.apache.iotdb.commons.schema.column.ColumnHeaderConstant.WAIT_TIME_IN_SERVER_TABLE_MODEL;
 import static 
org.apache.iotdb.db.queryengine.plan.relational.planner.assertions.PlanAssert.assertPlan;
 import static 
org.apache.iotdb.db.queryengine.plan.relational.planner.assertions.PlanMatchPattern.collect;
 import static 
org.apache.iotdb.db.queryengine.plan.relational.planner.assertions.PlanMatchPattern.exchange;
@@ -64,7 +67,10 @@ public class ShowQueriesTest {
                     DATA_NODE_ID_TABLE_MODEL,
                     ELAPSED_TIME_TABLE_MODEL,
                     STATEMENT_TABLE_MODEL,
-                    USER_TABLE_MODEL))));
+                    USER_TABLE_MODEL,
+                    WAIT_TIME_IN_SERVER_TABLE_MODEL,
+                    CLIENT_IP,
+                    TIMEOUT_TABLE_MODEL))));
 
     //                  - Exchange
     // Output - Collect - Exchange
@@ -142,6 +148,9 @@ public class ShowQueriesTest {
                         DATA_NODE_ID_TABLE_MODEL,
                         ELAPSED_TIME_TABLE_MODEL,
                         STATEMENT.toLowerCase(Locale.ENGLISH),
-                        USER.toLowerCase(Locale.ENGLISH))))));
+                        USER.toLowerCase(Locale.ENGLISH),
+                        WAIT_TIME_IN_SERVER_TABLE_MODEL,
+                        CLIENT_IP,
+                        TIMEOUT_TABLE_MODEL)))));
   }
 }
diff --git 
a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/schema/column/ColumnHeaderConstant.java
 
b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/schema/column/ColumnHeaderConstant.java
index 219cd310be1..33f56cdefe9 100644
--- 
a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/schema/column/ColumnHeaderConstant.java
+++ 
b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/schema/column/ColumnHeaderConstant.java
@@ -212,6 +212,9 @@ public class ColumnHeaderConstant {
   public static final String QUERY_ID = "QueryId";
   public static final String ELAPSED_TIME = "ElapsedTime";
   public static final String STATEMENT = "Statement";
+  public static final String WAIT_TIME_IN_SERVER = "WaitTimeInServer";
+  public static final String CLIENT_IP_TREE_MODEL = "ClientIp";
+  public static final String TIMEOUT = "Timeout";
 
   // column names for show idle connection
   public static final String DATANODE_ID = "datanode_id";
@@ -225,6 +228,8 @@ public class ColumnHeaderConstant {
   public static final String DATA_NODE_ID_TABLE_MODEL = "datanode_id";
   public static final String START_TIME_TABLE_MODEL = "start_time";
   public static final String ELAPSED_TIME_TABLE_MODEL = "elapsed_time";
+  public static final String WAIT_TIME_IN_SERVER_TABLE_MODEL = 
"wait_time_in_server";
+  public static final String TIMEOUT_TABLE_MODEL = "timeout";
 
   // column names for current_queries and queries_costs_histogram
   public static final String STATE_TABLE_MODEL = "state";
@@ -645,10 +650,13 @@ public class ColumnHeaderConstant {
 
   public static final List<ColumnHeader> showQueriesColumnHeaders =
       ImmutableList.of(
-          new ColumnHeader(QUERY_ID, TSDataType.TEXT),
+          new ColumnHeader(QUERY_ID, TSDataType.STRING),
           new ColumnHeader(DATA_NODE_ID, TSDataType.INT32),
           new ColumnHeader(ELAPSED_TIME, TSDataType.FLOAT),
-          new ColumnHeader(STATEMENT, TSDataType.TEXT));
+          new ColumnHeader(STATEMENT, TSDataType.STRING),
+          new ColumnHeader(WAIT_TIME_IN_SERVER, TSDataType.FLOAT),
+          new ColumnHeader(CLIENT_IP_TREE_MODEL, TSDataType.STRING),
+          new ColumnHeader(TIMEOUT, TSDataType.INT64));
 
   public static final List<ColumnHeader> showDiskUsageColumnHeaders =
       ImmutableList.of(
diff --git 
a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/schema/table/InformationSchema.java
 
b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/schema/table/InformationSchema.java
index 6a7ceb8c2ea..98bf4a9a830 100644
--- 
a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/schema/table/InformationSchema.java
+++ 
b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/schema/table/InformationSchema.java
@@ -78,6 +78,13 @@ public class InformationSchema {
         new AttributeColumnSchema(ColumnHeaderConstant.STATEMENT_TABLE_MODEL, 
TSDataType.STRING));
     queriesTable.addColumnSchema(
         new AttributeColumnSchema(ColumnHeaderConstant.USER_TABLE_MODEL, 
TSDataType.STRING));
+    queriesTable.addColumnSchema(
+        new AttributeColumnSchema(
+            ColumnHeaderConstant.WAIT_TIME_IN_SERVER_TABLE_MODEL, 
TSDataType.FLOAT));
+    queriesTable.addColumnSchema(
+        new AttributeColumnSchema(ColumnHeaderConstant.CLIENT_IP, 
TSDataType.STRING));
+    queriesTable.addColumnSchema(
+        new AttributeColumnSchema(ColumnHeaderConstant.TIMEOUT_TABLE_MODEL, 
TSDataType.INT64));
     schemaTables.put(QUERIES, queriesTable);
 
     final TsTable databaseTable = new TsTable(DATABASES);

Reply via email to