This is an automated email from the ASF dual-hosted git repository. pengxiangyu 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 8342691b62 [feature](remote)Add drop storage policy (#15364) 8342691b62 is described below commit 8342691b62c18dc4259b867c1185f1eaeb759cad Author: pengxiangyu <diablo...@163.com> AuthorDate: Wed Dec 28 16:04:30 2022 +0800 [feature](remote)Add drop storage policy (#15364) * add drop storage policy * add drop storage policy * add drop storage policy * add drop storage policy --- .../Data-Definition-Statements/Drop/DROP-POLICY.md | 6 ++++++ .../Data-Definition-Statements/Drop/DROP-POLICY.md | 11 +++++++++++ .../java/org/apache/doris/analysis/DropPolicyStmt.java | 4 +--- .../main/java/org/apache/doris/policy/PolicyMgr.java | 17 +++++++++++++++++ .../java/org/apache/doris/task/CreateReplicaTask.java | 2 +- .../suites/cold_heat_separation/policy/drop.groovy | 4 ++-- 6 files changed, 38 insertions(+), 6 deletions(-) diff --git a/docs/en/docs/sql-manual/sql-reference/Data-Definition-Statements/Drop/DROP-POLICY.md b/docs/en/docs/sql-manual/sql-reference/Data-Definition-Statements/Drop/DROP-POLICY.md index 088eebabef..50d655d65a 100644 --- a/docs/en/docs/sql-manual/sql-reference/Data-Definition-Statements/Drop/DROP-POLICY.md +++ b/docs/en/docs/sql-manual/sql-reference/Data-Definition-Statements/Drop/DROP-POLICY.md @@ -61,6 +61,12 @@ DROP STORAGE POLICY policy_name1 ```sql DROP ROW POLICY test_row_policy_1 on table1 for test ``` + +3. Drop the storage policy named policy_name1 +```sql +DROP STORAGE POLICY policy_name1 +``` + ### Keywords DROP, POLICY diff --git a/docs/zh-CN/docs/sql-manual/sql-reference/Data-Definition-Statements/Drop/DROP-POLICY.md b/docs/zh-CN/docs/sql-manual/sql-reference/Data-Definition-Statements/Drop/DROP-POLICY.md index d76a70eff2..f860a189ee 100644 --- a/docs/zh-CN/docs/sql-manual/sql-reference/Data-Definition-Statements/Drop/DROP-POLICY.md +++ b/docs/zh-CN/docs/sql-manual/sql-reference/Data-Definition-Statements/Drop/DROP-POLICY.md @@ -43,6 +43,11 @@ DROP POLICY DROP ROW POLICY test_row_policy_1 on table1 [FOR user]; ``` +2. 删除存储策略 +```sql +DROP STORAGE POLICY policy_name1 +``` + ### Example 1. 删除 table1 的 test_row_policy_1 @@ -56,6 +61,12 @@ DROP ROW POLICY test_row_policy_1 on table1 [FOR user]; ```sql DROP ROW POLICY test_row_policy_1 on table1 for test ``` + +3. 删除名字为policy_name1的存储策略 +```sql +DROP STORAGE POLICY policy_name1 +``` + ### Keywords DROP, POLICY diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/DropPolicyStmt.java b/fe/fe-core/src/main/java/org/apache/doris/analysis/DropPolicyStmt.java index 2c4199d8ce..50ff6185ed 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/analysis/DropPolicyStmt.java +++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/DropPolicyStmt.java @@ -18,7 +18,6 @@ package org.apache.doris.analysis; import org.apache.doris.catalog.Env; -import org.apache.doris.common.DdlException; import org.apache.doris.common.ErrorCode; import org.apache.doris.common.ErrorReport; import org.apache.doris.common.UserException; @@ -57,8 +56,7 @@ public class DropPolicyStmt extends DdlStmt { super.analyze(analyzer); switch (type) { case STORAGE: - // current not support drop storage policy, because be use it policy name to find s3 resource. - throw new DdlException("current not support drop storage policy."); + break; case ROW: default: tableName.analyze(analyzer); 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 b6321ada97..7965131874 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 @@ -23,7 +23,10 @@ import org.apache.doris.analysis.CreatePolicyStmt; import org.apache.doris.analysis.DropPolicyStmt; import org.apache.doris.analysis.ShowPolicyStmt; import org.apache.doris.analysis.UserIdentity; +import org.apache.doris.catalog.Database; import org.apache.doris.catalog.Env; +import org.apache.doris.catalog.OlapTable; +import org.apache.doris.catalog.Table; import org.apache.doris.common.AnalysisException; import org.apache.doris.common.DdlException; import org.apache.doris.common.UserException; @@ -137,6 +140,20 @@ public class PolicyMgr implements Writable { **/ public void dropPolicy(DropPolicyStmt stmt) throws DdlException, AnalysisException { DropPolicyLog dropPolicyLog = DropPolicyLog.fromDropStmt(stmt); + if (dropPolicyLog.getType() == PolicyTypeEnum.STORAGE) { + List<Database> databases = Env.getCurrentEnv().getInternalCatalog().getDbs(); + for (Database db : databases) { + List<Table> tables = db.getTables(); + for (Table table : tables) { + if (table instanceof OlapTable) { + if (((OlapTable) table).getStoragePolicy().equals(dropPolicyLog.getPolicyName())) { + throw new DdlException("the policy " + dropPolicyLog.getPolicyName() + " is used by table: " + + table.getName()); + } + } + } + } + } writeLock(); try { if (!existPolicy(dropPolicyLog)) { diff --git a/fe/fe-core/src/main/java/org/apache/doris/task/CreateReplicaTask.java b/fe/fe-core/src/main/java/org/apache/doris/task/CreateReplicaTask.java index d416c75796..eeef983cdd 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/task/CreateReplicaTask.java +++ b/fe/fe-core/src/main/java/org/apache/doris/task/CreateReplicaTask.java @@ -88,7 +88,7 @@ public class CreateReplicaTask extends AgentTask { private boolean isRecoverTask = false; private DataSortInfo dataSortInfo; - private static String storagePolicy; + private String storagePolicy; private boolean enableUniqueKeyMergeOnWrite; diff --git a/regression-test/suites/cold_heat_separation/policy/drop.groovy b/regression-test/suites/cold_heat_separation/policy/drop.groovy index 57976f8f08..e947e20c7b 100644 --- a/regression-test/suites/cold_heat_separation/policy/drop.groovy +++ b/regression-test/suites/cold_heat_separation/policy/drop.groovy @@ -92,8 +92,8 @@ suite("drop_policy") { def drop_policy_ret = try_sql """ DROP STORAGE POLICY drop_policy_test """ - // errCode = 2, detailMessage = current not support drop storage policy. - assertEquals(drop_policy_ret, null) + // can drop, no table use + assertEquals(drop_policy_ret.size(), 1) } } --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org For additional commands, e-mail: commits-h...@doris.apache.org