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]

Reply via email to