You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@doris.apache.org by mo...@apache.org on 2022/06/28 09:17:06 UTC
[doris] 01/01: [hotfix] change hive, broker, iceberg table query to non-vec engine
This is an automated email from the ASF dual-hosted git repository.
morningman pushed a commit to branch dev-1.0.1
in repository https://gitbox.apache.org/repos/asf/doris.git
commit 190a243349eacbd618adf33ba60f643352fcfcb6
Author: morningman <mo...@163.com>
AuthorDate: Fri Jun 24 13:03:04 2022 +0800
[hotfix] change hive, broker, iceberg table query to non-vec engine
---
.../java/org/apache/doris/analysis/FromClause.java | 37 +++++++++++++++++++++-
.../apache/doris/common/util/VectorizedUtil.java | 18 +----------
.../java/org/apache/doris/qe/StmtExecutor.java | 4 +--
thirdparty/vars.sh | 2 +-
4 files changed, 39 insertions(+), 22 deletions(-)
diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/FromClause.java b/fe/fe-core/src/main/java/org/apache/doris/analysis/FromClause.java
index be71841967..0ff6c71b0a 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/FromClause.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/FromClause.java
@@ -20,11 +20,14 @@ package org.apache.doris.analysis;
import org.apache.doris.catalog.Database;
import org.apache.doris.catalog.Table;
+import org.apache.doris.catalog.Table.TableType;
import org.apache.doris.cluster.ClusterNamespace;
import org.apache.doris.common.AnalysisException;
import org.apache.doris.common.ErrorCode;
import org.apache.doris.common.ErrorReport;
import org.apache.doris.common.UserException;
+import org.apache.doris.common.VecNotImplException;
+import org.apache.doris.common.util.VectorizedUtil;
import com.google.common.base.Preconditions;
import com.google.common.base.Strings;
@@ -145,15 +148,47 @@ public class FromClause implements ParseNode, Iterable<TableRef> {
leftTblRef = tblRef;
}
+ checkExternalTable(analyzer);
// TODO: remove when query from hive table is supported
checkFromHiveTable(analyzer);
analyzed_ = true;
}
+ private void checkExternalTable(Analyzer analyzer) throws UserException {
+ for (TableRef tblRef : tableRefs_) {
+ if (!(tblRef instanceof BaseTableRef)) {
+ continue;
+ }
+
+ TableName tableName = tblRef.getName();
+ String dbName = tableName.getDb();
+ if (Strings.isNullOrEmpty(dbName)) {
+ dbName = analyzer.getDefaultDb();
+ } else {
+ dbName = ClusterNamespace.getFullName(analyzer.getClusterName(), tblRef.getName().getDb());
+ }
+ if (Strings.isNullOrEmpty(dbName)) {
+ ErrorReport.reportAnalysisException(ErrorCode.ERR_NO_DB_ERROR);
+ }
+
+ Database db = analyzer.getCatalog().getDbOrAnalysisException(dbName);
+ String tblName = tableName.getTbl();
+ Table table = db.getTableOrAnalysisException(tblName);
+ if (VectorizedUtil.isVectorized()) {
+ if (table.getType() == TableType.BROKER && table.getType() == TableType.HIVE
+ && table.getType() == TableType.ICEBERG) {
+ throw new VecNotImplException("Not support table type " + table.getType() + " in vec engine");
+ }
+ }
+ }
+ }
+
public FromClause clone() {
ArrayList<TableRef> clone = Lists.newArrayList();
- for (TableRef tblRef: tableRefs_) clone.add(tblRef.clone());
+ for (TableRef tblRef : tableRefs_) {
+ clone.add(tblRef.clone());
+ }
return new FromClause(clone);
}
diff --git a/fe/fe-core/src/main/java/org/apache/doris/common/util/VectorizedUtil.java b/fe/fe-core/src/main/java/org/apache/doris/common/util/VectorizedUtil.java
index d8fc1f55f3..7e3a501ebd 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/common/util/VectorizedUtil.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/common/util/VectorizedUtil.java
@@ -39,20 +39,6 @@ public class VectorizedUtil {
return connectContext.getSessionVariable().enableVectorizedEngine();
}
- /**
- * The purpose of this function is to turn off the vectorization switch for the current query.
- * When the vectorization engine cannot meet the requirements of the current query,
- * it will convert the current query into a non-vectorized query.
- * Note that this will only change the **vectorization switch for a single query**,
- * and will not affect other queries in the same session.
- * Therefore, even if the vectorization switch of the current query is turned off,
- * the vectorization properties of subsequent queries will not be affected.
- *
- * Session: set enable_vectorized_engine=true;
- * Query1: select * from table (vec)
- * Query2: select * from t1 left join (select count(*) as count from t2) t3 on t1.k1=t3.count (switch to non-vec)
- * Query3: select * from table (still vec)
- */
public static void switchToQueryNonVec() {
ConnectContext connectContext = ConnectContext.get();
if (connectContext == null) {
@@ -61,9 +47,7 @@ public class VectorizedUtil {
SessionVariable sessionVariable = connectContext.getSessionVariable();
sessionVariable.setIsSingleSetVar(true);
try {
- VariableMgr.setVar(sessionVariable, new SetVar(
- "enable_vectorized_engine",
- new StringLiteral("false")));
+ VariableMgr.setVar(sessionVariable, new SetVar("enable_vectorized_engine", new StringLiteral("false")));
} catch (DdlException e) {
// do nothing
}
diff --git a/fe/fe-core/src/main/java/org/apache/doris/qe/StmtExecutor.java b/fe/fe-core/src/main/java/org/apache/doris/qe/StmtExecutor.java
index 2f1124234d..db4251206b 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/qe/StmtExecutor.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/qe/StmtExecutor.java
@@ -120,7 +120,7 @@ import com.google.common.base.Strings;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import com.google.common.collect.Sets;
-
+import com.google.protobuf.ByteString;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.apache.thrift.TException;
@@ -139,8 +139,6 @@ import java.util.concurrent.TimeoutException;
import java.util.concurrent.atomic.AtomicLong;
import java.util.stream.Collectors;
-import com.google.protobuf.ByteString;
-
// Do one COM_QUERY process.
// first: Parse receive byte array to statement struct.
// second: Do handle function for statement.
diff --git a/thirdparty/vars.sh b/thirdparty/vars.sh
index d0121cfc95..8d9ce00628 100755
--- a/thirdparty/vars.sh
+++ b/thirdparty/vars.sh
@@ -45,7 +45,7 @@ export TP_LIB_DIR=$TP_INSTALL_DIR/lib
export TP_JAR_DIR=$TP_INSTALL_DIR/lib/jar
# source of all dependencies, default unuse it
-export REPOSITORY_URL=https://doris-thirdparty-hk-1308700295.cos.ap-hongkong.myqcloud.com/thirdparty
+export REPOSITORY_URL=
#####################################################
# Download url, filename and unpaced filename
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@doris.apache.org
For additional commands, e-mail: commits-help@doris.apache.org