Split "other" operations from "write" in QueryType#17485
Conversation
There was a problem hiding this comment.
Pull request overview
Introduces a new QueryType.OTHER to distinguish non-read, non-insert “operations” (e.g., DDL/admin/config) from actual data WRITE, and updates analyzers/executors/tests to use this classification for better request categorization.
Changes:
- Add
QueryType.OTHERand reclassify many statements/context setters fromWRITEtoOTHER. - Update “is query?” checks to treat only
READ/READ_WRITEas queries (and route everything else as non-query). - Adjust fragment dispatch to handle
OTHERsimilarly toWRITE, plus update impacted tests.
Reviewed changes
Copilot reviewed 75 out of 75 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
| iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/planner/statement/sys/pipe/PipeStatementTest.java | Update pipe statement tests to expect QueryType.OTHER. |
| iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/ConfigExecutionTest.java | Update test context to use QueryType.OTHER. |
| iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/sys/quota/SetThrottleQuotaStatement.java | Reclassify statement query type to OTHER. |
| iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/sys/quota/SetSpaceQuotaStatement.java | Reclassify statement query type to OTHER. |
| iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/sys/StopRepairDataStatement.java | Reclassify statement query type to OTHER. |
| iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/sys/StartRepairDataStatement.java | Reclassify statement query type to OTHER. |
| iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/sys/SetSystemStatusStatement.java | Reclassify statement query type to OTHER. |
| iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/sys/SetSqlDialectStatement.java | Reclassify statement query type to OTHER. |
| iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/sys/SetConfigurationStatement.java | Reclassify statement query type to OTHER. |
| iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/sys/MergeStatement.java | Reclassify statement query type to OTHER. |
| iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/sys/LoadConfigurationStatement.java | Reclassify statement query type to OTHER. |
| iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/sys/KillQueryStatement.java | Reclassify statement query type to OTHER. |
| iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/sys/FlushStatement.java | Reclassify statement query type to OTHER. |
| iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/sys/ClearCacheStatement.java | Reclassify statement query type to OTHER. |
| iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/sys/AuthorStatement.java | Reclassify author operations from WRITE to OTHER. |
| iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/view/RenameLogicalViewStatement.java | Reclassify statement query type to OTHER. |
| iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/view/DeleteLogicalViewStatement.java | Reclassify statement query type to OTHER. |
| iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/view/AlterLogicalViewStatement.java | Reclassify statement query type to OTHER. |
| iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/template/UnsetSchemaTemplateStatement.java | Reclassify statement query type to OTHER. |
| iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/template/SetSchemaTemplateStatement.java | Reclassify statement query type to OTHER. |
| iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/template/DropSchemaTemplateStatement.java | Reclassify statement query type to OTHER. |
| iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/template/DeactivateTemplateStatement.java | Reclassify statement query type to OTHER. |
| iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/template/CreateSchemaTemplateStatement.java | Reclassify statement query type to OTHER. |
| iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/template/AlterSchemaTemplateStatement.java | Reclassify statement query type to OTHER. |
| iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/subscription/DropTopicStatement.java | Reclassify statement query type to OTHER. |
| iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/subscription/DropSubscriptionStatement.java | Reclassify statement query type to OTHER. |
| iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/subscription/CreateTopicStatement.java | Reclassify statement query type to OTHER. |
| iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/region/RemoveRegionStatement.java | Reclassify statement query type to OTHER. |
| iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/region/ReconstructRegionStatement.java | Reclassify statement query type to OTHER. |
| iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/region/MigrateRegionStatement.java | Reclassify statement query type to OTHER. |
| iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/region/ExtendRegionStatement.java | Reclassify statement query type to OTHER. |
| iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/pipe/StopPipeStatement.java | Reclassify statement query type to OTHER. |
| iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/pipe/StartPipeStatement.java | Reclassify statement query type to OTHER. |
| iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/pipe/DropPipeStatement.java | Reclassify statement query type to OTHER. |
| iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/pipe/DropPipePluginStatement.java | Reclassify statement query type to OTHER. |
| iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/pipe/CreatePipeStatement.java | Reclassify statement query type to OTHER. |
| iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/pipe/CreatePipePluginStatement.java | Reclassify statement query type to OTHER. |
| iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/pipe/AlterPipeStatement.java | Reclassify statement query type to OTHER. |
| iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/model/UnloadModelStatement.java | Reclassify statement query type to OTHER. |
| iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/model/LoadModelStatement.java | Reclassify statement query type to OTHER. |
| iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/model/DropModelStatement.java | Reclassify statement query type to OTHER. |
| iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/model/CreateTrainingStatement.java | Reclassify statement query type to OTHER. |
| iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/model/CreateModelStatement.java | Reclassify statement query type to OTHER. |
| iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/externalservice/StopExternalServiceStatement.java | Reclassify statement query type to OTHER. |
| iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/externalservice/StartExternalServiceStatement.java | Reclassify statement query type to OTHER. |
| iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/externalservice/DropExternalServiceStatement.java | Reclassify statement query type to OTHER. |
| iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/externalservice/CreateExternalServiceStatement.java | Reclassify statement query type to OTHER. |
| iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/SetTTLStatement.java | Reclassify statement query type to OTHER. |
| iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/RemoveDataNodeStatement.java | Reclassify statement query type to OTHER. |
| iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/RemoveConfigNodeStatement.java | Reclassify statement query type to OTHER. |
| iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/RemoveAINodeStatement.java | Reclassify statement query type to OTHER. |
| iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/DropTriggerStatement.java | Reclassify statement query type to OTHER. |
| iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/DropFunctionStatement.java | Reclassify statement query type to OTHER. |
| iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/DropContinuousQueryStatement.java | Reclassify statement query type to OTHER. |
| iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/DeleteTimeSeriesStatement.java | Reclassify statement query type to OTHER. |
| iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/DeleteDatabaseStatement.java | Reclassify statement query type to OTHER. |
| iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/DatabaseSchemaStatement.java | Reclassify statement query type to OTHER. |
| iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/CreateTriggerStatement.java | Reclassify statement query type to OTHER. |
| iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/CreateFunctionStatement.java | Reclassify statement query type to OTHER. |
| iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/CreateContinuousQueryStatement.java | Reclassify statement query type to OTHER. |
| iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/AlterTimeSeriesDataTypeStatement.java | Reclassify statement query type to OTHER. |
| iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/AlterEncodingCompressorStatement.java | Reclassify statement query type to OTHER. |
| iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/scheduler/FragmentInstanceDispatcherImpl.java | Route OTHER through write dispatch/execution paths; refine query detection. |
| iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/scheduler/ClusterScheduler.java | Refine query detection logic for scheduling/state tracking. |
| iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/RelationalAuthorStatement.java | Reclassify relational author ops to OTHER. |
| iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/analyzer/StatementAnalyzer.java | Set QueryType.OTHER for selected relational statements. |
| iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/sys/AuthorizerTask.java | Update permission-path branching for new query type semantics. |
| iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/metadata/relational/RelationalAuthorizerTask.java | Update permission-path branching for new query type semantics. |
| iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/TableConfigTaskVisitor.java | Set context query type to OTHER for many config tasks. |
| iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/ConfigExecution.java | Delegate isQuery() to MPPQueryContext.isQuery(). |
| iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/QueryExecution.java | Use context.isQuery() to distinguish query vs non-query failure behavior and isQuery() API. |
| iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/QueryType.java | Add QueryType.OTHER. |
| iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/AnalyzeVisitor.java | Set query type to OTHER for many analyzed statements. |
| iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/AnalyzeUtils.java | Set query type to OTHER for relational delete analysis. |
| iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/common/MPPQueryContext.java | Refine isQuery() to treat only READ/READ_WRITE as queries. |
Comments suppressed due to low confidence (1)
iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/QueryType.java:28
QueryTypeis serialized/deserialized by ordinal (e.g.,FragmentInstance.serializeToByteBuffer()writestype.ordinal()anddeserializeFrom()usesQueryType.values()[...]). AddingOTHERat the beginning shifts existing ordinals and will break cross-version compatibility and any persisted/transported fragment instances. To keep compatibility, appendOTHERat the end (so existing ordinals stay stable) or switch serialization to an explicit/stable id (e.g., write/readname()or a fixed int code).
public enum QueryType {
OTHER,
WRITE,
READ,
// Currently READ_WRITE is only used by insert into query, which means it behaves as a READ query
// type. However, the protocol layer regards it as WRITE operation when it returns.
READ_WRITE,
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| private boolean isQuery() { | ||
| return queryType != QueryType.WRITE; | ||
| return queryType == QueryType.READ || queryType == QueryType.READ_WRITE; | ||
| } |
|
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## master #17485 +/- ##
============================================
- Coverage 39.85% 39.84% -0.01%
Complexity 312 312
============================================
Files 5135 5135
Lines 346929 346932 +3
Branches 44210 44212 +2
============================================
- Hits 138259 138251 -8
- Misses 208670 208681 +11 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|



To better distinguish the user requests.