This is an automated email from the ASF dual-hosted git repository.
kxiao pushed a commit to branch branch-2.0
in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/branch-2.0 by this push:
new e748b9462ab remove the key when priv is empty (#29522) (#29647)
e748b9462ab is described below
commit e748b9462ab117ec188c407de3b08316201f7384
Author: zhangdong <[email protected]>
AuthorDate: Mon Jan 8 23:46:40 2024 +0800
remove the key when priv is empty (#29522) (#29647)
---
.../apache/doris/analysis/CreateMaterializedViewStmt.java | 13 ++++++++++++-
.../main/java/org/apache/doris/mysql/privilege/Role.java | 3 +++
2 files changed, 15 insertions(+), 1 deletion(-)
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/analysis/CreateMaterializedViewStmt.java
b/fe/fe-core/src/main/java/org/apache/doris/analysis/CreateMaterializedViewStmt.java
index bfc03d27b76..dc3f519f752 100644
---
a/fe/fe-core/src/main/java/org/apache/doris/analysis/CreateMaterializedViewStmt.java
+++
b/fe/fe-core/src/main/java/org/apache/doris/analysis/CreateMaterializedViewStmt.java
@@ -29,9 +29,13 @@ import org.apache.doris.catalog.PrimitiveType;
import org.apache.doris.catalog.Type;
import org.apache.doris.common.AnalysisException;
import org.apache.doris.common.DdlException;
+import org.apache.doris.common.ErrorCode;
+import org.apache.doris.common.ErrorReport;
import org.apache.doris.common.FeConstants;
import org.apache.doris.common.FeNameFormat;
import org.apache.doris.common.UserException;
+import org.apache.doris.mysql.privilege.PrivPredicate;
+import org.apache.doris.qe.ConnectContext;
import org.apache.doris.rewrite.ExprRewriter;
import org.apache.doris.rewrite.mvrewrite.CountFieldToSum;
@@ -228,6 +232,13 @@ public class CreateMaterializedViewStmt extends DdlStmt {
throw new AnalysisException("The limit clause is not supported in
add materialized view clause, expr:"
+ " limit " + selectStmt.getLimit());
}
+
+ // check access
+ if (!isReplay && ConnectContext.get() != null &&
!Env.getCurrentEnv().getAccessManager()
+ .checkTblPriv(ConnectContext.get(), dbName,
+ baseIndexName, PrivPredicate.ALTER)) {
+
ErrorReport.reportAnalysisException(ErrorCode.ERR_SPECIFIC_ACCESS_DENIED_ERROR,
"ALTER");
+ }
}
public void analyzeSelectClause(Analyzer analyzer) throws
AnalysisException {
@@ -632,7 +643,7 @@ public class CreateMaterializedViewStmt extends DdlStmt {
public static String mvColumnBuilder(Optional<String> functionName, String
sourceColumnName) {
return functionName.map(s -> mvAggregateColumnBuilder(s,
sourceColumnName))
- .orElseGet(() -> mvColumnBuilder(sourceColumnName));
+ .orElseGet(() -> mvColumnBuilder(sourceColumnName));
}
public static String mvColumnBreaker(String name) {
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/mysql/privilege/Role.java
b/fe/fe-core/src/main/java/org/apache/doris/mysql/privilege/Role.java
index 7f1f8bb8efb..9b3356f7939 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/mysql/privilege/Role.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/mysql/privilege/Role.java
@@ -628,6 +628,9 @@ public class Role implements Writable, GsonPostProcessable {
return;
}
existingPriv.remove(privs);
+ if (existingPriv.isEmpty()) {
+ tblPatternToPrivs.remove(tblPattern);
+ }
revokePrivs(tblPattern, privs);
revokeCols(colPrivileges);
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]