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


##########
be/src/storage/segment/variant/variant_column_writer_impl.cpp:
##########
@@ -556,6 +623,220 @@ Status append_sparse_converted_column(const TabletColumn& 
tablet_column, ColumnW
     converter->clear_source_content(cid);
     return Status::OK();
 }
+
+bool has_doc_value_data(const ColumnVariant& variant) {
+    if (variant.size() == 0) {
+        return false;
+    }
+    const auto& offsets = variant.serialized_doc_value_column_offsets();
+    return !offsets.empty() && offsets[variant.size() - 1] > 0;
+}
+
+enum class VariantPayloadWritePath {

Review Comment:
   四个值分别是:`None` 表示 root writer 不写 payload(payload 由 extracted column 
承担);`ParseTimeSubcolumns` 写 parse 阶段已有 subcolumns;`RegularDocValueStaging` 把普通非 
doc variant 的 doc-value staging 转成 materialized subcolumns + sparse 
payload;`PersistentDocValueMode` 是真正 doc mode,写 doc-value bucket。



##########
be/src/storage/segment/variant/variant_column_writer_impl.cpp:
##########
@@ -556,6 +623,220 @@ Status append_sparse_converted_column(const TabletColumn& 
tablet_column, ColumnW
     converter->clear_source_content(cid);
     return Status::OK();
 }
+
+bool has_doc_value_data(const ColumnVariant& variant) {
+    if (variant.size() == 0) {
+        return false;
+    }
+    const auto& offsets = variant.serialized_doc_value_column_offsets();
+    return !offsets.empty() && offsets[variant.size() - 1] > 0;
+}
+
+enum class VariantPayloadWritePath {
+    None,
+    ParseTimeSubcolumns,
+    RegularDocValueStaging,
+    PersistentDocValueMode,
+};
+
+struct VariantFinalizeContext {
+    bool use_regular_doc_value_staging = false;

Review Comment:
   这三个 bool 是 finalize 前的准备开关:`use_regular_doc_value_staging` 识别普通 variant 的临时 
doc-value KV 输入;`prepare_parse_time_subcolumns` 表示需要处理 parse 阶段已经展开的 
subcolumns;`prepare_sparse_payload_from_parse_tree` 表示 sparse payload 要从 parse 
tree 生成,而不是从 doc-value staging 生成。



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