morningman commented on code in PR #17590:
URL: https://github.com/apache/doris/pull/17590#discussion_r1133244345


##########
gensrc/thrift/FrontendService.thrift:
##########
@@ -717,16 +717,16 @@ struct TInitExternalCtlMetaResult {
 
 enum TSchemaTableName{

Review Comment:
   ```suggestion
   enum TSchemaTableName {
   ```



##########
be/src/vec/exec/scan/vmeta_scanner.cpp:
##########
@@ -158,38 +153,48 @@ Status VMetaScanner::_fill_block_with_remote_data(const 
std::vector<MutableColum
     return Status::OK();
 }
 
-Status VMetaScanner::_fetch_iceberg_metadata_batch() {
-    VLOG_CRITICAL << "VMetaScanner::_fetch_iceberg_metadata_batch";
+Status VMetaScanner::_fetch_metadata(const TMetaScanRange& meta_scan_range) {
+    VLOG_CRITICAL << "VMetaScanner::_fetch_iceberg_metadata";
+    switch (meta_scan_range.metadata_type) {
+    case TMetadataType::ICEBERG:
+        return _fetch_iceberg_metadata(meta_scan_range);
+    default:
+        _meta_eos = true;
+        break;
+    }
+    return Status::OK();
+}
+
+Status VMetaScanner::_fetch_iceberg_metadata(const TMetaScanRange& 
meta_scan_range) {

Review Comment:
   the RPC logic is identical for all kinds of metadata fetch request.
   I think it should be extracted to a method.
   And for different request type, use different method named as 
`buildXXXRequest()`



##########
be/src/vec/exec/scan/vmeta_scanner.cpp:
##########
@@ -158,38 +153,48 @@ Status VMetaScanner::_fill_block_with_remote_data(const 
std::vector<MutableColum
     return Status::OK();
 }
 
-Status VMetaScanner::_fetch_iceberg_metadata_batch() {
-    VLOG_CRITICAL << "VMetaScanner::_fetch_iceberg_metadata_batch";
+Status VMetaScanner::_fetch_metadata(const TMetaScanRange& meta_scan_range) {
+    VLOG_CRITICAL << "VMetaScanner::_fetch_iceberg_metadata";
+    switch (meta_scan_range.metadata_type) {
+    case TMetadataType::ICEBERG:
+        return _fetch_iceberg_metadata(meta_scan_range);
+    default:
+        _meta_eos = true;
+        break;
+    }
+    return Status::OK();
+}
+
+Status VMetaScanner::_fetch_iceberg_metadata(const TMetaScanRange& 
meta_scan_range) {
+    VLOG_CRITICAL << "VMetaScanner::_fetch_iceberg_metadata";
+    if (!meta_scan_range.__isset.iceberg_params) {
+        return Status::InternalError("Can not find TIcebergMetadataParams from 
meta_scan_range.");
+    }
+    // create request
     TFetchSchemaTableDataRequest request;
     request.cluster_name = "";
     request.__isset.cluster_name = true;
-    request.schema_table_name = TSchemaTableName::ICEBERG_TABLE_META;
+    request.schema_table_name = TSchemaTableName::METADATA_TABLE;

Review Comment:
   use `request.set_xxx()` methods



##########
be/src/vec/exec/scan/vmeta_scanner.cpp:
##########
@@ -158,38 +153,48 @@ Status VMetaScanner::_fill_block_with_remote_data(const 
std::vector<MutableColum
     return Status::OK();
 }
 
-Status VMetaScanner::_fetch_iceberg_metadata_batch() {
-    VLOG_CRITICAL << "VMetaScanner::_fetch_iceberg_metadata_batch";
+Status VMetaScanner::_fetch_metadata(const TMetaScanRange& meta_scan_range) {
+    VLOG_CRITICAL << "VMetaScanner::_fetch_iceberg_metadata";
+    switch (meta_scan_range.metadata_type) {
+    case TMetadataType::ICEBERG:
+        return _fetch_iceberg_metadata(meta_scan_range);
+    default:
+        _meta_eos = true;
+        break;
+    }
+    return Status::OK();
+}
+
+Status VMetaScanner::_fetch_iceberg_metadata(const TMetaScanRange& 
meta_scan_range) {
+    VLOG_CRITICAL << "VMetaScanner::_fetch_iceberg_metadata";
+    if (!meta_scan_range.__isset.iceberg_params) {
+        return Status::InternalError("Can not find TIcebergMetadataParams from 
meta_scan_range.");
+    }
+    // create request
     TFetchSchemaTableDataRequest request;
     request.cluster_name = "";
     request.__isset.cluster_name = true;
-    request.schema_table_name = TSchemaTableName::ICEBERG_TABLE_META;
+    request.schema_table_name = TSchemaTableName::METADATA_TABLE;
     request.__isset.schema_table_name = true;
-    auto scan_params = _parent->scan_params();
-    TMetadataTableRequestParams meta_table_params = 
TMetadataTableRequestParams();
-    meta_table_params.catalog = scan_params.catalog;
-    meta_table_params.__isset.catalog = true;
-    meta_table_params.database = scan_params.database;
-    meta_table_params.__isset.database = true;
-    meta_table_params.table = scan_params.table;
-    meta_table_params.__isset.table = true;
-
-    meta_table_params.iceberg_metadata_params = 
_scan_range.meta_scan_range.iceberg_params;
-    meta_table_params.__isset.iceberg_metadata_params = true;
-
-    request.metada_table_params = meta_table_params;
+
+    // create TMetadataTableRequestParams
+    TMetadataTableRequestParams metadata_table_params;
+    metadata_table_params.metadata_type = TMetadataType::ICEBERG;
+    metadata_table_params.__isset.metadata_type = true;
+    metadata_table_params.iceberg_metadata_params = 
meta_scan_range.iceberg_params;
+    metadata_table_params.__isset.iceberg_metadata_params = true;
+
+    request.metada_table_params = metadata_table_params;
     request.__isset.metada_table_params = true;
 
     TNetworkAddress master_addr = 
ExecEnv::GetInstance()->master_info()->network_address;
     TFetchSchemaTableDataResult result;
-
     RETURN_IF_ERROR(ThriftRpcHelper::rpc<FrontendServiceClient>(
             master_addr.hostname, master_addr.port,
             [&request, &result](FrontendServiceConnection& client) {
                 client->fetchSchemaTableData(result, request);
             },
             config::txn_commit_rpc_timeout_ms));

Review Comment:
   It is strange to use `txn_commit_rpc_timeout_ms` as the timeout of meta 
scanner



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to