Skip to content

Commit c8455c1

Browse files
authored
Add extra client_ip and timeout columns for show queries (apache#17350)
1 parent 355a872 commit c8455c1

13 files changed

Lines changed: 80 additions & 12 deletions

File tree

integration-test/src/test/java/org/apache/iotdb/relational/it/query/recent/IoTDBMaintainAuthIT.java

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -167,7 +167,17 @@ public void maintainAuthTest() {
167167
// case 12: show queries
168168
// non-root users can access its own queries
169169
expectedHeader =
170-
new String[] {"query_id", "start_time", "datanode_id", "elapsed_time", "statement", "user"};
170+
new String[] {
171+
"query_id",
172+
"start_time",
173+
"datanode_id",
174+
"elapsed_time",
175+
"statement",
176+
"user",
177+
"wait_time_in_server",
178+
"client_ip",
179+
"timeout"
180+
};
171181
tableQueryNoVerifyResultTest("show queries", expectedHeader, USER_2, PASSWORD);
172182

173183
// case 13: kill query

integration-test/src/test/java/org/apache/iotdb/relational/it/schema/IoTDBDatabaseIT.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -464,7 +464,10 @@ public void testInformationSchema() throws SQLException {
464464
"datanode_id,INT32,ATTRIBUTE,",
465465
"elapsed_time,FLOAT,ATTRIBUTE,",
466466
"statement,STRING,ATTRIBUTE,",
467-
"user,STRING,ATTRIBUTE,")));
467+
"user,STRING,ATTRIBUTE,",
468+
"wait_time_in_server,FLOAT,ATTRIBUTE,",
469+
"client_ip,STRING,ATTRIBUTE,",
470+
"timeout,INT64,ATTRIBUTE,")));
468471
TestUtils.assertResultSetEqual(
469472
statement.executeQuery("desc pipes"),
470473
"ColumnName,DataType,Category,",
@@ -683,6 +686,9 @@ public void testInformationSchema() throws SQLException {
683686
"information_schema,queries,elapsed_time,FLOAT,ATTRIBUTE,USING,null,",
684687
"information_schema,queries,statement,STRING,ATTRIBUTE,USING,null,",
685688
"information_schema,queries,user,STRING,ATTRIBUTE,USING,null,",
689+
"information_schema,queries,wait_time_in_server,FLOAT,ATTRIBUTE,USING,null,",
690+
"information_schema,queries,client_ip,STRING,ATTRIBUTE,USING,null,",
691+
"information_schema,queries,timeout,INT64,ATTRIBUTE,USING,null,",
686692
"test,test,time,TIMESTAMP,TIME,USING,null,",
687693
"test,test,a,STRING,TAG,USING,null,",
688694
"test,test,b,STRING,ATTRIBUTE,USING,null,",

iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/common/MPPQueryContext.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -589,6 +589,9 @@ public String getUsername() {
589589

590590
@Override
591591
public String getCliHostname() {
592+
if (session == null || session.getCliHostname() == null) {
593+
return "UNKNOWN";
594+
}
592595
return session.getCliHostname();
593596
}
594597

iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/ShowQueriesOperator.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -150,6 +150,10 @@ private TsBlock buildTsBlock() {
150150
(float) (currTime - queryExecution.getStartExecutionTime()) / 1000);
151151
columnBuilders[3].writeBinary(
152152
BytesUtils.valueOf(queryExecution.getExecuteSQL().orElse("UNKNOWN")));
153+
columnBuilders[4].writeFloat(
154+
(float) queryExecution.getTotalExecutionTime() / 1000_000_000);
155+
columnBuilders[5].writeBinary(BytesUtils.valueOf(queryExecution.getClientHostname()));
156+
columnBuilders[6].writeLong(queryExecution.getTimeout());
153157
builder.declarePosition();
154158
}
155159
}

iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/relational/InformationSchemaContentSupplierFactory.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -283,6 +283,9 @@ protected void constructLine() {
283283
columnBuilders[4].writeBinary(
284284
BytesUtils.valueOf(queryExecution.getExecuteSQL().orElse("UNKNOWN")));
285285
columnBuilders[5].writeBinary(BytesUtils.valueOf(queryExecution.getUser()));
286+
columnBuilders[6].writeFloat((float) queryExecution.getTotalExecutionTime() / 1000_000_000);
287+
columnBuilders[7].writeBinary(BytesUtils.valueOf(queryExecution.getClientHostname()));
288+
columnBuilders[8].writeLong(queryExecution.getTimeout());
286289
resultBuilder.declarePosition();
287290
}
288291
nextConsumedIndex++;

iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/IQueryExecution.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,8 @@ public interface IQueryExecution {
7070
*/
7171
long getTotalExecutionTime();
7272

73+
long getTimeout();
74+
7375
Optional<String> getExecuteSQL();
7476

7577
String getStatementType();
@@ -78,6 +80,7 @@ public interface IQueryExecution {
7880

7981
String getUser();
8082

83+
/** return ip for a thrift-based client, client-id for MQTT/REST client */
8184
String getClientHostname();
8285

8386
boolean isDebug();

iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/QueryExecution.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -680,6 +680,11 @@ public long getTotalExecutionTime() {
680680
return totalExecutionTime;
681681
}
682682

683+
@Override
684+
public long getTimeout() {
685+
return context.getTimeOut();
686+
}
687+
683688
@Override
684689
public Optional<String> getExecuteSQL() {
685690
return Optional.ofNullable(context.getSql());

iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/ConfigExecution.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -334,6 +334,11 @@ public long getTotalExecutionTime() {
334334
return totalExecutionTime;
335335
}
336336

337+
@Override
338+
public long getTimeout() {
339+
return context.getTimeOut();
340+
}
341+
337342
@Override
338343
public Optional<String> getExecuteSQL() {
339344
return Optional.ofNullable(context.getSql());

iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/source/ShowQueriesNode.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
package org.apache.iotdb.db.queryengine.plan.planner.plan.node.source;
2020

2121
import org.apache.iotdb.common.rpc.thrift.TDataNodeLocation;
22-
import org.apache.iotdb.commons.schema.column.ColumnHeaderConstant;
22+
import org.apache.iotdb.commons.schema.column.ColumnHeader;
2323
import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanNode;
2424
import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanNodeId;
2525
import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanNodeType;
@@ -34,14 +34,14 @@
3434
import java.util.List;
3535
import java.util.Objects;
3636

37+
import static org.apache.iotdb.commons.schema.column.ColumnHeaderConstant.showQueriesColumnHeaders;
38+
3739
public class ShowQueriesNode extends VirtualSourceNode {
3840

3941
public static final List<String> SHOW_QUERIES_HEADER_COLUMNS =
40-
ImmutableList.of(
41-
ColumnHeaderConstant.QUERY_ID,
42-
ColumnHeaderConstant.DATA_NODE_ID,
43-
ColumnHeaderConstant.ELAPSED_TIME,
44-
ColumnHeaderConstant.STATEMENT);
42+
showQueriesColumnHeaders.stream()
43+
.map(ColumnHeader::getColumnName)
44+
.collect(ImmutableList.toImmutableList());
4545

4646
private final String allowedUsername;
4747

iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/MergeTreeSortOperatorTest.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1876,6 +1876,11 @@ public Optional<TsBlock> getBatchResult() {
18761876
return Optional.empty();
18771877
}
18781878

1879+
@Override
1880+
public long getTimeout() {
1881+
return 60_000L;
1882+
}
1883+
18791884
@Override
18801885
public Optional<ByteBuffer> getByteBufferBatchResult() {
18811886
return Optional.empty();

0 commit comments

Comments
 (0)