@@ -66,10 +66,6 @@ Status SegmentFlusher::flush_single_block(const vectorized::Block* block, int32_
6666 return Status::OK ();
6767 }
6868 vectorized::Block flush_block (*block);
69- if (_context.write_type != DataWriteType::TYPE_COMPACTION &&
70- _context.tablet_schema ->num_variant_columns () > 0 ) {
71- RETURN_IF_ERROR (_parse_variant_columns (flush_block));
72- }
7369 bool no_compression = flush_block.bytes () <= config::segment_compression_threshold_kb * 1024 ;
7470 if (config::enable_vertical_segment_writer) {
7571 std::unique_ptr<segment_v2::VerticalSegmentWriter> writer;
@@ -85,59 +81,6 @@ Status SegmentFlusher::flush_single_block(const vectorized::Block* block, int32_
8581 return Status::OK ();
8682}
8783
88- Status SegmentFlusher::_internal_parse_variant_columns (vectorized::Block& block) {
89- size_t num_rows = block.rows ();
90- if (num_rows == 0 ) {
91- return Status::OK ();
92- }
93-
94- std::vector<int > variant_column_pos;
95- for (int i = 0 ; i < block.columns (); ++i) {
96- const auto & entry = block.get_by_position (i);
97- if (entry.type ->get_primitive_type () == TYPE_VARIANT) {
98- variant_column_pos.push_back (i);
99- }
100- }
101-
102- if (variant_column_pos.empty ()) {
103- return Status::OK ();
104- }
105-
106- std::vector<vectorized::ParseConfig> configs (variant_column_pos.size ());
107- for (size_t i = 0 ; i < variant_column_pos.size (); ++i) {
108- configs[i].enable_flatten_nested = _context.tablet_schema ->variant_flatten_nested ();
109- const auto & column = _context.tablet_schema ->column (variant_column_pos[i]);
110- if (column.is_variant_type ()) {
111- // enable doc snapshot mode
112- if (column.variant_enable_doc_snapshot_mode ()) {
113- // if has schema template, no need to parse to doc snapshot, when writing data, we will parse to doc snapshot
114- if (column.get_sub_columns ().empty ()) {
115- configs[i].parse_to_doc_snapshot = true ;
116- } else {
117- configs[i].parse_to_subcolumns = false ;
118- }
119-
120- // if min rows is greater than 0, no need to parse to subcolumns
121- // when compaction row size is greater than min rows, parse to subcolumns
122- if (column.variant_doc_snapshot_min_rows () > 0 ) {
123- configs[i].parse_to_subcolumns = false ;
124- } else {
125- configs[i].parse_to_subcolumns = true ;
126- }
127- } else {
128- // default: only parse to subcolumns
129- configs[i].parse_to_subcolumns = true ;
130- configs[i].parse_to_doc_snapshot = false ;
131- }
132- } else {
133- return Status::InternalError (" column is not variant type, column name: {}" , column.name ());
134- }
135- }
136- RETURN_IF_ERROR (
137- vectorized::schema_util::parse_variant_columns (block, variant_column_pos, configs));
138- return Status::OK ();
139- }
140-
14184Status SegmentFlusher::close () {
14285 return _seg_files.close ();
14386}
0 commit comments