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 <[email protected]>
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: [email protected]
For additional commands, e-mail: [email protected]