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 7bb167c9314b288f18724e1908c53e2401aef122 Author: AlexYue <[email protected]> AuthorDate: Fri Apr 19 09:51:52 2024 +0800 [feature-wip](Cloud) Show isDefault vault in show storage vault stmt (#33839) --- cloud/src/meta-service/meta_service_resource.cpp | 4 +++ .../org/apache/doris/catalog/StorageVault.java | 34 +++++++++++++++++++++- .../java/org/apache/doris/qe/ShowExecutor.java | 4 +++ gensrc/proto/cloud.proto | 2 ++ 4 files changed, 43 insertions(+), 1 deletion(-) diff --git a/cloud/src/meta-service/meta_service_resource.cpp b/cloud/src/meta-service/meta_service_resource.cpp index 6afff87d76b..e5b3720cd24 100644 --- a/cloud/src/meta-service/meta_service_resource.cpp +++ b/cloud/src/meta-service/meta_service_resource.cpp @@ -278,6 +278,10 @@ void MetaServiceImpl::get_obj_store_info(google::protobuf::RpcController* contro } response->mutable_obj_info()->CopyFrom(instance.obj_info()); + if (instance.has_default_storage_vault_id()) { + response->set_default_storage_vault_id(instance.default_storage_vault_id()); + response->set_default_storage_vault_name(instance.default_storage_vault_name()); + } } // The next available vault id would be max(max(obj info id), max(vault id)) + 1. diff --git a/fe/fe-core/src/main/java/org/apache/doris/catalog/StorageVault.java b/fe/fe-core/src/main/java/org/apache/doris/catalog/StorageVault.java index e9b205a81c7..8bfa4648a8e 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/catalog/StorageVault.java +++ b/fe/fe-core/src/main/java/org/apache/doris/catalog/StorageVault.java @@ -34,6 +34,7 @@ import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.concurrent.locks.ReentrantReadWriteLock; +import java.util.stream.IntStream; public abstract class StorageVault { private static final Logger LOG = LogManager.getLogger(StorageVault.class); @@ -170,8 +171,9 @@ public abstract class StorageVault { public static final ShowResultSetMetaData STORAGE_VAULT_META_DATA = ShowResultSetMetaData.builder() .addColumn(new Column("StorageVaultName", ScalarType.createVarchar(100))) - .addColumn(new Column("StoragevaultId", ScalarType.createVarchar(20))) + .addColumn(new Column("StorageVaultId", ScalarType.createVarchar(20))) .addColumn(new Column("Propeties", ScalarType.createVarchar(65535))) + .addColumn(new Column("IsDefault", ScalarType.createVarchar(5))) .build(); public static List<String> convertToShowStorageVaultProperties(Cloud.StorageVaultPB vault) { @@ -191,6 +193,36 @@ public abstract class StorageVault { builder.setSk("xxxxxxx"); row.add(printer.shortDebugString(builder)); } + row.add("false"); return row; } + + public static void setDefaultVaultToShowVaultResult(List<List<String>> rows, String vaultId) { + List<Column> columns = STORAGE_VAULT_META_DATA.getColumns(); + + int isDefaultIndex = IntStream.range(0, columns.size()) + .filter(i -> columns.get(i).getName().equals("IsDefault")) + .findFirst() + .orElse(-1); + + if (isDefaultIndex == -1) { + return; + } + + int vaultIdIndex = IntStream.range(0, columns.size()) + .filter(i -> columns.get(i).getName().equals("StorageVaultId")) + .findFirst() + .orElse(-1); + + if (vaultIdIndex == -1) { + return; + } + + for (int cnt = 0; cnt < rows.size(); cnt++) { + if (rows.get(cnt).get(vaultIdIndex).equals(vaultId)) { + List<String> defaultVaultRow = rows.get(cnt); + defaultVaultRow.set(isDefaultIndex, "true"); + } + } + } } diff --git a/fe/fe-core/src/main/java/org/apache/doris/qe/ShowExecutor.java b/fe/fe-core/src/main/java/org/apache/doris/qe/ShowExecutor.java index cc0b0a035c9..69d82cc01da 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/qe/ShowExecutor.java +++ b/fe/fe-core/src/main/java/org/apache/doris/qe/ShowExecutor.java @@ -3066,6 +3066,7 @@ public class ShowExecutor { private void handleShowStorageVault() throws AnalysisException { ShowStorageVaultStmt showStmt = (ShowStorageVaultStmt) stmt; + // [vault name, vault id, vault properties, isDefault] List<List<String>> rows; try { Cloud.GetObjStoreInfoResponse resp = MetaServiceProxy.getInstance() @@ -3073,6 +3074,9 @@ public class ShowExecutor { rows = resp.getStorageVaultList().stream() .map(StorageVault::convertToShowStorageVaultProperties) .collect(Collectors.toList()); + if (resp.hasDefaultStorageVaultId()) { + StorageVault.setDefaultVaultToShowVaultResult(rows, resp.getDefaultStorageVaultId()); + } } catch (RpcException e) { throw new AnalysisException(e.getMessage()); } diff --git a/gensrc/proto/cloud.proto b/gensrc/proto/cloud.proto index 37fa2e46715..2bcc3dabfcd 100644 --- a/gensrc/proto/cloud.proto +++ b/gensrc/proto/cloud.proto @@ -790,6 +790,8 @@ message GetObjStoreInfoResponse { optional MetaServiceResponseStatus status = 1; repeated ObjectStoreInfoPB obj_info = 2; repeated StorageVaultPB storage_vault = 3; + optional string default_storage_vault_id = 4; + optional string default_storage_vault_name = 5; }; message CreateTabletsRequest { --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
