This is an automated email from the ASF dual-hosted git repository.

dataroaring pushed a commit to branch branch-4.0-preview
in repository https://gitbox.apache.org/repos/asf/doris.git

commit 71c2445f9627be3e7a0f87ed0979c1172f7fbacb
Author: AlexYue <yj976240...@gmail.com>
AuthorDate: Sat Apr 13 10:50:17 2024 +0800

    [feature](Cloud) Only cloud mode and instance with enable_storage_vault can 
use storage vault stmt (#33561)
---
 .../doris/analysis/CreateStorageVaultStmt.java      | 12 ++++++++++++
 .../doris/analysis/SetDefaultStorageVaultStmt.java  | 21 +++++++++++++++++++++
 .../doris/analysis/CreateStorageVaultStmtTest.java  |  7 +++++++
 3 files changed, 40 insertions(+)

diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/CreateStorageVaultStmt.java
 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/CreateStorageVaultStmt.java
index a606ed48336..652c15d4b8e 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/CreateStorageVaultStmt.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/CreateStorageVaultStmt.java
@@ -19,9 +19,12 @@ package org.apache.doris.analysis;
 
 import org.apache.doris.catalog.Env;
 import org.apache.doris.catalog.StorageVault;
+import org.apache.doris.cloud.catalog.CloudEnv;
 import org.apache.doris.common.AnalysisException;
+import org.apache.doris.common.Config;
 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.common.util.PrintableMap;
@@ -72,6 +75,15 @@ public class CreateStorageVaultStmt extends DdlStmt {
 
     @Override
     public void analyze(Analyzer analyzer) throws UserException {
+        if (Config.isNotCloudMode()) {
+            throw new AnalysisException("Storage Vault is only supported for 
cloud mode");
+        }
+        if (!FeConstants.runningUnitTest) {
+            // In legacy cloud mode, some s3 back-ended storage does need to 
use storage vault.
+            if (!((CloudEnv) Env.getCurrentEnv()).getEnableStorageVault()) {
+                throw new AnalysisException("Your cloud instance doesn't 
support storage vault");
+            }
+        }
         super.analyze(analyzer);
 
         // check auth
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/SetDefaultStorageVaultStmt.java
 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/SetDefaultStorageVaultStmt.java
index eec693bb40d..b9facec56a5 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/SetDefaultStorageVaultStmt.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/SetDefaultStorageVaultStmt.java
@@ -17,6 +17,13 @@
 
 package org.apache.doris.analysis;
 
+import org.apache.doris.catalog.Env;
+import org.apache.doris.cloud.catalog.CloudEnv;
+import org.apache.doris.common.AnalysisException;
+import org.apache.doris.common.Config;
+import org.apache.doris.common.FeConstants;
+import org.apache.doris.common.UserException;
+
 // SET vault_name DEFAULT STORAGE VAULT
 public class SetDefaultStorageVaultStmt extends DdlStmt {
     public final String vaultName;
@@ -29,6 +36,20 @@ public class SetDefaultStorageVaultStmt extends DdlStmt {
         return vaultName;
     }
 
+    @Override
+    public void analyze(Analyzer analyzer) throws UserException {
+        if (Config.isNotCloudMode()) {
+            throw new AnalysisException("Storage Vault is only supported for 
cloud mode");
+        }
+        if (!FeConstants.runningUnitTest) {
+            // In legacy cloud mode, some s3 back-ended storage does need to 
use storage vault.
+            if (!((CloudEnv) Env.getCurrentEnv()).getEnableStorageVault()) {
+                throw new AnalysisException("Your cloud instance doesn't 
support storage vault");
+            }
+        }
+        super.analyze(analyzer);
+    }
+
     @Override
     public String toSql() {
         StringBuilder sb = new StringBuilder();
diff --git 
a/fe/fe-core/src/test/java/org/apache/doris/analysis/CreateStorageVaultStmtTest.java
 
b/fe/fe-core/src/test/java/org/apache/doris/analysis/CreateStorageVaultStmtTest.java
index 7064ef7b661..0479c82d25d 100644
--- 
a/fe/fe-core/src/test/java/org/apache/doris/analysis/CreateStorageVaultStmtTest.java
+++ 
b/fe/fe-core/src/test/java/org/apache/doris/analysis/CreateStorageVaultStmtTest.java
@@ -20,6 +20,8 @@ package org.apache.doris.analysis;
 import org.apache.doris.catalog.Env;
 import org.apache.doris.catalog.StorageVault.StorageVaultType;
 import org.apache.doris.common.AnalysisException;
+import org.apache.doris.common.Config;
+import org.apache.doris.common.FeConstants;
 import org.apache.doris.common.UserException;
 import org.apache.doris.mysql.privilege.AccessControllerManager;
 import org.apache.doris.mysql.privilege.PrivPredicate;
@@ -43,6 +45,7 @@ public class CreateStorageVaultStmtTest {
     public void setUp() {
         analyzer = AccessTestUtil.fetchAdminAnalyzer(true);
         vaultName = "hdfs";
+        FeConstants.runningUnitTest = true;
     }
 
     @Test
@@ -57,6 +60,7 @@ public class CreateStorageVaultStmtTest {
             }
         };
 
+        Config.cloud_unique_id = "not_empty";
         Map<String, String> properties = Maps.newHashMap();
         properties.put("type", "hdfs");
         CreateStorageVaultStmt stmt = new CreateStorageVaultStmt(true, 
vaultName, properties);
@@ -64,6 +68,7 @@ public class CreateStorageVaultStmtTest {
         Assert.assertEquals(vaultName, stmt.getStorageVaultName());
         Assert.assertEquals(StorageVaultType.HDFS, stmt.getStorageVaultType());
         Assert.assertEquals("CREATE STORAGE VAULT 'hdfs' PROPERTIES(\"type\"  
=  \"hdfs\")", stmt.toSql());
+        Config.cloud_unique_id = "";
 
     }
 
@@ -79,9 +84,11 @@ public class CreateStorageVaultStmtTest {
             }
         };
 
+        Config.cloud_unique_id = "not_empty";
         Map<String, String> properties = Maps.newHashMap();
         properties.put("type", "hadoop");
         CreateStorageVaultStmt stmt = new CreateStorageVaultStmt(true, 
vaultName, properties);
         stmt.analyze(analyzer);
+        Config.cloud_unique_id = "";
     }
 }


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org
For additional commands, e-mail: commits-h...@doris.apache.org

Reply via email to