Skip to content

Commit ea7676c

Browse files
committed
Merge branch 'master' of https://github.com/apache/iotdb into enable-time-other-name
2 parents 3d29c51 + 1e19eae commit ea7676c

File tree

6 files changed

+70
-11
lines changed

6 files changed

+70
-11
lines changed

iotdb-core/ainode/pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ scikit-learn = "^1.7.1"
9595
statsmodels = "^0.14.5"
9696
sktime = "0.40.1"
9797
pmdarima = "2.1.1"
98-
hmmlearn = "0.3.2"
98+
hmmlearn = "0.3.3"
9999
accelerate = "^1.10.1"
100100

101101
# ---- Optimizers / utils ----

iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/distribution/SourceRewriter.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1086,13 +1086,14 @@ private void addSortForEachLastQueryNode(PlanNode root, Ordering timeseriesOrder
10861086
if (child instanceof LastQueryScanNode) {
10871087
// sort the measurements for LastQueryMergeOperator
10881088
LastQueryScanNode node = (LastQueryScanNode) child;
1089-
((LastQueryScanNode) child)
1090-
.getIdxOfMeasurementSchemas()
1089+
node.getIdxOfMeasurementSchemas()
10911090
.sort(
10921091
Comparator.comparing(
10931092
idx ->
10941093
new Binary(
1095-
node.getMeasurementSchema(idx).getMeasurementName(),
1094+
node.getGlobalMeasurementSchemaList()
1095+
.get(idx)
1096+
.getMeasurementName(),
10961097
TSFileConfig.STRING_CHARSET),
10971098
Comparator.naturalOrder()));
10981099
}

iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/memory/ThreadSafeMemoryReservationManager.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,12 +52,12 @@ public synchronized void releaseAllReservedMemory() {
5252
}
5353

5454
@Override
55-
public Pair<Long, Long> releaseMemoryVirtually(final long size) {
55+
public synchronized Pair<Long, Long> releaseMemoryVirtually(final long size) {
5656
return super.releaseMemoryVirtually(size);
5757
}
5858

5959
@Override
60-
public void reserveMemoryVirtually(
60+
public synchronized void reserveMemoryVirtually(
6161
final long bytesToBeReserved, final long bytesAlreadyReserved) {
6262
super.reserveMemoryVirtually(bytesToBeReserved, bytesAlreadyReserved);
6363
}

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

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -346,6 +346,10 @@ public void setGlobalMeasurementSchemaList(List<IMeasurementSchema> globalMeasur
346346
this.globalMeasurementSchemaList = globalMeasurementSchemaList;
347347
}
348348

349+
public List<IMeasurementSchema> getGlobalMeasurementSchemaList() {
350+
return globalMeasurementSchemaList;
351+
}
352+
349353
public IMeasurementSchema getMeasurementSchema(int idx) {
350354
int globalIdx = indexOfMeasurementSchemas.get(idx);
351355
return globalMeasurementSchemaList.get(globalIdx);

iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/fragment/FragmentInstanceExecutionTest.java

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,6 @@
4949
import static org.apache.iotdb.db.queryengine.common.QueryId.MOCK_QUERY_ID;
5050
import static org.apache.iotdb.db.queryengine.execution.fragment.FragmentInstanceContext.createFragmentInstanceContext;
5151
import static org.junit.Assert.assertEquals;
52-
import static org.junit.Assert.assertFalse;
5352
import static org.junit.Assert.assertTrue;
5453
import static org.junit.Assert.fail;
5554

@@ -149,14 +148,12 @@ public void testTVListOwnerTransfer() throws InterruptedException {
149148
}
150149
} finally {
151150
// Restore original System.out
152-
System.setErr(systemOut);
151+
System.setOut(systemOut);
153152

154153
// should not contain warn message: "The memory cost to be released is larger than the memory
155154
// cost of memory block"
156155
String capturedOutput = logPrint.toString();
157-
assertFalse(
158-
"Should not contain warning message",
159-
capturedOutput.contains("The memory cost to be released is larger than the memory"));
156+
assertTrue(capturedOutput.isEmpty());
160157
}
161158
}
162159

iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/planner/distribution/LastQueryTest.java

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,16 +22,22 @@
2222
import org.apache.iotdb.common.rpc.thrift.TEndPoint;
2323
import org.apache.iotdb.commons.exception.IllegalPathException;
2424
import org.apache.iotdb.commons.path.MeasurementPath;
25+
import org.apache.iotdb.commons.path.PartialPath;
2526
import org.apache.iotdb.db.queryengine.common.MPPQueryContext;
2627
import org.apache.iotdb.db.queryengine.common.QueryId;
28+
import org.apache.iotdb.db.queryengine.plan.analyze.Analysis;
2729
import org.apache.iotdb.db.queryengine.plan.planner.plan.DistributedQueryPlan;
2830
import org.apache.iotdb.db.queryengine.plan.planner.plan.LogicalQueryPlan;
2931
import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanNode;
32+
import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanNodeId;
3033
import org.apache.iotdb.db.queryengine.plan.planner.plan.node.process.ExchangeNode;
3134
import org.apache.iotdb.db.queryengine.plan.planner.plan.node.process.last.LastQueryCollectNode;
3235
import org.apache.iotdb.db.queryengine.plan.planner.plan.node.process.last.LastQueryMergeNode;
3336
import org.apache.iotdb.db.queryengine.plan.planner.plan.node.process.last.LastQueryNode;
37+
import org.apache.iotdb.db.queryengine.plan.planner.plan.node.source.LastQueryScanNode;
3438

39+
import org.apache.tsfile.enums.TSDataType;
40+
import org.apache.tsfile.write.schema.MeasurementSchema;
3541
import org.junit.Assert;
3642
import org.junit.Test;
3743

@@ -41,6 +47,57 @@
4147

4248
public class LastQueryTest {
4349

50+
@Test
51+
public void testSortLastQueryScanNode() throws IllegalPathException {
52+
LastQueryNode lastQueryNode = new LastQueryNode(new PlanNodeId("test"), null, true);
53+
54+
lastQueryNode.addDeviceLastQueryScanNode(
55+
new PlanNodeId("test_last_query_scan1"),
56+
new PartialPath("root.test.d1"),
57+
true,
58+
Arrays.asList(
59+
new MeasurementSchema("s3", TSDataType.INT32),
60+
new MeasurementSchema("s1", TSDataType.BOOLEAN),
61+
new MeasurementSchema("s2", TSDataType.INT32)),
62+
null,
63+
null);
64+
lastQueryNode.addDeviceLastQueryScanNode(
65+
new PlanNodeId("test_last_query_scan2"),
66+
new PartialPath("root.test.d0"),
67+
false,
68+
Collections.singletonList(new MeasurementSchema("s0", TSDataType.BOOLEAN)),
69+
null,
70+
null);
71+
72+
Analysis analysis = Util.constructAnalysis();
73+
SourceRewriter sourceRewriter = new SourceRewriter(analysis);
74+
DistributionPlanContext context =
75+
new DistributionPlanContext(
76+
new MPPQueryContext("", new QueryId("test"), null, new TEndPoint(), new TEndPoint()));
77+
context.setOneSeriesInMultiRegion(true);
78+
context.setQueryMultiRegion(true);
79+
List<PlanNode> result = sourceRewriter.visitLastQuery(lastQueryNode, context);
80+
Assert.assertEquals(1, result.size());
81+
Assert.assertTrue(result.get(0) instanceof LastQueryMergeNode);
82+
LastQueryMergeNode mergeNode = (LastQueryMergeNode) result.get(0);
83+
Assert.assertEquals(1, mergeNode.getChildren().size());
84+
Assert.assertTrue(mergeNode.getChildren().get(0) instanceof LastQueryNode);
85+
86+
LastQueryNode lastQueryNode2 = (LastQueryNode) mergeNode.getChildren().get(0);
87+
Assert.assertEquals(2, lastQueryNode2.getChildren().size());
88+
Assert.assertTrue(lastQueryNode2.getChildren().get(0) instanceof LastQueryScanNode);
89+
90+
LastQueryScanNode scanNodeChild1 = (LastQueryScanNode) lastQueryNode2.getChildren().get(0);
91+
Assert.assertTrue(scanNodeChild1.getDevicePath().toString().contains("d0"));
92+
Assert.assertEquals("s0", scanNodeChild1.getMeasurementSchemas().get(0).getMeasurementName());
93+
94+
LastQueryScanNode scanNodeChild2 = (LastQueryScanNode) lastQueryNode2.getChildren().get(1);
95+
Assert.assertTrue(scanNodeChild2.getDevicePath().toString().contains("d1"));
96+
Assert.assertEquals("s1", scanNodeChild2.getMeasurementSchemas().get(0).getMeasurementName());
97+
Assert.assertEquals("s2", scanNodeChild2.getMeasurementSchemas().get(1).getMeasurementName());
98+
Assert.assertEquals("s3", scanNodeChild2.getMeasurementSchemas().get(2).getMeasurementName());
99+
}
100+
44101
@Test
45102
public void testLastQuery1Series1Region() throws IllegalPathException {
46103
String d2s1Path = "root.sg.d22.s1";

0 commit comments

Comments
 (0)