eldenmoon commented on code in PR #63970:
URL: https://github.com/apache/doris/pull/63970#discussion_r3348363791


##########
be/src/storage/segment/variant/variant_column_writer_impl.cpp:
##########
@@ -1368,30 +1691,19 @@ Status VariantColumnWriterImpl::finalize() {
     auto olap_data_convertor = std::make_unique<OlapBlockDataConvertor>();
 
     DCHECK(ptr->is_finalized());
+    const bool has_extracted_columns = _has_extracted_variant_columns();
+    const VariantFinalizeContext finalize_context =
+            build_variant_finalize_context(*_tablet_column, *ptr, 
has_extracted_columns);
 
-    for (const auto& entry : 
variant_util::get_sorted_subcolumns(ptr->get_subcolumns())) {
-        if (entry->path.empty()) {
-            // already handled
-            continue;
-        }
-        // Not supported nested path to generate sub column info, currently
-        if (entry->path.has_nested_part()) {
-            continue;
-        }
-        TabletSchema::SubColumnInfo sub_column_info;
-        if 
(variant_util::generate_sub_column_info(*_opts.rowset_ctx->tablet_schema,
-                                                   _tablet_column->unique_id(),
-                                                   entry->path.get_path(), 
&sub_column_info)) {
-            _subcolumns_info.emplace(entry->path.get_path(), 
std::move(sub_column_info));
-        }
+    if (finalize_context.prepare_parse_time_subcolumns) {
+        RETURN_IF_ERROR(collect_typed_subcolumn_info_from_parse_tree(
+                *ptr, *_tablet_column, *_opts.rowset_ctx->tablet_schema, 
&_subcolumns_info));
+        
RETURN_IF_ERROR(ptr->convert_typed_path_to_storage_type(_subcolumns_info));

Review Comment:
   doc-value staging 路径不会走这里,`prepare_parse_time_subcolumns=false`。这里只服务 
parse-time subcolumns 路径:variant 里已经有子列时,需要把 predefined typed path 按 storage 
schema 做类型转换/校验,否则 typed path 的落盘类型和索引继承可能不一致。



-- 
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