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
commit 8a492c2fc4dfbff72abba73f4ffc7d9336d3fa2b Author: Steve Yurong Su <[email protected]> AuthorDate: Wed Sep 1 18:26:17 2021 +0800 DAG builder --- .../iotdb/db/query/expression/Expression.java | 12 ++++-- .../expression/binary/AdditionExpression.java | 10 +++++ .../query/expression/binary/BinaryExpression.java | 43 ++++++++++++++++------ .../expression/binary/DivisionExpression.java | 10 +++++ .../query/expression/binary/ModuloExpression.java | 9 +++++ .../binary/MultiplicationExpression.java | 10 +++++ .../expression/binary/SubtractionExpression.java | 10 +++++ .../query/expression/unary/FunctionExpression.java | 28 +++++++------- .../query/expression/unary/NegationExpression.java | 32 +++++++++++----- .../query/expression/unary/TimeSeriesOperand.java | 23 +++++++++--- .../udf/core/builder/LayerPointReaderBuilder.java | 22 ----------- .../query/udf/core/builder/TransformerBuilder.java | 41 --------------------- .../udf/core/{builder => layer}/DAGBuilder.java | 32 +++++++--------- 13 files changed, 158 insertions(+), 124 deletions(-) diff --git a/server/src/main/java/org/apache/iotdb/db/query/expression/Expression.java b/server/src/main/java/org/apache/iotdb/db/query/expression/Expression.java index 43f792a..9dd75bd 100644 --- a/server/src/main/java/org/apache/iotdb/db/query/expression/Expression.java +++ b/server/src/main/java/org/apache/iotdb/db/query/expression/Expression.java @@ -20,9 +20,12 @@ package org.apache.iotdb.db.query.expression; import org.apache.iotdb.db.exception.query.LogicalOptimizeException; +import org.apache.iotdb.db.exception.query.QueryProcessException; import org.apache.iotdb.db.metadata.PartialPath; +import org.apache.iotdb.db.qp.physical.crud.UDTFPlan; import org.apache.iotdb.db.qp.utils.WildcardsRemover; -import org.apache.iotdb.db.query.udf.core.builder.TransformerBuilder; +import org.apache.iotdb.db.query.udf.core.layer.InputLayer; +import org.apache.iotdb.db.query.udf.core.layer.IntermediateLayer; import java.util.List; import java.util.Map; @@ -48,8 +51,11 @@ public abstract class Expression { public abstract void collectPaths(Set<PartialPath> pathSet); - public abstract void constructTransformerBuilder( - Map<Expression, TransformerBuilder> expressionTransformerBuilderMap); + public abstract IntermediateLayer constructIntermediateLayer( + UDTFPlan udtfPlan, + InputLayer inputLayer, + Map<Expression, IntermediateLayer> expressionIntermediateLayerMap) + throws QueryProcessException; public String getExpressionString() { if (expressionString == null) { diff --git a/server/src/main/java/org/apache/iotdb/db/query/expression/binary/AdditionExpression.java b/server/src/main/java/org/apache/iotdb/db/query/expression/binary/AdditionExpression.java index 5500ba4..3aca060 100644 --- a/server/src/main/java/org/apache/iotdb/db/query/expression/binary/AdditionExpression.java +++ b/server/src/main/java/org/apache/iotdb/db/query/expression/binary/AdditionExpression.java @@ -20,6 +20,9 @@ package org.apache.iotdb.db.query.expression.binary; import org.apache.iotdb.db.query.expression.Expression; +import org.apache.iotdb.db.query.udf.core.reader.LayerPointReader; +import org.apache.iotdb.db.query.udf.core.transformer.ArithmeticAdditionTransformer; +import org.apache.iotdb.db.query.udf.core.transformer.ArithmeticBinaryTransformer; public class AdditionExpression extends BinaryExpression { @@ -28,6 +31,13 @@ public class AdditionExpression extends BinaryExpression { } @Override + protected ArithmeticBinaryTransformer constructTransformer( + LayerPointReader leftParentLayerPointReader, LayerPointReader rightParentLayerPointReader) { + return new ArithmeticAdditionTransformer( + leftParentLayerPointReader, rightParentLayerPointReader); + } + + @Override protected String operator() { return "+"; } 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 36e31d5..4d52793 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 @@ -20,10 +20,15 @@ package org.apache.iotdb.db.query.expression.binary; import org.apache.iotdb.db.exception.query.LogicalOptimizeException; +import org.apache.iotdb.db.exception.query.QueryProcessException; import org.apache.iotdb.db.metadata.PartialPath; +import org.apache.iotdb.db.qp.physical.crud.UDTFPlan; import org.apache.iotdb.db.qp.utils.WildcardsRemover; import org.apache.iotdb.db.query.expression.Expression; -import org.apache.iotdb.db.query.udf.core.builder.TransformerBuilder; +import org.apache.iotdb.db.query.udf.core.layer.InputLayer; +import org.apache.iotdb.db.query.udf.core.layer.IntermediateLayer; +import org.apache.iotdb.db.query.udf.core.reader.LayerPointReader; +import org.apache.iotdb.db.query.udf.core.transformer.ArithmeticBinaryTransformer; import java.util.ArrayList; import java.util.List; @@ -105,21 +110,35 @@ public abstract class BinaryExpression extends Expression { } @Override - public void constructTransformerBuilder( - Map<Expression, TransformerBuilder> expressionTransformerBuilderMap) { - if (expressionTransformerBuilderMap.containsKey(this)) { - return; + public IntermediateLayer constructIntermediateLayer( + UDTFPlan udtfPlan, + InputLayer inputLayer, + Map<Expression, IntermediateLayer> expressionIntermediateLayerMap) + throws QueryProcessException { + if (!expressionIntermediateLayerMap.containsKey(this)) { + IntermediateLayer leftParentIntermediateLayer = + leftExpression.constructIntermediateLayer( + udtfPlan, inputLayer, expressionIntermediateLayerMap); + IntermediateLayer rightParentIntermediateLayer = + rightExpression.constructIntermediateLayer( + udtfPlan, inputLayer, expressionIntermediateLayerMap); + + expressionIntermediateLayerMap.put( + this, + new IntermediateLayer( + constructTransformer( + leftParentIntermediateLayer.constructPointReader(), + rightParentIntermediateLayer.constructPointReader()), + -1, + -1)); } - leftExpression.constructTransformerBuilder(expressionTransformerBuilderMap); - rightExpression.constructTransformerBuilder(expressionTransformerBuilderMap); - - TransformerBuilder transformerBuilder = new TransformerBuilder(this); - transformerBuilder.addDependentExpression(leftExpression); - transformerBuilder.addDependentExpression(rightExpression); - expressionTransformerBuilderMap.put(this, transformerBuilder); + return expressionIntermediateLayerMap.get(this); } + protected abstract ArithmeticBinaryTransformer constructTransformer( + LayerPointReader leftParentLayerPointReader, LayerPointReader rightParentLayerPointReader); + public Expression getLeftExpression() { return leftExpression; } diff --git a/server/src/main/java/org/apache/iotdb/db/query/expression/binary/DivisionExpression.java b/server/src/main/java/org/apache/iotdb/db/query/expression/binary/DivisionExpression.java index e611887..9d8a613 100644 --- a/server/src/main/java/org/apache/iotdb/db/query/expression/binary/DivisionExpression.java +++ b/server/src/main/java/org/apache/iotdb/db/query/expression/binary/DivisionExpression.java @@ -20,6 +20,9 @@ package org.apache.iotdb.db.query.expression.binary; import org.apache.iotdb.db.query.expression.Expression; +import org.apache.iotdb.db.query.udf.core.reader.LayerPointReader; +import org.apache.iotdb.db.query.udf.core.transformer.ArithmeticBinaryTransformer; +import org.apache.iotdb.db.query.udf.core.transformer.ArithmeticDivisionTransformer; public class DivisionExpression extends BinaryExpression { @@ -28,6 +31,13 @@ public class DivisionExpression extends BinaryExpression { } @Override + protected ArithmeticBinaryTransformer constructTransformer( + LayerPointReader leftParentLayerPointReader, LayerPointReader rightParentLayerPointReader) { + return new ArithmeticDivisionTransformer( + leftParentLayerPointReader, rightParentLayerPointReader); + } + + @Override protected String operator() { return "/"; } diff --git a/server/src/main/java/org/apache/iotdb/db/query/expression/binary/ModuloExpression.java b/server/src/main/java/org/apache/iotdb/db/query/expression/binary/ModuloExpression.java index 94dd905..464e623 100644 --- a/server/src/main/java/org/apache/iotdb/db/query/expression/binary/ModuloExpression.java +++ b/server/src/main/java/org/apache/iotdb/db/query/expression/binary/ModuloExpression.java @@ -20,6 +20,9 @@ package org.apache.iotdb.db.query.expression.binary; import org.apache.iotdb.db.query.expression.Expression; +import org.apache.iotdb.db.query.udf.core.reader.LayerPointReader; +import org.apache.iotdb.db.query.udf.core.transformer.ArithmeticBinaryTransformer; +import org.apache.iotdb.db.query.udf.core.transformer.ArithmeticModuloTransformer; public class ModuloExpression extends BinaryExpression { @@ -28,6 +31,12 @@ public class ModuloExpression extends BinaryExpression { } @Override + protected ArithmeticBinaryTransformer constructTransformer( + LayerPointReader leftParentLayerPointReader, LayerPointReader rightParentLayerPointReader) { + return new ArithmeticModuloTransformer(leftParentLayerPointReader, rightParentLayerPointReader); + } + + @Override protected String operator() { return "%"; } diff --git a/server/src/main/java/org/apache/iotdb/db/query/expression/binary/MultiplicationExpression.java b/server/src/main/java/org/apache/iotdb/db/query/expression/binary/MultiplicationExpression.java index ae3d17b..420e2c7 100644 --- a/server/src/main/java/org/apache/iotdb/db/query/expression/binary/MultiplicationExpression.java +++ b/server/src/main/java/org/apache/iotdb/db/query/expression/binary/MultiplicationExpression.java @@ -20,6 +20,9 @@ package org.apache.iotdb.db.query.expression.binary; import org.apache.iotdb.db.query.expression.Expression; +import org.apache.iotdb.db.query.udf.core.reader.LayerPointReader; +import org.apache.iotdb.db.query.udf.core.transformer.ArithmeticBinaryTransformer; +import org.apache.iotdb.db.query.udf.core.transformer.ArithmeticMultiplicationTransformer; public class MultiplicationExpression extends BinaryExpression { @@ -28,6 +31,13 @@ public class MultiplicationExpression extends BinaryExpression { } @Override + protected ArithmeticBinaryTransformer constructTransformer( + LayerPointReader leftParentLayerPointReader, LayerPointReader rightParentLayerPointReader) { + return new ArithmeticMultiplicationTransformer( + leftParentLayerPointReader, rightParentLayerPointReader); + } + + @Override protected String operator() { return "*"; } diff --git a/server/src/main/java/org/apache/iotdb/db/query/expression/binary/SubtractionExpression.java b/server/src/main/java/org/apache/iotdb/db/query/expression/binary/SubtractionExpression.java index 65bcf50..3eb918e 100644 --- a/server/src/main/java/org/apache/iotdb/db/query/expression/binary/SubtractionExpression.java +++ b/server/src/main/java/org/apache/iotdb/db/query/expression/binary/SubtractionExpression.java @@ -20,6 +20,9 @@ package org.apache.iotdb.db.query.expression.binary; import org.apache.iotdb.db.query.expression.Expression; +import org.apache.iotdb.db.query.udf.core.reader.LayerPointReader; +import org.apache.iotdb.db.query.udf.core.transformer.ArithmeticBinaryTransformer; +import org.apache.iotdb.db.query.udf.core.transformer.ArithmeticSubtractionTransformer; public class SubtractionExpression extends BinaryExpression { @@ -28,6 +31,13 @@ public class SubtractionExpression extends BinaryExpression { } @Override + protected ArithmeticBinaryTransformer constructTransformer( + LayerPointReader leftParentLayerPointReader, LayerPointReader rightParentLayerPointReader) { + return new ArithmeticSubtractionTransformer( + leftParentLayerPointReader, rightParentLayerPointReader); + } + + @Override protected String operator() { return "-"; } 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 2bb05b0..4773ae4 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 @@ -20,12 +20,15 @@ package org.apache.iotdb.db.query.expression.unary; import org.apache.iotdb.db.exception.query.LogicalOptimizeException; +import org.apache.iotdb.db.exception.query.QueryProcessException; import org.apache.iotdb.db.metadata.PartialPath; import org.apache.iotdb.db.qp.constant.SQLConstant; +import org.apache.iotdb.db.qp.physical.crud.UDTFPlan; import org.apache.iotdb.db.qp.strategy.optimizer.ConcatPathOptimizer; import org.apache.iotdb.db.qp.utils.WildcardsRemover; import org.apache.iotdb.db.query.expression.Expression; -import org.apache.iotdb.db.query.udf.core.builder.TransformerBuilder; +import org.apache.iotdb.db.query.udf.core.layer.InputLayer; +import org.apache.iotdb.db.query.udf.core.layer.IntermediateLayer; import java.util.ArrayList; import java.util.Iterator; @@ -144,21 +147,20 @@ public class FunctionExpression extends Expression { } @Override - public void constructTransformerBuilder( - Map<Expression, TransformerBuilder> expressionTransformerBuilderMap) { - if (expressionTransformerBuilderMap.containsKey(this)) { - return; - } + public IntermediateLayer constructIntermediateLayer( + UDTFPlan udtfPlan, + InputLayer inputLayer, + Map<Expression, IntermediateLayer> expressionIntermediateLayerMap) + throws QueryProcessException { + if (!expressionIntermediateLayerMap.containsKey(this)) { + for (Expression expression : expressions) { + expression.constructIntermediateLayer(udtfPlan, inputLayer, expressionIntermediateLayerMap); + } - for (Expression expression : expressions) { - expression.constructTransformerBuilder(expressionTransformerBuilderMap); + // todo! } - TransformerBuilder transformerBuilder = new TransformerBuilder(this); - for (Expression expression : expressions) { - transformerBuilder.addDependentExpression(expression); - } - expressionTransformerBuilderMap.put(this, transformerBuilder); + return expressionIntermediateLayerMap.get(this); } public List<PartialPath> getPaths() { 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 2c6fb45..355eca0 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 @@ -20,10 +20,14 @@ package org.apache.iotdb.db.query.expression.unary; import org.apache.iotdb.db.exception.query.LogicalOptimizeException; +import org.apache.iotdb.db.exception.query.QueryProcessException; import org.apache.iotdb.db.metadata.PartialPath; +import org.apache.iotdb.db.qp.physical.crud.UDTFPlan; import org.apache.iotdb.db.qp.utils.WildcardsRemover; import org.apache.iotdb.db.query.expression.Expression; -import org.apache.iotdb.db.query.udf.core.builder.TransformerBuilder; +import org.apache.iotdb.db.query.udf.core.layer.InputLayer; +import org.apache.iotdb.db.query.udf.core.layer.IntermediateLayer; +import org.apache.iotdb.db.query.udf.core.transformer.ArithmeticNegationTransformer; import java.util.ArrayList; import java.util.List; @@ -72,17 +76,25 @@ public class NegationExpression extends Expression { } @Override - public void constructTransformerBuilder( - Map<Expression, TransformerBuilder> expressionTransformerBuilderMap) { - if (expressionTransformerBuilderMap.containsKey(this)) { - return; - } + public IntermediateLayer constructIntermediateLayer( + UDTFPlan udtfPlan, + InputLayer inputLayer, + Map<Expression, IntermediateLayer> expressionIntermediateLayerMap) + throws QueryProcessException { + if (!expressionIntermediateLayerMap.containsKey(this)) { + IntermediateLayer parentIntermediateLayer = + expression.constructIntermediateLayer( + udtfPlan, inputLayer, expressionIntermediateLayerMap); - expression.constructTransformerBuilder(expressionTransformerBuilderMap); + expressionIntermediateLayerMap.put( + this, + new IntermediateLayer( + new ArithmeticNegationTransformer(parentIntermediateLayer.constructPointReader()), + -1, + -1)); + } - TransformerBuilder transformerBuilder = new TransformerBuilder(this); - transformerBuilder.addDependentExpression(expression); - expressionTransformerBuilderMap.put(this, transformerBuilder); + return expressionIntermediateLayerMap.get(this); } @Override diff --git a/server/src/main/java/org/apache/iotdb/db/query/expression/unary/TimeSeriesOperand.java b/server/src/main/java/org/apache/iotdb/db/query/expression/unary/TimeSeriesOperand.java index 478e214..208a760 100644 --- a/server/src/main/java/org/apache/iotdb/db/query/expression/unary/TimeSeriesOperand.java +++ b/server/src/main/java/org/apache/iotdb/db/query/expression/unary/TimeSeriesOperand.java @@ -20,10 +20,13 @@ package org.apache.iotdb.db.query.expression.unary; import org.apache.iotdb.db.exception.query.LogicalOptimizeException; +import org.apache.iotdb.db.exception.query.QueryProcessException; import org.apache.iotdb.db.metadata.PartialPath; +import org.apache.iotdb.db.qp.physical.crud.UDTFPlan; import org.apache.iotdb.db.qp.utils.WildcardsRemover; import org.apache.iotdb.db.query.expression.Expression; -import org.apache.iotdb.db.query.udf.core.builder.TransformerBuilder; +import org.apache.iotdb.db.query.udf.core.layer.InputLayer; +import org.apache.iotdb.db.query.udf.core.layer.IntermediateLayer; import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType; import java.util.List; @@ -68,11 +71,21 @@ public class TimeSeriesOperand extends Expression { } @Override - public void constructTransformerBuilder( - Map<Expression, TransformerBuilder> expressionTransformerBuilderMap) { - if (!expressionTransformerBuilderMap.containsKey(this)) { - expressionTransformerBuilderMap.put(this, new TransformerBuilder(this)); + public IntermediateLayer constructIntermediateLayer( + UDTFPlan udtfPlan, + InputLayer inputLayer, + Map<Expression, IntermediateLayer> expressionIntermediateLayerMap) + throws QueryProcessException { + if (!expressionIntermediateLayerMap.containsKey(this)) { + expressionIntermediateLayerMap.put( + this, + new IntermediateLayer( + inputLayer.constructPointReader(udtfPlan.getReaderIndex(path.getFullPath())), + -1, + -1)); } + + return expressionIntermediateLayerMap.get(this); } @Override diff --git a/server/src/main/java/org/apache/iotdb/db/query/udf/core/builder/LayerPointReaderBuilder.java b/server/src/main/java/org/apache/iotdb/db/query/udf/core/builder/LayerPointReaderBuilder.java deleted file mode 100644 index ed96576..0000000 --- a/server/src/main/java/org/apache/iotdb/db/query/udf/core/builder/LayerPointReaderBuilder.java +++ /dev/null @@ -1,22 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.apache.iotdb.db.query.udf.core.builder; - -public class LayerPointReaderBuilder {} diff --git a/server/src/main/java/org/apache/iotdb/db/query/udf/core/builder/TransformerBuilder.java b/server/src/main/java/org/apache/iotdb/db/query/udf/core/builder/TransformerBuilder.java deleted file mode 100644 index f365876..0000000 --- a/server/src/main/java/org/apache/iotdb/db/query/udf/core/builder/TransformerBuilder.java +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.apache.iotdb.db.query.udf.core.builder; - -import org.apache.iotdb.db.query.expression.Expression; - -import java.util.LinkedList; -import java.util.List; - -public class TransformerBuilder { - - private final Expression expression; - - private final List<Expression> dependencies; - - public TransformerBuilder(Expression expression) { - this.expression = expression; - dependencies = new LinkedList<>(); - } - - public void addDependentExpression(Expression dependentExpression) { - dependencies.add(dependentExpression); - } -} diff --git a/server/src/main/java/org/apache/iotdb/db/query/udf/core/builder/DAGBuilder.java b/server/src/main/java/org/apache/iotdb/db/query/udf/core/layer/DAGBuilder.java similarity index 75% rename from server/src/main/java/org/apache/iotdb/db/query/udf/core/builder/DAGBuilder.java rename to server/src/main/java/org/apache/iotdb/db/query/udf/core/layer/DAGBuilder.java index d8dc64e..472ca2d 100644 --- a/server/src/main/java/org/apache/iotdb/db/query/udf/core/builder/DAGBuilder.java +++ b/server/src/main/java/org/apache/iotdb/db/query/udf/core/layer/DAGBuilder.java @@ -17,8 +17,9 @@ * under the License. */ -package org.apache.iotdb.db.query.udf.core.builder; +package org.apache.iotdb.db.query.udf.core.layer; +import org.apache.iotdb.db.exception.query.QueryProcessException; import org.apache.iotdb.db.qp.physical.crud.UDTFPlan; import org.apache.iotdb.db.query.expression.Expression; import org.apache.iotdb.db.query.expression.ResultColumn; @@ -32,6 +33,7 @@ import java.util.Map; public class DAGBuilder { private final UDTFPlan udtfPlan; + private final InputLayer inputLayer; // input private final List<Expression> resultColumnExpressions; @@ -40,38 +42,32 @@ public class DAGBuilder { // all result column expressions will be split into several sub-expressions, each expression has // its own transformer. different result column expressions may have the same sub-expressions, - // but they can share the same transformer. we cache the transformer builder here to make sure - // that only one transformer will be built for one expression. - private final Map<Expression, TransformerBuilder> expressionTransformerBuilderMap; + // but they can share the same transformer. we cache the transformer here to make sure that only + // one transformer will be built for one expression. + private final Map<Expression, IntermediateLayer> expressionIntermediateLayerMap; - public DAGBuilder(UDTFPlan udtfPlan) { + public DAGBuilder(UDTFPlan udtfPlan, InputLayer inputLayer) throws QueryProcessException { this.udtfPlan = udtfPlan; + this.inputLayer = inputLayer; + resultColumnExpressions = new ArrayList<>(); for (ResultColumn resultColumn : udtfPlan.getResultColumns()) { resultColumnExpressions.add(resultColumn.getExpression()); } resultColumnTransformers = new Transformer[resultColumnExpressions.size()]; - expressionTransformerBuilderMap = new HashMap<>(); - build(); - } + expressionIntermediateLayerMap = new HashMap<>(); - public void build() { - constructTransformerBuilder(); - buildTransformer(); - buildDAG(); + build(); } - private void constructTransformerBuilder() { + public void build() throws QueryProcessException { for (Expression resultColumnExpression : resultColumnExpressions) { - resultColumnExpression.constructTransformerBuilder(expressionTransformerBuilderMap); + resultColumnExpression.constructIntermediateLayer( + udtfPlan, inputLayer, expressionIntermediateLayerMap); } } - private void buildTransformer() {} - - private void buildDAG() {} - public Transformer[] getResultColumnTransformers() { return resultColumnTransformers; }
