eldenmoon commented on code in PR #63970:
URL: https://github.com/apache/doris/pull/63970#discussion_r3348369316
##########
be/src/storage/segment/variant/variant_column_writer_impl.cpp:
##########
@@ -254,39 +277,76 @@ void build_sparse_subcolumns(const ColumnVariant&
variant, const DocValuePathSta
}
}
-SubcolumnWritePlan build_subcolumn_write_plan(const ColumnVariant& variant,
size_t num_rows,
- int64_t
variant_doc_materialization_min_rows) {
- SubcolumnWritePlan plan;
- // Below threshold: skip materialization and let finalize() compute stats
on demand.
- if (num_rows < static_cast<size_t>(variant_doc_materialization_min_rows)) {
- return plan;
+void set_doc_value_stats(const ColumnVariant& variant, const
DocValuePathStats* precomputed_stats,
+ DocValuePathStats* stats) {
+ if (precomputed_stats != nullptr) {
+ *stats = *precomputed_stats;
+ } else {
+ build_doc_value_stats(variant, stats);
}
+}
+DocValueMaterializationMode choose_doc_value_materialization_mode(
+ const DocValueMaterializationOptions& options) {
+ if (options.selected_paths != nullptr) {
+ return DocValueMaterializationMode::SparseSelectedPaths;
+ }
if (config::enable_variant_doc_sparse_write_subcolumns) {
- build_doc_value_stats(variant, &plan.stats);
- build_sparse_subcolumns(variant, plan.stats, &plan.sparse_subcolumns);
- plan.entries.reserve(plan.sparse_subcolumns.size());
- for (auto& [path, sparse] : plan.sparse_subcolumns) {
- SubcolumnWriteEntry entry;
- // StringRef points to variant storage; valid for the plan's
lifetime.
- entry.path = std::string_view(path.data, path.size);
- entry.subcolumn = &sparse.subcolumn;
- entry.rowids = &sparse.rowids;
- plan.entries.push_back(entry);
- }
- return plan;
+ return DocValueMaterializationMode::SparseAllPaths;
Review Comment:
同意,这里名字容易混淆。这里的 `SparseAllPaths/SparseSelectedPaths` 指带 rowids 的稀疏物化写入,不是最终
sparse payload column;后续可以改成 `RowIdAllPaths/RowIdSelectedPaths` 这类名字更清楚。
--
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]