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