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

Reply via email to