[To dev/1.3] Add extra client_ip and timeout columns for show queries#17348
[To dev/1.3] Add extra client_ip and timeout columns for show queries#17348Wei-hao-Li merged 2 commits intodev/1.3from
Conversation
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## dev/1.3 #17348 +/- ##
==========================================
Coverage 41.36% 41.37%
- Complexity 198 227 +29
==========================================
Files 3594 3594
Lines 236612 236637 +25
Branches 28639 28641 +2
==========================================
+ Hits 97882 97899 +17
- Misses 138730 138738 +8 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
There was a problem hiding this comment.
Pull request overview
This PR extends the SHOW QUERIES result schema to include client address (client_ip) and timeout, and threads the client address through query/session context so it can be surfaced by the operator.
Changes:
- Add
ClientIpandTimeoutcolumns toSHOW QUERIESheaders and populate them inShowQueriesOperator. - Extend
IQueryExecution/QueryExecution/ConfigExecutionto expose client host/address and timeout. - Extend
SessionInfo(and related construction sites) to carry client address and expose it viaMPPQueryContext.
Reviewed changes
Copilot reviewed 22 out of 22 changed files in this pull request and generated 5 comments.
Show a summary per file
| File | Description |
|---|---|
| iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/planner/logical/LogicalPlannerTestUtil.java | Update SessionInfo construction to new signature. |
| iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/planner/FragmentInstanceSerdeTest.java | Update SessionInfo construction for serde tests. |
| iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/optimization/LimitOffsetPushDownTest.java | Update SessionInfo construction in optimization tests. |
| iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/analyze/AnalyzeTest.java | Update SessionInfo construction in analyze tests. |
| iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/MergeSortOperatorTest.java | Update fake IQueryExecution for new interface methods. |
| iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/load/active/ActiveLoadTsFileLoader.java | Update internal execution SessionInfo construction. |
| iotdb-core/datanode/src/main/java/org/apache/iotdb/db/service/metrics/IoTDBInternalLocalReporter.java | Update internal SessionInfo construction. |
| iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/source/ShowQueriesNode.java | Derive output column names from centralized show-queries headers. |
| iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/ConfigExecution.java | Expose client host/address + timeout via IQueryExecution. |
| iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/QueryExecution.java | Expose client host/address + timeout via IQueryExecution. |
| iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/IQueryExecution.java | Add getClientHostname() and getTimeout() to execution API. |
| iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/ShowQueriesOperator.java | Write new ClientIp and Timeout columns into TsBlock. |
| iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/fragment/FragmentInstanceContext.java | Update test helper SessionInfo construction. |
| iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/common/header/ColumnHeaderConstant.java | Add show-queries column headers for ClientIp + Timeout. |
| iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/common/SessionInfo.java | Add client address field and serialize/deserialize it. |
| iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/common/MPPQueryContext.java | Expose client host/address via getClientHostName(). |
| iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/session/SessionManager.java | Populate SessionInfo with IClientSession.getClientAddress(). |
| iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/sink/protocol/writeback/WriteBackSink.java | Update internal execution SessionInfo construction. |
| iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/receiver/protocol/legacy/loader/TsFileLoader.java | Update internal execution SessionInfo construction. |
| iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/receiver/protocol/legacy/loader/DeletionLoader.java | Update internal execution SessionInfo construction. |
| iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/receiver/protocol/legacy/IoTDBLegacyPipeReceiverAgent.java | Update internal execution SessionInfo construction. |
| iotdb-core/datanode/src/main/java/org/apache/iotdb/db/audit/AuditLogger.java | Update internal SessionInfo construction. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/common/SessionInfo.java
Show resolved
Hide resolved
| this.userQuery = userQuery; | ||
| } | ||
|
|
||
| public String getClientHostName() { |
There was a problem hiding this comment.
getClientHostName() dereferences session without a null check, but this class already documents that many callers pass a null SessionInfo (see the TODO above). That means SHOW QUERIES (via QueryExecution.getClientHostname()) can NPE for queries created with a null session. Consider returning a safe default when session is null (e.g., empty string/"UNKNOWN") or enforcing non-null SessionInfo at construction time before exposing this method.
| public String getClientHostName() { | |
| public String getClientHostName() { | |
| if (session == null || session.getCliHostname() == null) { | |
| return "UNKNOWN"; | |
| } |
...main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/source/ShowQueriesNode.java
Outdated
Show resolved
Hide resolved
...e/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/IQueryExecution.java
Show resolved
Hide resolved
iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/common/SessionInfo.java
Show resolved
Hide resolved
...tanode/src/main/java/org/apache/iotdb/db/queryengine/common/header/ColumnHeaderConstant.java
Outdated
Show resolved
Hide resolved
...e/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/IQueryExecution.java
Show resolved
Hide resolved
Signed-off-by: Weihao Li <18110526956@163.com> # Conflicts: # iotdb-core/datanode/src/main/java/org/apache/iotdb/db/audit/AuditLogger.java # iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/receiver/protocol/legacy/IoTDBLegacyPipeReceiverAgent.java # iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/receiver/protocol/legacy/loader/DeletionLoader.java # iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/receiver/protocol/legacy/loader/TsFileLoader.java # iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/sink/protocol/writeback/WriteBackSink.java # iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/session/SessionManager.java # iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/common/MPPQueryContext.java # iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/common/SessionInfo.java # iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/fragment/FragmentInstanceContext.java # iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/ShowQueriesOperator.java # iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/source/ShowQueriesNode.java # iotdb-core/datanode/src/main/java/org/apache/iotdb/db/service/metrics/IoTDBInternalLocalReporter.java # iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/load/active/ActiveLoadTsFileLoader.java
|



Uh oh!
There was an error while loading. Please reload this page.