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 2023/10/07 07:50:46 UTC
[doris] 03/06: [fix](planner) statement run successful but log error msg in audit log (#24628)
This is an automated email from the ASF dual-hosted git repository.
morningman pushed a commit to branch branch-1.2-lts
in repository https://gitbox.apache.org/repos/asf/doris.git
commit faf0588e009836284a55281643a9d1d4ad1f47f0
Author: morrySnow <10...@users.noreply.github.com>
AuthorDate: Wed Sep 20 11:32:47 2023 +0800
[fix](planner) statement run successful but log error msg in audit log (#24628)
legacy planner will set error msg when throw AnalysisException.
However, in some place, we catch these exception and muted them.
So, we should reset back error msg and error code.
---
fe/fe-core/src/main/java/org/apache/doris/analysis/CastExpr.java | 3 +++
.../src/main/java/org/apache/doris/analysis/DateLiteral.java | 4 ++++
.../main/java/org/apache/doris/analysis/DefaultValueExprDef.java | 4 ++++
.../main/java/org/apache/doris/analysis/ExpressionFunctions.java | 6 ++++++
.../src/main/java/org/apache/doris/analysis/GroupByClause.java | 4 ++++
.../src/main/java/org/apache/doris/analysis/IntLiteral.java | 4 ++++
.../src/main/java/org/apache/doris/analysis/QueryStmt.java | 4 ++++
.../src/main/java/org/apache/doris/analysis/SelectStmt.java | 9 +++++++++
.../main/java/org/apache/doris/datasource/InternalCatalog.java | 3 +++
.../main/java/org/apache/doris/rewrite/FoldConstantsRule.java | 6 ++++++
.../org/apache/doris/rewrite/RewriteBinaryPredicatesRule.java | 4 ++++
.../java/org/apache/doris/rewrite/RewriteDateLiteralRule.java | 4 ++++
.../java/org/apache/doris/rewrite/RewriteInPredicateRule.java | 7 +++++++
.../org/apache/doris/rewrite/mvrewrite/MVExprEquivalent.java | 1 +
14 files changed, 63 insertions(+)
diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/CastExpr.java b/fe/fe-core/src/main/java/org/apache/doris/analysis/CastExpr.java
index e364de5279a..51c8f5a257f 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/CastExpr.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/CastExpr.java
@@ -408,6 +408,9 @@ public class CastExpr extends Expr {
try {
targetExpr = castTo((LiteralExpr) value);
} catch (AnalysisException ae) {
+ if (ConnectContext.get() != null) {
+ ConnectContext.get().getState().reset();
+ }
targetExpr = this;
} catch (NumberFormatException nfe) {
targetExpr = new NullLiteral();
diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/DateLiteral.java b/fe/fe-core/src/main/java/org/apache/doris/analysis/DateLiteral.java
index 6e07904869f..f1716ad830c 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/DateLiteral.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/DateLiteral.java
@@ -26,6 +26,7 @@ import org.apache.doris.catalog.Type;
import org.apache.doris.common.AnalysisException;
import org.apache.doris.common.Config;
import org.apache.doris.common.InvalidFormatException;
+import org.apache.doris.qe.ConnectContext;
import org.apache.doris.thrift.TDateLiteral;
import org.apache.doris.thrift.TExprNode;
import org.apache.doris.thrift.TExprNodeType;
@@ -648,6 +649,9 @@ public class DateLiteral extends LiteralExpr {
try {
checkValueValid();
} catch (AnalysisException e) {
+ if (ConnectContext.get() != null) {
+ ConnectContext.get().getState().reset();
+ }
// If date value is invalid, set this to null
msg.node_type = TExprNodeType.NULL_LITERAL;
msg.setIsNullable(true);
diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/DefaultValueExprDef.java b/fe/fe-core/src/main/java/org/apache/doris/analysis/DefaultValueExprDef.java
index adccf078c6f..d5b2d0548f3 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/DefaultValueExprDef.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/DefaultValueExprDef.java
@@ -22,6 +22,7 @@ package org.apache.doris.analysis;
import org.apache.doris.catalog.Type;
import org.apache.doris.common.AnalysisException;
+import org.apache.doris.qe.ConnectContext;
import com.google.gson.annotations.SerializedName;
import org.apache.log4j.LogManager;
@@ -48,6 +49,9 @@ public class DefaultValueExprDef {
try {
expr.analyzeImplForDefaultValue(type);
} catch (AnalysisException e) {
+ if (ConnectContext.get() != null) {
+ ConnectContext.get().getState().reset();
+ }
LOG.warn("analyzeImplForDefaultValue fail: {}", e);
}
return expr;
diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/ExpressionFunctions.java b/fe/fe-core/src/main/java/org/apache/doris/analysis/ExpressionFunctions.java
index 8a3fa649d3d..4357c35011b 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/ExpressionFunctions.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/ExpressionFunctions.java
@@ -104,6 +104,9 @@ public enum ExpressionFunctions {
try {
((DateLiteral) dateLiteral).checkValueValid();
} catch (AnalysisException e) {
+ if (ConnectContext.get() != null) {
+ ConnectContext.get().getState().reset();
+ }
return NullLiteral.create(dateLiteral.getType());
}
return dateLiteral;
@@ -111,6 +114,9 @@ public enum ExpressionFunctions {
return invoker.invoke(constExpr.getChildrenWithoutCast());
}
} catch (AnalysisException e) {
+ if (ConnectContext.get() != null) {
+ ConnectContext.get().getState().reset();
+ }
LOG.debug("failed to invoke", e);
return constExpr;
}
diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/GroupByClause.java b/fe/fe-core/src/main/java/org/apache/doris/analysis/GroupByClause.java
index 7e66ae85fa3..f6305e611da 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/GroupByClause.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/GroupByClause.java
@@ -19,6 +19,7 @@ package org.apache.doris.analysis;
import org.apache.doris.catalog.Type;
import org.apache.doris.common.AnalysisException;
+import org.apache.doris.qe.ConnectContext;
import com.google.common.base.Preconditions;
import com.google.common.base.Predicates;
@@ -124,6 +125,9 @@ public class GroupByClause implements ParseNode {
try {
genGroupingExprs();
} catch (AnalysisException e) {
+ if (ConnectContext.get() != null) {
+ ConnectContext.get().getState().reset();
+ }
LOG.error("gen grouping expr error:", e);
return null;
}
diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/IntLiteral.java b/fe/fe-core/src/main/java/org/apache/doris/analysis/IntLiteral.java
index 8933ec496e1..4e4a2fc8366 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/IntLiteral.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/IntLiteral.java
@@ -21,6 +21,7 @@ import org.apache.doris.catalog.PrimitiveType;
import org.apache.doris.catalog.Type;
import org.apache.doris.common.AnalysisException;
import org.apache.doris.common.NotImplementedException;
+import org.apache.doris.qe.ConnectContext;
import org.apache.doris.thrift.TExprNode;
import org.apache.doris.thrift.TExprNodeType;
import org.apache.doris.thrift.TIntLiteral;
@@ -321,6 +322,9 @@ public class IntLiteral extends LiteralExpr {
res.setType(targetType);
return res;
} catch (AnalysisException e) {
+ if (ConnectContext.get() != null) {
+ ConnectContext.get().getState().reset();
+ }
//invalid date format. leave it to BE to cast it as NULL
}
} else if (targetType.isStringType()) {
diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/QueryStmt.java b/fe/fe-core/src/main/java/org/apache/doris/analysis/QueryStmt.java
index 5c0f24f2f7c..c3ec3adbb8c 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/QueryStmt.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/QueryStmt.java
@@ -27,6 +27,7 @@ import org.apache.doris.common.ErrorCode;
import org.apache.doris.common.ErrorReport;
import org.apache.doris.common.UserException;
import org.apache.doris.common.util.VectorizedUtil;
+import org.apache.doris.qe.ConnectContext;
import org.apache.doris.rewrite.ExprRewriter;
import com.google.common.base.Preconditions;
@@ -440,6 +441,9 @@ public abstract class QueryStmt extends StatementBase implements Queriable {
substituteExpr = expr.clone();
substituteExpr.analyze(analyzer);
} catch (AnalysisException ex) {
+ if (ConnectContext.get() != null) {
+ ConnectContext.get().getState().reset();
+ }
// then consider alias name
substituteExpr = expr.trySubstitute(aliasSMap, analyzer, false);
}
diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/SelectStmt.java b/fe/fe-core/src/main/java/org/apache/doris/analysis/SelectStmt.java
index 4b5836074f0..1ed0960411c 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/SelectStmt.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/SelectStmt.java
@@ -1053,6 +1053,9 @@ public class SelectStmt extends QueryStmt {
excludeAliasSMap.removeByLhsExpr(expr);
} catch (AnalysisException ex) {
// according to case3, column name do not exist, keep alias name inside alias map
+ if (ConnectContext.get() != null) {
+ ConnectContext.get().getState().reset();
+ }
}
}
havingClauseAfterAnalyzed = havingClause.substitute(excludeAliasSMap, analyzer, false);
@@ -1603,6 +1606,9 @@ public class SelectStmt extends QueryStmt {
}
} catch (AnalysisException ex) {
//ignore any exception
+ if (ConnectContext.get() != null) {
+ ConnectContext.get().getState().reset();
+ }
}
rewriter.rewriteList(oriGroupingExprs, analyzer);
// after rewrite, need reset the analyze status for later re-analyze
@@ -1624,6 +1630,9 @@ public class SelectStmt extends QueryStmt {
}
} catch (AnalysisException ex) {
//ignore any exception
+ if (ConnectContext.get() != null) {
+ ConnectContext.get().getState().reset();
+ }
}
orderByElem.setExpr(rewriter.rewrite(orderByElem.getExpr(), analyzer));
// after rewrite, need reset the analyze status for later re-analyze
diff --git a/fe/fe-core/src/main/java/org/apache/doris/datasource/InternalCatalog.java b/fe/fe-core/src/main/java/org/apache/doris/datasource/InternalCatalog.java
index aa8f355f777..3d631309d7f 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/datasource/InternalCatalog.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/datasource/InternalCatalog.java
@@ -1214,6 +1214,9 @@ public class InternalCatalog implements CatalogIf<Database> {
try {
FeNameFormat.checkColumnName(name);
} catch (AnalysisException exception) {
+ if (ConnectContext.get() != null) {
+ ConnectContext.get().getState().reset();
+ }
name = "_col" + (colNameIndex++);
}
TypeDef typeDef;
diff --git a/fe/fe-core/src/main/java/org/apache/doris/rewrite/FoldConstantsRule.java b/fe/fe-core/src/main/java/org/apache/doris/rewrite/FoldConstantsRule.java
index 5a6f140557b..3a1a7188d1b 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/rewrite/FoldConstantsRule.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/rewrite/FoldConstantsRule.java
@@ -250,6 +250,9 @@ public class FoldConstantsRule implements ExprRewriteRule {
VariableMgr.fillValue(ConnectContext.get().getSessionVariable(), (SysVariableDesc) expr);
literalExpr = ((SysVariableDesc) expr).getLiteralExpr();
} catch (AnalysisException e) {
+ if (ConnectContext.get() != null) {
+ ConnectContext.get().getState().reset();
+ }
LOG.warn("failed to get session variable value: " + ((SysVariableDesc) expr).getName());
}
}
@@ -276,6 +279,9 @@ public class FoldConstantsRule implements ExprRewriteRule {
literalExpr = LiteralExpr.create(str, type);
infoFnMap.put(expr.getId().toString(), literalExpr);
} catch (AnalysisException e) {
+ if (ConnectContext.get() != null) {
+ ConnectContext.get().getState().reset();
+ }
LOG.warn("failed to get const expr value from InformationFunction: {}", e.getMessage());
}
diff --git a/fe/fe-core/src/main/java/org/apache/doris/rewrite/RewriteBinaryPredicatesRule.java b/fe/fe-core/src/main/java/org/apache/doris/rewrite/RewriteBinaryPredicatesRule.java
index ba86efa1389..75a0526b368 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/rewrite/RewriteBinaryPredicatesRule.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/rewrite/RewriteBinaryPredicatesRule.java
@@ -29,6 +29,7 @@ import org.apache.doris.analysis.LiteralExpr;
import org.apache.doris.analysis.SlotRef;
import org.apache.doris.catalog.Type;
import org.apache.doris.common.AnalysisException;
+import org.apache.doris.qe.ConnectContext;
/**
* Rewrite binary predicate.
@@ -100,6 +101,9 @@ public class RewriteBinaryPredicatesRule implements ExprRewriteRule {
// case 3
return new BinaryPredicate(op, expr0.castTo(expr0ColumnType), newExpr);
} catch (AnalysisException e) {
+ if (ConnectContext.get() != null) {
+ ConnectContext.get().getState().reset();
+ }
// case 1
IntLiteral colTypeMinValue = IntLiteral.createMinValue(expr0ColumnType);
IntLiteral colTypeMaxValue = IntLiteral.createMaxValue(expr0ColumnType);
diff --git a/fe/fe-core/src/main/java/org/apache/doris/rewrite/RewriteDateLiteralRule.java b/fe/fe-core/src/main/java/org/apache/doris/rewrite/RewriteDateLiteralRule.java
index 5c78c3358cc..e3615bcc990 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/rewrite/RewriteDateLiteralRule.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/rewrite/RewriteDateLiteralRule.java
@@ -26,6 +26,7 @@ import org.apache.doris.analysis.LiteralExpr;
import org.apache.doris.analysis.NullLiteral;
import org.apache.doris.catalog.ScalarType;
import org.apache.doris.common.AnalysisException;
+import org.apache.doris.qe.ConnectContext;
/**
* this rule try to convert date expression, if date is invalid, it will be
@@ -67,6 +68,9 @@ public class RewriteDateLiteralRule implements ExprRewriteRule {
dateLiteral.setType(ScalarType.getDefaultDateType(dateLiteral.getType()));
expr.setChild(1, dateLiteral);
} catch (AnalysisException e) {
+ if (ConnectContext.get() != null) {
+ ConnectContext.get().getState().reset();
+ }
if (clauseType == ExprRewriter.ClauseType.OTHER_CLAUSE) {
return new NullLiteral();
} else {
diff --git a/fe/fe-core/src/main/java/org/apache/doris/rewrite/RewriteInPredicateRule.java b/fe/fe-core/src/main/java/org/apache/doris/rewrite/RewriteInPredicateRule.java
index acf26abffb5..c04ff432961 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/rewrite/RewriteInPredicateRule.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/rewrite/RewriteInPredicateRule.java
@@ -27,6 +27,7 @@ import org.apache.doris.analysis.SlotRef;
import org.apache.doris.analysis.Subquery;
import org.apache.doris.catalog.Type;
import org.apache.doris.common.AnalysisException;
+import org.apache.doris.qe.ConnectContext;
import org.apache.doris.rewrite.ExprRewriter.ClauseType;
import com.google.common.collect.Lists;
@@ -98,6 +99,9 @@ public class RewriteInPredicateRule implements ExprRewriteRule {
try {
childExpr = (LiteralExpr) childExpr.castTo(Type.DECIMALV2);
} catch (AnalysisException e) {
+ if (ConnectContext.get() != null) {
+ ConnectContext.get().getState().reset();
+ }
continue;
}
}
@@ -116,6 +120,9 @@ public class RewriteInPredicateRule implements ExprRewriteRule {
newInList.add(newExpr);
}
} catch (AnalysisException ignored) {
+ if (ConnectContext.get() != null) {
+ ConnectContext.get().getState().reset();
+ }
// pass
}
}
diff --git a/fe/fe-core/src/main/java/org/apache/doris/rewrite/mvrewrite/MVExprEquivalent.java b/fe/fe-core/src/main/java/org/apache/doris/rewrite/mvrewrite/MVExprEquivalent.java
index d36df4d2935..2c202246c59 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/rewrite/mvrewrite/MVExprEquivalent.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/rewrite/mvrewrite/MVExprEquivalent.java
@@ -18,6 +18,7 @@
package org.apache.doris.rewrite.mvrewrite;
import org.apache.doris.analysis.Expr;
+import org.apache.doris.qe.ConnectContext;
import com.google.common.collect.ImmutableList;
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@doris.apache.org
For additional commands, e-mail: commits-help@doris.apache.org