This is an automated email from the ASF dual-hosted git repository.
lancelly pushed a commit to branch support_correlated_scalar_subquery
in repository https://gitbox.apache.org/repos/asf/iotdb.git
The following commit(s) were added to
refs/heads/support_correlated_scalar_subquery by this push:
new 6faee6f51aa fix typo in failFunctionTransformer
6faee6f51aa is described below
commit 6faee6f51aa3809f4a140dafd2cd59aa15e4215b
Author: lancelly <[email protected]>
AuthorDate: Sun Jan 26 11:07:17 2025 +0800
fix typo in failFunctionTransformer
---
.../execution/operator/process/FilterAndProjectOperator.java | 3 +++
.../plan/relational/metadata/TableMetadataImpl.java | 3 +++
.../iterative/rule/TransformCorrelatedScalarSubquery.java | 2 ++
.../dag/column/FailFunctionColumnTransformer.java | 10 +++++++++-
4 files changed, 17 insertions(+), 1 deletion(-)
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/FilterAndProjectOperator.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/FilterAndProjectOperator.java
index c759c3a0fdf..df186534df4 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/FilterAndProjectOperator.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/FilterAndProjectOperator.java
@@ -24,6 +24,7 @@ import
org.apache.iotdb.db.queryengine.execution.operator.Operator;
import org.apache.iotdb.db.queryengine.execution.operator.OperatorContext;
import
org.apache.iotdb.db.queryengine.transformation.dag.column.AbstractCaseWhenThenColumnTransformer;
import
org.apache.iotdb.db.queryengine.transformation.dag.column.ColumnTransformer;
+import
org.apache.iotdb.db.queryengine.transformation.dag.column.FailFunctionColumnTransformer;
import
org.apache.iotdb.db.queryengine.transformation.dag.column.binary.BinaryColumnTransformer;
import
org.apache.iotdb.db.queryengine.transformation.dag.column.leaf.IdentityColumnTransformer;
import
org.apache.iotdb.db.queryengine.transformation.dag.column.leaf.LeafColumnTransformer;
@@ -407,6 +408,8 @@ public class FilterAndProjectOperator implements
ProcessOperator {
.getElseTransformer()));
childMaxLevel = Math.max(childMaxLevel, childCount + 2);
return childMaxLevel;
+ } else if (columnTransformer instanceof FailFunctionColumnTransformer) {
+ return 0;
} else {
throw new UnsupportedOperationException("Unsupported ColumnTransformer");
}
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/metadata/TableMetadataImpl.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/metadata/TableMetadataImpl.java
index 607b1c37135..10b980ec053 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/metadata/TableMetadataImpl.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/metadata/TableMetadataImpl.java
@@ -72,6 +72,7 @@ import java.util.Objects;
import java.util.Optional;
import java.util.stream.Collectors;
+import static
org.apache.iotdb.db.queryengine.transformation.dag.column.FailFunctionColumnTransformer.FAIL_FUNCTION_NAME;
import static org.apache.tsfile.read.common.type.BinaryType.TEXT;
import static org.apache.tsfile.read.common.type.BooleanType.BOOLEAN;
import static org.apache.tsfile.read.common.type.DateType.DATE;
@@ -541,6 +542,8 @@ public class TableMetadataImpl implements Metadata {
+ " must have at least two arguments, and first argument must
be char type.");
}
return STRING;
+ } else if (FAIL_FUNCTION_NAME.equalsIgnoreCase(functionName)) {
+ return UNKNOWN;
}
// builtin aggregation function
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/iterative/rule/TransformCorrelatedScalarSubquery.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/iterative/rule/TransformCorrelatedScalarSubquery.java
index d1171f75ec4..3dcb42f5ddd 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/iterative/rule/TransformCorrelatedScalarSubquery.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/iterative/rule/TransformCorrelatedScalarSubquery.java
@@ -91,6 +91,8 @@ import static
org.apache.tsfile.read.common.type.LongType.INT64;
* </pre>
*
* <p>This must be run after aggregation decorrelation rules.
+ *
+ * <p>This rule is used to support non-aggregation scalar subquery.
*/
public class TransformCorrelatedScalarSubquery implements
Rule<CorrelatedJoinNode> {
private static final Pattern<CorrelatedJoinNode> PATTERN =
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/FailFunctionColumnTransformer.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/FailFunctionColumnTransformer.java
index 0c52fee6f77..41632d7be1a 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/FailFunctionColumnTransformer.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/FailFunctionColumnTransformer.java
@@ -21,6 +21,7 @@ package
org.apache.iotdb.db.queryengine.transformation.dag.column;
import org.apache.iotdb.db.exception.sql.SemanticException;
+import org.apache.tsfile.read.common.block.column.NullColumn;
import org.apache.tsfile.read.common.type.Type;
/**
@@ -44,7 +45,14 @@ public class FailFunctionColumnTransformer extends
ColumnTransformer {
@Override
public void evaluateWithSelection(boolean[] selection) {
- throw new SemanticException(errorMsg);
+ // if there is true value in selection, throw exception
+ for (boolean b : selection) {
+ if (b) {
+ throw new SemanticException(errorMsg);
+ }
+ }
+ // Result of fail function should be ignored, we just fake the output here.
+ initializeColumnCache(new NullColumn(1));
}
@Override