This is an automated email from the ASF dual-hosted git repository.
lancelly pushed a commit to branch support_uncorrelated_in_predicate
in repository https://gitbox.apache.org/repos/asf/iotdb.git
The following commit(s) were added to
refs/heads/support_uncorrelated_in_predicate by this push:
new 9186e0035c0 Fix mergesort join
9186e0035c0 is described below
commit 9186e0035c0b1e3fb7951e2c8d7ddd34910d5d0c
Author: lancelly <[email protected]>
AuthorDate: Sun Dec 8 17:05:01 2024 +0800
Fix mergesort join
---
.../relational/AbstractMergeSortJoinOperator.java | 17 ++++++++++++++++-
.../rule/TransformFilteringSemiJoinToInnerJoin.java | 3 ---
.../plan/relational/type/InternalTypeManager.java | 3 ---
.../org/apache/iotdb/commons/conf/CommonConfig.java | 2 +-
4 files changed, 17 insertions(+), 8 deletions(-)
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/relational/AbstractMergeSortJoinOperator.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/relational/AbstractMergeSortJoinOperator.java
index fed9c0b6501..8a10e881211 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/relational/AbstractMergeSortJoinOperator.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/relational/AbstractMergeSortJoinOperator.java
@@ -267,7 +267,9 @@ public abstract class AbstractMergeSortJoinOperator extends
AbstractOperator {
protected void gotCandidateBlocks() throws Exception {
if (!leftBlockNotEmpty()) {
if (leftChild.hasNextWithTimer()) {
- leftBlock = leftChild.nextWithTimer();
+ TsBlock block = leftChild.nextWithTimer();
+ pruneLastNullValuesOfBlock(block);
+ leftBlock = block;
leftIndex = 0;
} else {
leftFinished = true;
@@ -282,6 +284,7 @@ public abstract class AbstractMergeSortJoinOperator extends
AbstractOperator {
} else {
if (rightChild.hasNextWithTimer()) {
TsBlock block = rightChild.nextWithTimer();
+ pruneLastNullValuesOfBlock(block);
if (block != null && !block.isEmpty()) {
addRightBlockWithMemoryReservation(block);
}
@@ -296,6 +299,18 @@ public abstract class AbstractMergeSortJoinOperator
extends AbstractOperator {
}
}
+ protected void pruneLastNullValuesOfBlock(TsBlock block) {
+ if (block == null) {
+ return;
+ }
+ int lastNonNullIndex = block.getPositionCount() - 1;
+ while (lastNonNullIndex >= 0
+ && block.getColumn(rightJoinKeyPosition).isNull(lastNonNullIndex)) {
+ lastNonNullIndex--;
+ }
+ block.setPositionCount(lastNonNullIndex + 1);
+ }
+
protected void tryCacheNextRightTsBlock() throws Exception {
if (!rightConsumedUp && rightChild.hasNextWithTimer()) {
TsBlock block = rightChild.nextWithTimer();
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/iterative/rule/TransformFilteringSemiJoinToInnerJoin.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/iterative/rule/TransformFilteringSemiJoinToInnerJoin.java
index 90de0f94cbb..67f814af661 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/iterative/rule/TransformFilteringSemiJoinToInnerJoin.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/iterative/rule/TransformFilteringSemiJoinToInnerJoin.java
@@ -87,9 +87,6 @@ public class TransformFilteringSemiJoinToInnerJoin implements
Rule<FilterNode> {
@Override
public Result apply(FilterNode filterNode, Captures captures, Context
context) {
- if (true) {
- return Result.empty();
- }
SemiJoinNode semiJoin = captures.get(SEMI_JOIN);
Symbol semiJoinSymbol = semiJoin.getSemiJoinOutput();
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/type/InternalTypeManager.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/type/InternalTypeManager.java
index b3b7fb77154..a92d9292418 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/type/InternalTypeManager.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/type/InternalTypeManager.java
@@ -76,9 +76,6 @@ public class InternalTypeManager implements TypeManager {
private void addParametricType(ParametricType parametricType) {
String name = parametricType.getName().toLowerCase(Locale.ENGLISH);
- if ("ROW".equals(name)) {
- name = "row";
- }
checkArgument(
!parametricTypes.containsKey(name), "Parametric type already
registered: %s", name);
parametricTypes.putIfAbsent(name, parametricType);
diff --git
a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/conf/CommonConfig.java
b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/conf/CommonConfig.java
index e5e5341023a..2d1585d6525 100644
---
a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/conf/CommonConfig.java
+++
b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/conf/CommonConfig.java
@@ -544,7 +544,7 @@ public class CommonConfig {
}
public double getDiskSpaceWarningThreshold() {
- return 0.00005;
+ return diskSpaceWarningThreshold;
}
public void setDiskSpaceWarningThreshold(double diskSpaceWarningThreshold) {