diff --git a/fe/fe-core/src/main/java/org/apache/doris/load/update/UpdatePlanner.java b/fe/fe-core/src/main/java/org/apache/doris/load/update/UpdatePlanner.java index aaadd114e2..a452730a1d 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/load/update/UpdatePlanner.java +++ b/fe/fe-core/src/main/java/org/apache/doris/load/update/UpdatePlanner.java @@ -30,6 +30,7 @@ import org.apache.doris.catalog.OlapTable; import org.apache.doris.common.AnalysisException; import org.apache.doris.common.IdGenerator; import org.apache.doris.common.UserException; +import org.apache.doris.common.util.VectorizedUtil; import org.apache.doris.planner.DataPartition; import org.apache.doris.planner.OlapScanNode; import org.apache.doris.planner.OlapTableSink; @@ -86,6 +87,9 @@ public class UpdatePlanner extends Planner { /* END */ olapScanNode.init(analyzer); olapScanNode.finalize(analyzer); + if (VectorizedUtil.isVectorized()) { + olapScanNode.convertToVectoriezd(); + } scanNodeList.add(olapScanNode); // 2. gen olap table sink OlapTableSink olapTableSink = new OlapTableSink(targetTable, computeTargetTupleDesc(), null); diff --git a/fe/fe-core/src/main/java/org/apache/doris/load/update/UpdateStmtExecutor.java b/fe/fe-core/src/main/java/org/apache/doris/load/update/UpdateStmtExecutor.java index e1ec792f89..f6a3d49175 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/load/update/UpdateStmtExecutor.java +++ b/fe/fe-core/src/main/java/org/apache/doris/load/update/UpdateStmtExecutor.java @@ -34,6 +34,7 @@ import org.apache.doris.common.QuotaExceedException; import org.apache.doris.common.UserException; import org.apache.doris.common.util.DebugUtil; import org.apache.doris.common.util.TimeUtils; +import org.apache.doris.common.util.VectorizedUtil; import org.apache.doris.metric.MetricRepo; import org.apache.doris.qe.Coordinator; import org.apache.doris.qe.QeProcessorImpl; @@ -141,6 +142,7 @@ public class UpdateStmtExecutor { coordinator = new Coordinator(Catalog.getCurrentCatalog().getNextId(), queryId, analyzer.getDescTbl(), updatePlanner.getFragments(), updatePlanner.getScanNodes(), TimeUtils.DEFAULT_TIME_ZONE, false); coordinator.setQueryType(TQueryType.LOAD); + coordinator.setExecVecEngine(VectorizedUtil.isVectorized()); QeProcessorImpl.INSTANCE.registerQuery(queryId, coordinator); analyzer.getContext().getExecutor().setCoord(coordinator); diff --git a/fe/fe-core/src/main/java/org/apache/doris/planner/HashJoinNode.java b/fe/fe-core/src/main/java/org/apache/doris/planner/HashJoinNode.java index 2ee261874f..8015fb7c39 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/planner/HashJoinNode.java +++ b/fe/fe-core/src/main/java/org/apache/doris/planner/HashJoinNode.java @@ -669,7 +669,7 @@ public class HashJoinNode extends PlanNode { } @Override - void convertToVectoriezd() { + public void convertToVectoriezd() { if (!otherJoinConjuncts.isEmpty()) { votherJoinConjunct = convertConjunctsToAndCompoundPredicate(otherJoinConjuncts); initCompoundPredicate(votherJoinConjunct); diff --git a/fe/fe-core/src/main/java/org/apache/doris/planner/PlanNode.java b/fe/fe-core/src/main/java/org/apache/doris/planner/PlanNode.java index a6003f304f..e076021340 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/planner/PlanNode.java +++ b/fe/fe-core/src/main/java/org/apache/doris/planner/PlanNode.java @@ -860,7 +860,7 @@ abstract public class PlanNode extends TreeNode { return sb.toString(); } - void convertToVectoriezd() { + public void convertToVectoriezd() { if (!conjuncts.isEmpty()) { vconjunct = convertConjunctsToAndCompoundPredicate(conjuncts); initCompoundPredicate(vconjunct); diff --git a/fe/fe-core/src/main/java/org/apache/doris/qe/Coordinator.java b/fe/fe-core/src/main/java/org/apache/doris/qe/Coordinator.java index 7834565863..83f1ad80ab 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/qe/Coordinator.java +++ b/fe/fe-core/src/main/java/org/apache/doris/qe/Coordinator.java @@ -301,6 +301,10 @@ public class Coordinator { this.queryOptions.setQueryType(type); } + public void setExecVecEngine(boolean vec) { + this.queryOptions.setEnableVectorizedEngine(vec); + } + public Status getExecStatus() { return queryStatus; }