Skip to content

Commit e37d2b9

Browse files
authored
Fix NPE of empty data aggregation query when there is no push-down optimize in TableModel
1 parent 5176534 commit e37d2b9

File tree

2 files changed

+10
-7
lines changed

2 files changed

+10
-7
lines changed

integration-test/src/test/java/org/apache/iotdb/relational/it/db/it/IoTDBMultiIDsWithAttributesTableIT.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1027,11 +1027,16 @@ public void aggregationNoDataTest() {
10271027
retArray = new String[] {"0,0,null,"};
10281028
tableResultSetEqualTest(sql, expectedHeader, retArray, DATABASE_NAME);
10291029

1030-
// no data in given time range
1030+
// no data in given time range (push-down)
10311031
sql = "select count(*), count(num), sum(num) from table0 where time>2100-04-26T18:01:40.000";
10321032
retArray = new String[] {"0,0,null,"};
10331033
tableResultSetEqualTest(sql, expectedHeader, retArray, DATABASE_NAME);
10341034

1035+
// no data in given time range (no push-down)
1036+
sql = "select count(*), count(num+1), sum(num) from table0 where time>2100-04-26T18:01:40.000";
1037+
retArray = new String[] {"0,0,null,"};
1038+
tableResultSetEqualTest(sql, expectedHeader, retArray, DATABASE_NAME);
1039+
10351040
// only one device has data in queried time
10361041
expectedHeader = buildHeaders(2);
10371042
sql = "select count(num),sum(num) from table1 where time=0";

iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/distribute/TableDistributedPlanGenerator.java

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -455,12 +455,10 @@ public List<PlanNode> visitTableScan(TableScanNode node, PlanContext context) {
455455

456456
for (DeviceEntry deviceEntry : node.getDeviceEntries()) {
457457
List<TRegionReplicaSet> regionReplicaSets =
458-
analysis
459-
.getDataPartitionInfo()
460-
.getDataRegionReplicaSetWithTimeFilter(
461-
node.getQualifiedObjectName().getDatabaseName(),
462-
deviceEntry.getDeviceID(),
463-
node.getTimeFilter());
458+
analysis.getDataRegionReplicaSetWithTimeFilter(
459+
node.getQualifiedObjectName().getDatabaseName(),
460+
deviceEntry.getDeviceID(),
461+
node.getTimeFilter());
464462

465463
for (TRegionReplicaSet regionReplicaSet : regionReplicaSets) {
466464
TableScanNode tableScanNode =

0 commit comments

Comments
 (0)