You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by ro...@apache.org on 2021/09/09 02:52:03 UTC

[iotdb] branch nested-operations updated: fix updateStatisticsForMemoryAssigner

This is an automated email from the ASF dual-hosted git repository.

rong pushed a commit to branch nested-operations
in repository https://gitbox.apache.org/repos/asf/iotdb.git


The following commit(s) were added to refs/heads/nested-operations by this push:
     new 0137667  fix updateStatisticsForMemoryAssigner
0137667 is described below

commit 013766750822ad8472eff6963f6edf462c5efc34
Author: Steve Yurong Su <ro...@apache.org>
AuthorDate: Thu Sep 9 10:50:25 2021 +0800

    fix updateStatisticsForMemoryAssigner
---
 .../iotdb/db/query/expression/binary/BinaryExpression.java       | 5 +++--
 .../iotdb/db/query/expression/unary/FunctionExpression.java      | 3 ++-
 .../iotdb/db/query/expression/unary/NegationExpression.java      | 1 +
 .../org/apache/iotdb/db/query/udf/core/layer/DAGBuilder.java     | 1 -
 .../iotdb/db/query/udf/core/layer/LayerMemoryAssigner.java       | 9 +++++----
 5 files changed, 11 insertions(+), 8 deletions(-)

diff --git a/server/src/main/java/org/apache/iotdb/db/query/expression/binary/BinaryExpression.java b/server/src/main/java/org/apache/iotdb/db/query/expression/binary/BinaryExpression.java
index 49bbee6..0591084 100644
--- a/server/src/main/java/org/apache/iotdb/db/query/expression/binary/BinaryExpression.java
+++ b/server/src/main/java/org/apache/iotdb/db/query/expression/binary/BinaryExpression.java
@@ -125,8 +125,9 @@ public abstract class BinaryExpression extends Expression {
 
   @Override
   public void updateStatisticsForMemoryAssigner(LayerMemoryAssigner memoryAssigner) {
-    memoryAssigner.increaseExpressionReference(leftExpression);
-    memoryAssigner.increaseExpressionReference(rightExpression);
+    leftExpression.updateStatisticsForMemoryAssigner(memoryAssigner);
+    rightExpression.updateStatisticsForMemoryAssigner(memoryAssigner);
+    memoryAssigner.increaseExpressionReference(this);
   }
 
   @Override
diff --git a/server/src/main/java/org/apache/iotdb/db/query/expression/unary/FunctionExpression.java b/server/src/main/java/org/apache/iotdb/db/query/expression/unary/FunctionExpression.java
index 72f64e1..da32a48 100644
--- a/server/src/main/java/org/apache/iotdb/db/query/expression/unary/FunctionExpression.java
+++ b/server/src/main/java/org/apache/iotdb/db/query/expression/unary/FunctionExpression.java
@@ -176,7 +176,8 @@ public class FunctionExpression extends Expression {
   @Override
   public void updateStatisticsForMemoryAssigner(LayerMemoryAssigner memoryAssigner) {
     for (Expression expression : expressions) {
-      memoryAssigner.increaseExpressionReference(expression);
+      expression.updateStatisticsForMemoryAssigner(memoryAssigner);
+      memoryAssigner.increaseExpressionReference(this);
     }
   }
 
diff --git a/server/src/main/java/org/apache/iotdb/db/query/expression/unary/NegationExpression.java b/server/src/main/java/org/apache/iotdb/db/query/expression/unary/NegationExpression.java
index 955e2e4..9e97677 100644
--- a/server/src/main/java/org/apache/iotdb/db/query/expression/unary/NegationExpression.java
+++ b/server/src/main/java/org/apache/iotdb/db/query/expression/unary/NegationExpression.java
@@ -90,6 +90,7 @@ public class NegationExpression extends Expression {
 
   @Override
   public void updateStatisticsForMemoryAssigner(LayerMemoryAssigner memoryAssigner) {
+    expression.updateStatisticsForMemoryAssigner(memoryAssigner);
     memoryAssigner.increaseExpressionReference(this);
   }
 
diff --git a/server/src/main/java/org/apache/iotdb/db/query/udf/core/layer/DAGBuilder.java b/server/src/main/java/org/apache/iotdb/db/query/udf/core/layer/DAGBuilder.java
index ca403c1..d69422a 100644
--- a/server/src/main/java/org/apache/iotdb/db/query/udf/core/layer/DAGBuilder.java
+++ b/server/src/main/java/org/apache/iotdb/db/query/udf/core/layer/DAGBuilder.java
@@ -68,7 +68,6 @@ public class DAGBuilder {
 
   public DAGBuilder buildLayerMemoryAssigner() {
     for (Expression expression : resultColumnExpressions) {
-      memoryAssigner.increaseExpressionReference(expression);
       expression.updateStatisticsForMemoryAssigner(memoryAssigner);
     }
     memoryAssigner.build();
diff --git a/server/src/main/java/org/apache/iotdb/db/query/udf/core/layer/LayerMemoryAssigner.java b/server/src/main/java/org/apache/iotdb/db/query/udf/core/layer/LayerMemoryAssigner.java
index afa2298..2f71b74 100644
--- a/server/src/main/java/org/apache/iotdb/db/query/udf/core/layer/LayerMemoryAssigner.java
+++ b/server/src/main/java/org/apache/iotdb/db/query/udf/core/layer/LayerMemoryAssigner.java
@@ -40,10 +40,11 @@ public class LayerMemoryAssigner {
   }
 
   public void increaseExpressionReference(Expression expression) {
-    if (!expressionReferenceCount.containsKey(expression)) {
-      expressionReferenceCount.put(expression, 1);
-    }
-    expressionReferenceCount.put(expression, 1 + expressionReferenceCount.get(expression));
+    expressionReferenceCount.put(
+        expression,
+        expressionReferenceCount.containsKey(expression)
+            ? 1 + expressionReferenceCount.get(expression)
+            : 1);
   }
 
   public void build() {