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


##########
be/src/storage/segment/variant/variant_doc_snpashot_compact_iterator.h:
##########
@@ -53,12 +57,19 @@ class VariantDocValueCompactIterator : public 
ColumnIterator {
 private:
     Status _set_doc_value_into_variant(MutableColumnPtr& dst, 
MutableColumnPtr&& doc_value_column,
                                        size_t count) const {
-        auto& variant = assert_cast<ColumnVariant&>(*dst);
-        auto container = ColumnVariant::create(variant.max_subcolumns_count(),
-                                               variant.enable_doc_mode(), 
count);
-        container->set_doc_value_column(std::move(doc_value_column));
-        variant.insert_range_from(*container, 0, count);
-        return Status::OK();
+        auto* storage_map = 
check_and_get_column<ColumnMap>(doc_value_column.get());
+        if (storage_map == nullptr) {
+            return Status::Corruption("Variant doc compact input is not 
Map<String,String>");
+        }
+        variant_v2::VariantAssemblerOptions options;
+        options.storage_map_kind = variant_v2::StorageMapKind::DOC;
+        auto assembler = 
DORIS_TRY(variant_v2::VariantAssembler::create(std::move(options)));
+        variant_v2::VariantAssemblerBatchView batch;
+        batch.num_rows = count;
+        batch.storage_map = storage_map;
+        ColumnNullable::MutablePtr assembled;
+        RETURN_IF_ERROR(assembler->assemble(batch, &assembled));
+        return variant_v2::append_assembled_variant(dst, std::move(assembled));

Review Comment:
   这里需要 assemble, 可能有性能问题



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