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) {

Reply via email to