This is an automated email from the ASF dual-hosted git repository. shuwenwei pushed a commit to branch table_disk_usage_statistics_with_cache in repository https://gitbox.apache.org/repos/asf/iotdb.git
commit d4d641cda311656fcfc3c8c1c7101facb0846805 Author: shuwenwei <[email protected]> AuthorDate: Wed Feb 4 15:06:35 2026 +0800 fix --- .../InformationSchemaContentSupplierFactory.java | 24 ++++++++++++++++++++-- .../plan/planner/TableOperatorGenerator.java | 19 +---------------- 2 files changed, 23 insertions(+), 20 deletions(-) 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 782f5acc184..aaeabf14401 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 @@ -116,6 +116,7 @@ import java.io.IOException; import java.util.Arrays; import java.util.Collections; import java.util.Comparator; +import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; import java.util.List; @@ -139,6 +140,7 @@ import static org.apache.iotdb.commons.schema.column.ColumnHeaderConstant.NODE_T import static org.apache.iotdb.commons.schema.column.ColumnHeaderConstant.NODE_TYPE_CONFIG_NODE; import static org.apache.iotdb.commons.schema.column.ColumnHeaderConstant.NODE_TYPE_DATA_NODE; import static org.apache.iotdb.commons.schema.table.TsTable.TTL_PROPERTY; +import static org.apache.iotdb.db.queryengine.plan.analyze.PredicateUtils.convertPredicateToFilter; import static org.apache.iotdb.db.queryengine.plan.execution.config.TableConfigTaskVisitor.canShowDB; import static org.apache.iotdb.db.queryengine.plan.execution.config.TableConfigTaskVisitor.canShowTable; import static org.apache.iotdb.db.queryengine.plan.execution.config.metadata.ShowFunctionsTask.BINARY_MAP; @@ -158,8 +160,7 @@ public class InformationSchemaContentSupplierFactory { final OperatorContext context, final List<TSDataType> dataTypes, final UserEntity userEntity, - final InformationSchemaTableScanNode node, - final Filter pushDownFilter) { + final InformationSchemaTableScanNode node) { String tableName = node.getQualifiedObjectName().getObjectName(); try { switch (tableName) { @@ -196,6 +197,25 @@ public class InformationSchemaContentSupplierFactory { case InformationSchema.DATA_NODES: return new DataNodesSupplier(dataTypes, userEntity); case InformationSchema.TABLE_DISK_USAGE: + Filter pushDownFilter = null; + if (!InformationSchema.getColumnsSupportPushDownPredicate( + node.getQualifiedObjectName().getObjectName()) + .isEmpty() + && node.getPushDownPredicate() != null) { + Map<String, Integer> measurementColumnsIndexMap = + new HashMap<>(node.getOutputColumnNames().size()); + for (int i = 0; i < node.getOutputColumnNames().size(); i++) { + measurementColumnsIndexMap.put(node.getOutputColumnNames().get(i), i); + } + pushDownFilter = + convertPredicateToFilter( + node.getPushDownPredicate(), + measurementColumnsIndexMap, + node.getAssignments(), + null, + context.getSessionInfo().getZoneId(), + TimestampPrecisionUtils.currPrecision); + } return new TableDiskUsageSupplier( dataTypes, userEntity, diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/TableOperatorGenerator.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/TableOperatorGenerator.java index ca7e5ad7fb8..63705c78910 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/TableOperatorGenerator.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/TableOperatorGenerator.java @@ -1310,22 +1310,6 @@ public class TableOperatorGenerator extends PlanVisitor<Operator, LocalExecution node.getPlanNodeId(), InformationSchemaTableScanOperator.class.getSimpleName()); - Filter pushDownFilter = null; - if (node.getPushDownPredicate() != null) { - Map<String, Integer> measurementColumnsIndexMap = - new HashMap<>(node.getOutputColumnNames().size()); - for (int i = 0; i < node.getOutputColumnNames().size(); i++) { - measurementColumnsIndexMap.put(node.getOutputColumnNames().get(i), i); - } - pushDownFilter = - convertPredicateToFilter( - node.getPushDownPredicate(), - measurementColumnsIndexMap, - node.getAssignments(), - null, - context.getZoneId(), - TimestampPrecisionUtils.currPrecision); - } final List<TSDataType> dataTypes = node.getOutputSymbols().stream() .map(symbol -> getTSDataType(context.getTypeProvider().getTableModelType(symbol))) @@ -1342,8 +1326,7 @@ public class TableOperatorGenerator extends PlanVisitor<Operator, LocalExecution .getFragmentInstanceContext() .getSessionInfo() .getUserEntity(), - node, - pushDownFilter)); + node)); } @Override
