This is an automated email from the ASF dual-hosted git repository. morrysnow pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/master by this push: new 3970183fec3 [clean](planner) row policy removes dependency on the old optimizer (#51122) 3970183fec3 is described below commit 3970183fec3d002c6dd429af5265b40d7779e19c Author: zhangdong <zhangd...@selectdb.com> AuthorDate: Thu May 22 19:23:21 2025 +0800 [clean](planner) row policy removes dependency on the old optimizer (#51122) - Change "Expr" to "Expression" in RowPolicy - Remove the logic of rewriting using row policy in the old optimizer - Remove the logic for creating row policies based on CreatePolicyStmt --- fe/fe-core/src/main/cup/sql_parser.cup | 16 -- .../apache/doris/analysis/CreatePolicyStmt.java | 161 --------------------- .../org/apache/doris/analysis/StmtRewriter.java | 67 +-------- .../trees/plans/commands/CreatePolicyCommand.java | 2 +- .../main/java/org/apache/doris/policy/Policy.java | 28 ---- .../java/org/apache/doris/policy/PolicyMgr.java | 55 ------- .../java/org/apache/doris/policy/RowPolicy.java | 41 ++---- .../main/java/org/apache/doris/qe/DdlExecutor.java | 3 - .../java/org/apache/doris/alter/AlterTest.java | 9 +- .../java/org/apache/doris/policy/PolicyTest.java | 4 +- .../apache/doris/utframe/TestWithFeService.java | 7 +- 11 files changed, 31 insertions(+), 362 deletions(-) diff --git a/fe/fe-core/src/main/cup/sql_parser.cup b/fe/fe-core/src/main/cup/sql_parser.cup index 8abddccf7d3..e72a6d66d15 100644 --- a/fe/fe-core/src/main/cup/sql_parser.cup +++ b/fe/fe-core/src/main/cup/sql_parser.cup @@ -2051,22 +2051,6 @@ create_stmt ::= {: RESULT = new CreateSqlBlockRuleStmt(ifNotExists, ruleName, properties); :} - /* row policy */ - | KW_CREATE KW_ROW KW_POLICY opt_if_not_exists:ifNotExists ident:policyName KW_ON table_name:tbl KW_AS ident:filterType KW_TO user_identity:user - KW_USING LPAREN expr:wherePredicate RPAREN - {: - RESULT = new CreatePolicyStmt(PolicyTypeEnum.ROW, ifNotExists, policyName, tbl, filterType, user, null, wherePredicate); - :} - | KW_CREATE KW_ROW KW_POLICY opt_if_not_exists:ifNotExists ident:policyName KW_ON table_name:tbl KW_AS ident:filterType KW_TO KW_ROLE ident:role - KW_USING LPAREN expr:wherePredicate RPAREN - {: - RESULT = new CreatePolicyStmt(PolicyTypeEnum.ROW, ifNotExists, policyName, tbl, filterType, null, role, wherePredicate); - :} - /* storage policy */ - | KW_CREATE KW_STORAGE KW_POLICY opt_if_not_exists:ifNotExists ident:policyName opt_properties:properties - {: - RESULT = new CreatePolicyStmt(PolicyTypeEnum.STORAGE, ifNotExists, policyName, properties); - :} | KW_BUILD KW_INDEX ident:indexName KW_ON table_name:tableName opt_partition_names:partitionNames {: RESULT = new AlterTableStmt(tableName, Lists.newArrayList(new BuildIndexClause(tableName, indexName, partitionNames, false))); diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/CreatePolicyStmt.java b/fe/fe-core/src/main/java/org/apache/doris/analysis/CreatePolicyStmt.java deleted file mode 100644 index 9905fd03ee1..00000000000 --- a/fe/fe-core/src/main/java/org/apache/doris/analysis/CreatePolicyStmt.java +++ /dev/null @@ -1,161 +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.doris.analysis; - -import org.apache.doris.catalog.Env; -import org.apache.doris.common.Config; -import org.apache.doris.common.ErrorCode; -import org.apache.doris.common.ErrorReport; -import org.apache.doris.common.UserException; -import org.apache.doris.common.util.PrintableMap; -import org.apache.doris.mysql.privilege.PrivPredicate; -import org.apache.doris.policy.FilterType; -import org.apache.doris.policy.PolicyTypeEnum; -import org.apache.doris.qe.ConnectContext; - -import lombok.Getter; - -import java.util.Map; - -/** - * Create policy statement. - * syntax: - * CREATE ROW POLICY [IF NOT EXISTS] test_row_policy ON test_table AS {PERMISSIVE|RESTRICTIVE} TO user USING (a = ’xxx‘) - */ -public class CreatePolicyStmt extends DdlStmt implements NotFallbackInParser { - - @Getter - private final PolicyTypeEnum type; - - @Getter - private final boolean ifNotExists; - - @Getter - private final String policyName; - - @Getter - private TableName tableName = null; - - @Getter - private FilterType filterType = null; - - @Getter - private UserIdentity user = null; - - @Getter - private String roleName = null; - - @Getter - private Expr wherePredicate; - - @Getter - private Map<String, String> properties; - - /** - * Use for cup. - **/ - public CreatePolicyStmt(PolicyTypeEnum type, boolean ifNotExists, String policyName, TableName tableName, - String filterType, UserIdentity user, String roleName, Expr wherePredicate) { - this.type = type; - this.ifNotExists = ifNotExists; - this.policyName = policyName; - this.tableName = tableName; - this.filterType = FilterType.of(filterType); - this.user = user; - this.roleName = roleName; - this.wherePredicate = wherePredicate; - } - - /** - * Use for cup. - */ - public CreatePolicyStmt(PolicyTypeEnum type, boolean ifNotExists, String policyName, - Map<String, String> properties) { - this.type = type; - this.ifNotExists = ifNotExists; - this.policyName = policyName; - this.properties = properties; - } - - @Override - public void analyze(Analyzer analyzer) throws UserException { - super.analyze(analyzer); - switch (type) { - case STORAGE: - if (!Config.enable_storage_policy) { - throw new UserException("storage policy feature is disabled by default. " - + "Enable it by setting 'enable_storage_policy=true' in fe.conf"); - } - // check auth - // check if can create policy and use storage_resource - if (!Env.getCurrentEnv().getAccessManager() - .checkGlobalPriv(ConnectContext.get(), PrivPredicate.ADMIN)) { - ErrorReport.reportAnalysisException(ErrorCode.ERR_SPECIFIC_ACCESS_DENIED_ERROR, - PrivPredicate.ADMIN.getPrivs().toString()); - } - break; - case ROW: - default: - tableName.analyze(analyzer); - if (user != null) { - user.analyze(); - if (user.isRootUser() || user.isAdminUser()) { - ErrorReport.reportAnalysisException(ErrorCode.ERR_TABLEACCESS_DENIED_ERROR, "CreatePolicyStmt", - user.getQualifiedUser(), user.getHost(), tableName.getTbl()); - } - } - // check auth - if (!Env.getCurrentEnv().getAccessManager() - .checkGlobalPriv(ConnectContext.get(), PrivPredicate.GRANT)) { - ErrorReport.reportAnalysisException(ErrorCode.ERR_SPECIFIC_ACCESS_DENIED_ERROR, - PrivPredicate.GRANT.getPrivs().toString()); - } - } - } - - @Override - public String toSql() { - StringBuilder sb = new StringBuilder(); - sb.append("CREATE ").append(type).append(" POLICY "); - if (ifNotExists) { - sb.append("IF NOT EXISTS"); - } - sb.append(policyName); - switch (type) { - case STORAGE: - sb.append(" PROPERTIES(").append(new PrintableMap<>(properties, " = ", true, false)).append(")"); - break; - case ROW: - default: - sb.append(" ON ").append(tableName.toSql()).append(" AS ").append(filterType) - .append(" TO "); - if (user == null) { - sb.append("ROLE ").append(roleName); - } else { - sb.append(user.getQualifiedUser()); - } - sb.append(" USING ").append(wherePredicate.toSql()); - } - return sb.toString(); - } - - @Override - public StmtType stmtType() { - return StmtType.CREATE; - } -} diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/StmtRewriter.java b/fe/fe-core/src/main/java/org/apache/doris/analysis/StmtRewriter.java index 8fcd54b4a1d..b363140df06 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/analysis/StmtRewriter.java +++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/StmtRewriter.java @@ -24,7 +24,6 @@ import org.apache.doris.catalog.AggStateType; import org.apache.doris.catalog.AggregateType; import org.apache.doris.catalog.Column; import org.apache.doris.catalog.DistributionInfo; -import org.apache.doris.catalog.Env; import org.apache.doris.catalog.FunctionSet; import org.apache.doris.catalog.KeysType; import org.apache.doris.catalog.OlapTable; @@ -34,7 +33,6 @@ import org.apache.doris.catalog.Type; import org.apache.doris.common.AnalysisException; import org.apache.doris.common.TableAliasGenerator; import org.apache.doris.common.UserException; -import org.apache.doris.policy.RowPolicy; import org.apache.doris.qe.ConnectContext; import com.google.common.base.Preconditions; @@ -1309,69 +1307,8 @@ public class StmtRewriter { } public static boolean rewriteByPolicy(StatementBase statementBase, Analyzer analyzer) throws UserException { - Env currentEnv = Env.getCurrentEnv(); - UserIdentity currentUserIdentity = ConnectContext.get().getCurrentUserIdentity(); - if (currentUserIdentity.isRootUser() || currentUserIdentity.isAdminUser()) { - return false; - } - - if (!(statementBase instanceof SelectStmt)) { - return false; - } - SelectStmt selectStmt = (SelectStmt) statementBase; - boolean reAnalyze = false; - for (int i = 0; i < selectStmt.fromClause.size(); i++) { - TableRef tableRef = selectStmt.fromClause.get(i); - // Recursively rewrite subquery - if (tableRef instanceof InlineViewRef) { - InlineViewRef viewRef = (InlineViewRef) tableRef; - if (rewriteByPolicy(viewRef.getQueryStmt(), analyzer)) { - reAnalyze = true; - } - continue; - } - if (!(tableRef instanceof BaseTableRef)) { - continue; - } - String tableName = tableRef.getName().getTbl(); - String dbName = tableRef.getName().getDb(); - if (dbName == null) { - dbName = analyzer.getDefaultDb(); - } - String ctlName = tableRef.getName().getCtl(); - if (ctlName == null) { - ctlName = analyzer.getDefaultCatalog(); - } - RowPolicy matchPolicy = currentEnv.getPolicyMgr() - .getMatchTablePolicy(ctlName, dbName, tableName, currentUserIdentity); - if (matchPolicy == null) { - continue; - } - SelectList selectList = new SelectList(); - selectList.addItem(SelectListItem.createStarItem(tableRef.getAliasAsName())); - - SelectStmt stmt = new SelectStmt(selectList, - new FromClause(Lists.newArrayList(tableRef)), - matchPolicy.getWherePredicate().clone(), - null, - null, - null, - LimitElement.NO_LIMIT); - InlineViewRef inlineViewRef = new InlineViewRef(tableRef.getAliasAsName().getTbl(), stmt); - inlineViewRef.setJoinOp(tableRef.joinOp); - inlineViewRef.setLeftTblRef(tableRef.leftTblRef); - inlineViewRef.setOnClause(tableRef.onClause); - tableRef.joinOp = null; - tableRef.leftTblRef = null; - tableRef.onClause = null; - if (selectStmt.fromClause.size() > i + 1) { - selectStmt.fromClause.get(i + 1).setLeftTblRef(inlineViewRef); - } - selectStmt.fromClause.set(i, inlineViewRef); - selectStmt.analyze(analyzer); - reAnalyze = true; - } - return reAnalyze; + // old planner no use + return false; } /** diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/CreatePolicyCommand.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/CreatePolicyCommand.java index 4984855e0c5..22b511e6bf9 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/CreatePolicyCommand.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/CreatePolicyCommand.java @@ -152,7 +152,7 @@ public class CreatePolicyCommand extends Command implements ForwardWithSync { return new RowPolicy(policyId, policyName, tableNameInfo.getCtl(), tableNameInfo.getDb(), tableNameInfo.getTbl(), user, roleName, executor.getOriginStmt().originStmt, executor.getOriginStmt().idx, filterType.get(), - translateToLegacyExpr(wherePredicate.get(), ctx)); + wherePredicate.get()); default: throw new AnalysisException("Unknown policy type: " + policyType); } diff --git a/fe/fe-core/src/main/java/org/apache/doris/policy/Policy.java b/fe/fe-core/src/main/java/org/apache/doris/policy/Policy.java index 01c5399d4ab..35057e0cd53 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/policy/Policy.java +++ b/fe/fe-core/src/main/java/org/apache/doris/policy/Policy.java @@ -17,9 +17,6 @@ package org.apache.doris.policy; -import org.apache.doris.analysis.CreatePolicyStmt; -import org.apache.doris.analysis.UserIdentity; -import org.apache.doris.catalog.Env; import org.apache.doris.common.AnalysisException; import org.apache.doris.common.DdlException; import org.apache.doris.common.io.Text; @@ -99,31 +96,6 @@ public abstract class Policy implements Writable, GsonPostProcessable { this.version = 0; } - /** - * Trans stmt to Policy. - **/ - public static Policy fromCreateStmt(CreatePolicyStmt stmt) throws AnalysisException { - long policyId = Env.getCurrentEnv().getNextId(); - switch (stmt.getType()) { - case STORAGE: - StoragePolicy storagePolicy = new StoragePolicy(policyId, stmt.getPolicyName()); - storagePolicy.init(stmt.getProperties(), stmt.isIfNotExists()); - return storagePolicy; - case ROW: - // stmt must be analyzed. - UserIdentity userIdent = stmt.getUser(); - if (userIdent != null) { - userIdent.analyze(); - } - return new RowPolicy(policyId, stmt.getPolicyName(), stmt.getTableName().getCtl(), - stmt.getTableName().getDb(), stmt.getTableName().getTbl(), userIdent, stmt.getRoleName(), - stmt.getOrigStmt().originStmt, stmt.getOrigStmt().idx, stmt.getFilterType(), - stmt.getWherePredicate()); - default: - throw new AnalysisException("Unknown policy type: " + stmt.getType()); - } - } - public void modifyProperties(Map<String, String> properties) throws DdlException, AnalysisException { } diff --git a/fe/fe-core/src/main/java/org/apache/doris/policy/PolicyMgr.java b/fe/fe-core/src/main/java/org/apache/doris/policy/PolicyMgr.java index 2a2b1aabe0a..6c90ecd3b3c 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/policy/PolicyMgr.java +++ b/fe/fe-core/src/main/java/org/apache/doris/policy/PolicyMgr.java @@ -18,8 +18,6 @@ package org.apache.doris.policy; import org.apache.doris.analysis.AlterPolicyStmt; -import org.apache.doris.analysis.CompoundPredicate; -import org.apache.doris.analysis.CreatePolicyStmt; import org.apache.doris.analysis.DropPolicyStmt; import org.apache.doris.analysis.ShowPolicyStmt; import org.apache.doris.analysis.ShowStoragePolicyUsingStmt; @@ -47,7 +45,6 @@ import com.google.common.collect.ImmutableList; import com.google.common.collect.Lists; import com.google.common.collect.Maps; import com.google.gson.annotations.SerializedName; -import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -117,13 +114,6 @@ public class PolicyMgr implements Writable { LOG.info("Create default storage success."); } - /** - * Create policy through stmt. - **/ - public void createPolicy(CreatePolicyStmt stmt) throws UserException { - createPolicy(Policy.fromCreateStmt(stmt), stmt.isIfNotExists()); - } - public void createPolicy(Policy policy, boolean isIfNotExists) throws UserException { writeLock(); try { @@ -376,17 +366,6 @@ public class PolicyMgr implements Writable { typeToPolicyMap.put(log.getType(), policies); } - /** - * Match row policy and return it. - **/ - public RowPolicy getMatchTablePolicy(String ctlName, String dbName, String tableName, UserIdentity user) { - List<RowPolicy> res = getUserPolicies(ctlName, dbName, tableName, user); - if (CollectionUtils.isEmpty(res)) { - return null; - } - return mergeRowPolicies(res); - } - public List<RowPolicy> getUserPolicies(String ctlName, String dbName, String tableName, UserIdentity user) { List<RowPolicy> res = Lists.newArrayList(); // Make a judgment in advance to reduce the number of times to obtain getRoles @@ -418,40 +397,6 @@ public class PolicyMgr implements Writable { } } - private RowPolicy mergeRowPolicies(List<RowPolicy> policys) { - if (CollectionUtils.isEmpty(policys)) { - return null; - } - RowPolicy andPolicy = null; - RowPolicy orPolicy = null; - for (RowPolicy rowPolicy : policys) { - if (CompoundPredicate.Operator.AND.equals(rowPolicy.getFilterType().getOp())) { - if (andPolicy == null) { - andPolicy = rowPolicy.clone(); - } else { - andPolicy.setWherePredicate(new CompoundPredicate(CompoundPredicate.Operator.AND, - andPolicy.getWherePredicate(), rowPolicy.getWherePredicate())); - } - } else { - if (orPolicy == null) { - orPolicy = rowPolicy; - } else { - orPolicy.setWherePredicate(new CompoundPredicate(CompoundPredicate.Operator.OR, - orPolicy.getWherePredicate(), rowPolicy.getWherePredicate())); - } - } - } - if (andPolicy == null) { - return orPolicy; - } - if (orPolicy == null) { - return andPolicy; - } - andPolicy.setWherePredicate(new CompoundPredicate(CompoundPredicate.Operator.AND, andPolicy.getWherePredicate(), - orPolicy.getWherePredicate())); - return andPolicy; - } - private ShowResultSet getShowPolicy(Policy finalCheckedPolicy, PolicyTypeEnum type) throws AnalysisException { List<List<String>> rows = Lists.newArrayList(); readLock(); diff --git a/fe/fe-core/src/main/java/org/apache/doris/policy/RowPolicy.java b/fe/fe-core/src/main/java/org/apache/doris/policy/RowPolicy.java index 2b8a492e82c..e83a1191c0b 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/policy/RowPolicy.java +++ b/fe/fe-core/src/main/java/org/apache/doris/policy/RowPolicy.java @@ -17,15 +17,10 @@ package org.apache.doris.policy; -import org.apache.doris.analysis.CreatePolicyStmt; -import org.apache.doris.analysis.Expr; -import org.apache.doris.analysis.SqlParser; -import org.apache.doris.analysis.SqlScanner; import org.apache.doris.analysis.UserIdentity; import org.apache.doris.catalog.Column; import org.apache.doris.catalog.ScalarType; import org.apache.doris.common.AnalysisException; -import org.apache.doris.common.util.SqlParserUtils; import org.apache.doris.mysql.privilege.RowFilterPolicy; import org.apache.doris.nereids.parser.NereidsParser; import org.apache.doris.nereids.trees.expressions.Expression; @@ -40,7 +35,6 @@ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import java.io.IOException; -import java.io.StringReader; import java.util.List; import java.util.Objects; import java.util.Optional; @@ -105,7 +99,7 @@ public class RowPolicy extends Policy implements RowFilterPolicy { @SerializedName(value = "stmtIdx") private int stmtIdx; - private Expr wherePredicate = null; + private Expression wherePredicate = null; public RowPolicy() { super(PolicyTypeEnum.ROW); @@ -126,7 +120,7 @@ public class RowPolicy extends Policy implements RowFilterPolicy { */ public RowPolicy(long policyId, final String policyName, long dbId, UserIdentity user, String roleName, String originStmt, int stmtIdx, - final long tableId, final FilterType filterType, final Expr wherePredicate) { + final long tableId, final FilterType filterType, final Expression wherePredicate) { super(policyId, PolicyTypeEnum.ROW, policyName); this.user = user; this.roleName = roleName; @@ -140,7 +134,7 @@ public class RowPolicy extends Policy implements RowFilterPolicy { public RowPolicy(long policyId, final String policyName, String ctlName, String dbName, String tableName, UserIdentity user, String roleName, - String originStmt, int stmtIdx, final FilterType filterType, final Expr wherePredicate) { + String originStmt, int stmtIdx, final FilterType filterType, final Expression wherePredicate) { super(policyId, PolicyTypeEnum.ROW, policyName); this.user = user; this.roleName = roleName; @@ -164,14 +158,19 @@ public class RowPolicy extends Policy implements RowFilterPolicy { @Override public void gsonPostProcess() throws IOException { - if (wherePredicate != null) { + if (this.wherePredicate != null) { return; } try { - SqlScanner input = new SqlScanner(new StringReader(originStmt), 0L); - SqlParser parser = new SqlParser(input); - CreatePolicyStmt stmt = (CreatePolicyStmt) SqlParserUtils.getStmt(parser, stmtIdx); - wherePredicate = stmt.getWherePredicate(); + NereidsParser nereidsParser = new NereidsParser(); + String sql = getOriginStmt(); + CreatePolicyCommand command = (CreatePolicyCommand) nereidsParser.parseSingle(sql); + Optional<Expression> wherePredicate = command.getWherePredicate(); + if (!wherePredicate.isPresent()) { + LOG.warn("Invalid row policy [" + getPolicyIdent() + "], " + sql); + return; + } + this.wherePredicate = wherePredicate.get(); } catch (Exception e) { String errorMsg = String.format("table policy parse originStmt error, originStmt: %s, stmtIdx: %s.", originStmt, stmtIdx); @@ -224,18 +223,10 @@ public class RowPolicy extends Policy implements RowFilterPolicy { @Override public Expression getFilterExpression() throws AnalysisException { - NereidsParser nereidsParser = new NereidsParser(); - String sql = getOriginStmt(); - if (getStmtIdx() != 0) { - // Under normal circumstances, the index will only be equal to 0 - throw new AnalysisException("Invalid row policy [" + getPolicyIdent() + "], " + sql); + if (wherePredicate == null) { + throw new AnalysisException("Invalid row policy [" + getPolicyIdent() + "], " + getOriginStmt()); } - CreatePolicyCommand command = (CreatePolicyCommand) nereidsParser.parseSingle(sql); - Optional<Expression> wherePredicate = command.getWherePredicate(); - if (!wherePredicate.isPresent()) { - throw new AnalysisException("Invalid row policy [" + getPolicyIdent() + "], " + sql); - } - return wherePredicate.get(); + return wherePredicate; } @Override diff --git a/fe/fe-core/src/main/java/org/apache/doris/qe/DdlExecutor.java b/fe/fe-core/src/main/java/org/apache/doris/qe/DdlExecutor.java index 6d3475dbebe..a43e6949efb 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/qe/DdlExecutor.java +++ b/fe/fe-core/src/main/java/org/apache/doris/qe/DdlExecutor.java @@ -70,7 +70,6 @@ import org.apache.doris.analysis.CreateFileStmt; import org.apache.doris.analysis.CreateFunctionStmt; import org.apache.doris.analysis.CreateJobStmt; import org.apache.doris.analysis.CreateMaterializedViewStmt; -import org.apache.doris.analysis.CreatePolicyStmt; import org.apache.doris.analysis.CreateRepositoryStmt; import org.apache.doris.analysis.CreateResourceStmt; import org.apache.doris.analysis.CreateRoleStmt; @@ -372,8 +371,6 @@ public class DdlExecutor { env.getColocateTableIndex().alterColocateGroup((AlterColocateGroupStmt) ddlStmt); } else if (ddlStmt instanceof AlterWorkloadGroupStmt) { env.getWorkloadGroupMgr().alterWorkloadGroup((AlterWorkloadGroupStmt) ddlStmt); - } else if (ddlStmt instanceof CreatePolicyStmt) { - env.getPolicyMgr().createPolicy((CreatePolicyStmt) ddlStmt); } else if (ddlStmt instanceof DropPolicyStmt) { env.getPolicyMgr().dropPolicy((DropPolicyStmt) ddlStmt); } else if (ddlStmt instanceof AlterPolicyStmt) { diff --git a/fe/fe-core/src/test/java/org/apache/doris/alter/AlterTest.java b/fe/fe-core/src/test/java/org/apache/doris/alter/AlterTest.java index 054c625e895..255ba0bdd37 100644 --- a/fe/fe-core/src/test/java/org/apache/doris/alter/AlterTest.java +++ b/fe/fe-core/src/test/java/org/apache/doris/alter/AlterTest.java @@ -21,7 +21,6 @@ import org.apache.doris.analysis.AlterColocateGroupStmt; import org.apache.doris.analysis.AlterTableStmt; import org.apache.doris.analysis.CreateDbStmt; import org.apache.doris.analysis.CreateMaterializedViewStmt; -import org.apache.doris.analysis.CreatePolicyStmt; import org.apache.doris.analysis.CreateResourceStmt; import org.apache.doris.analysis.CreateTableStmt; import org.apache.doris.analysis.DateLiteral; @@ -49,9 +48,12 @@ import org.apache.doris.common.DdlException; import org.apache.doris.common.ExceptionChecker; import org.apache.doris.common.FeConstants; import org.apache.doris.common.util.TimeUtils; +import org.apache.doris.nereids.parser.NereidsParser; +import org.apache.doris.nereids.trees.plans.commands.CreatePolicyCommand; import org.apache.doris.qe.ConnectContext; import org.apache.doris.qe.DdlExecutor; import org.apache.doris.qe.ShowExecutor; +import org.apache.doris.qe.StmtExecutor; import org.apache.doris.resource.Tag; import org.apache.doris.system.Backend; import org.apache.doris.thrift.TStorageMedium; @@ -265,8 +267,9 @@ public class AlterTest { } private static void createRemoteStoragePolicy(String sql) throws Exception { - CreatePolicyStmt stmt = (CreatePolicyStmt) UtFrameUtils.parseAndAnalyzeStmt(sql, connectContext); - Env.getCurrentEnv().getPolicyMgr().createPolicy(stmt); + NereidsParser nereidsParser = new NereidsParser(); + CreatePolicyCommand command = (CreatePolicyCommand) nereidsParser.parseSingle(sql); + command.run(connectContext, new StmtExecutor(connectContext, sql)); } private static void alterTable(String sql, boolean expectedException) { diff --git a/fe/fe-core/src/test/java/org/apache/doris/policy/PolicyTest.java b/fe/fe-core/src/test/java/org/apache/doris/policy/PolicyTest.java index 7d48be4da9e..dc51c7e871e 100644 --- a/fe/fe-core/src/test/java/org/apache/doris/policy/PolicyTest.java +++ b/fe/fe-core/src/test/java/org/apache/doris/policy/PolicyTest.java @@ -20,7 +20,6 @@ package org.apache.doris.policy; import org.apache.doris.analysis.Analyzer; import org.apache.doris.analysis.CreateRoleStmt; import org.apache.doris.analysis.CreateUserStmt; -import org.apache.doris.analysis.Expr; import org.apache.doris.analysis.GrantStmt; import org.apache.doris.analysis.ShowPolicyStmt; import org.apache.doris.analysis.TablePattern; @@ -34,6 +33,7 @@ import org.apache.doris.common.Config; import org.apache.doris.common.DdlException; import org.apache.doris.common.ExceptionChecker; import org.apache.doris.common.FeConstants; +import org.apache.doris.nereids.trees.expressions.Expression; import org.apache.doris.persist.gson.GsonUtils; import org.apache.doris.utframe.TestWithFeService; @@ -248,7 +248,7 @@ public class PolicyTest extends TestWithFeService { + " AS PERMISSIVE TO test_policy USING (k1 = 1)"; long tableId = 100; FilterType filterType = FilterType.PERMISSIVE; - Expr wherePredicate = null; + Expression wherePredicate = null; Policy rowPolicy = new RowPolicy(10000, policyName, dbId, user, null, originStmt, 0, tableId, filterType, wherePredicate); diff --git a/fe/fe-core/src/test/java/org/apache/doris/utframe/TestWithFeService.java b/fe/fe-core/src/test/java/org/apache/doris/utframe/TestWithFeService.java index 7c629e5ab91..81e4572b065 100644 --- a/fe/fe-core/src/test/java/org/apache/doris/utframe/TestWithFeService.java +++ b/fe/fe-core/src/test/java/org/apache/doris/utframe/TestWithFeService.java @@ -25,7 +25,6 @@ import org.apache.doris.analysis.CreateCatalogStmt; import org.apache.doris.analysis.CreateDbStmt; import org.apache.doris.analysis.CreateFunctionStmt; import org.apache.doris.analysis.CreateMaterializedViewStmt; -import org.apache.doris.analysis.CreatePolicyStmt; import org.apache.doris.analysis.CreateSqlBlockRuleStmt; import org.apache.doris.analysis.CreateTableAsSelectStmt; import org.apache.doris.analysis.CreateTableStmt; @@ -68,6 +67,7 @@ import org.apache.doris.nereids.trees.expressions.StatementScopeIdGenerator; import org.apache.doris.nereids.trees.plans.commands.AddConstraintCommand; import org.apache.doris.nereids.trees.plans.commands.AlterMTMVCommand; import org.apache.doris.nereids.trees.plans.commands.CreateMTMVCommand; +import org.apache.doris.nereids.trees.plans.commands.CreatePolicyCommand; import org.apache.doris.nereids.trees.plans.commands.CreateTableCommand; import org.apache.doris.nereids.trees.plans.commands.DropConstraintCommand; import org.apache.doris.nereids.trees.plans.commands.DropMTMVCommand; @@ -762,8 +762,9 @@ public abstract class TestWithFeService { } protected void createPolicy(String sql) throws Exception { - CreatePolicyStmt createPolicyStmt = (CreatePolicyStmt) parseAndAnalyzeStmt(sql); - Env.getCurrentEnv().getPolicyMgr().createPolicy(createPolicyStmt); + NereidsParser nereidsParser = new NereidsParser(); + CreatePolicyCommand command = (CreatePolicyCommand) nereidsParser.parseSingle(sql); + command.run(connectContext, new StmtExecutor(connectContext, sql)); } public void createFunction(String sql) throws Exception { --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org For additional commands, e-mail: commits-h...@doris.apache.org