This is an automated email from the ASF dual-hosted git repository. dataroaring pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/master by this push: new 340a37116f2 [cleanup](load) remove unused dynamic schema code (#25932) 340a37116f2 is described below commit 340a37116f268a7dd444a87b077f6ad205bfcac2 Author: Kaijie Chen <c...@apache.org> AuthorDate: Fri Oct 27 16:21:40 2023 +0800 [cleanup](load) remove unused dynamic schema code (#25932) --- be/src/olap/rowset/beta_rowset_writer.cpp | 73 ---------------------------- be/src/olap/rowset/beta_rowset_writer.h | 10 ---- be/src/olap/rowset/beta_rowset_writer_v2.cpp | 6 --- be/src/olap/rowset/beta_rowset_writer_v2.h | 4 -- 4 files changed, 93 deletions(-) diff --git a/be/src/olap/rowset/beta_rowset_writer.cpp b/be/src/olap/rowset/beta_rowset_writer.cpp index 7a3eb1d9bd8..c4a8dbb568a 100644 --- a/be/src/olap/rowset/beta_rowset_writer.cpp +++ b/be/src/olap/rowset/beta_rowset_writer.cpp @@ -748,77 +748,4 @@ Status BetaRowsetWriter::flush_segment_writer_for_segcompaction( return Status::OK(); } -Status BetaRowsetWriter::_unfold_variant_column(vectorized::Block& block, - TabletSchemaSPtr& flush_schema) { - if (block.rows() == 0) { - return Status::OK(); - } - - // Sanitize block to match exactly from the same type of frontend meta - vectorized::schema_util::FullBaseSchemaView schema_view; - schema_view.table_id = _context.tablet_schema->table_id(); - vectorized::ColumnWithTypeAndName* variant_column = - block.try_get_by_name(BeConsts::DYNAMIC_COLUMN_NAME); - if (!variant_column) { - return Status::OK(); - } - auto base_column = variant_column->column; - vectorized::ColumnObject& object_column = - assert_cast<vectorized::ColumnObject&>(base_column->assume_mutable_ref()); - if (object_column.empty()) { - block.erase(BeConsts::DYNAMIC_COLUMN_NAME); - return Status::OK(); - } - object_column.finalize(); - // Has extended columns - RETURN_IF_ERROR(vectorized::schema_util::send_fetch_full_base_schema_view_rpc(&schema_view)); - // Dynamic Block consists of two parts, dynamic part of columns and static part of columns - // static dynamic - // | ----- | ------- | - // The static ones are original _tablet_schame columns - flush_schema = std::make_shared<TabletSchema>(*_context.tablet_schema); - vectorized::Block flush_block(std::move(block)); - // The dynamic ones are auto generated and extended, append them the the orig_block - for (auto& entry : object_column.get_subcolumns()) { - const std::string& column_name = entry->path.get_path(); - auto column_iter = schema_view.column_name_to_column.find(column_name); - if (UNLIKELY(column_iter == schema_view.column_name_to_column.end())) { - // Column maybe dropped by light weight schema change DDL - continue; - } - TabletColumn column(column_iter->second); - auto data_type = vectorized::DataTypeFactory::instance().create_data_type( - column, column.is_nullable()); - // Dynamic generated columns does not appear in original tablet schema - if (_context.tablet_schema->field_index(column.name()) < 0) { - flush_schema->append_column(column); - flush_block.insert({data_type->create_column(), data_type, column.name()}); - } - } - - // Ensure column are all present at this schema version.Otherwise there will be some senario: - // Load1 -> version(10) with schema [a, b, c, d, e], d & e is new added columns and schema version became 10 - // Load2 -> version(10) with schema [a, b, c] and has no extended columns and fetched the schema at version 10 - // Load2 will persist meta with [a, b, c] but Load1 will persist meta with [a, b, c, d, e] - // So we should make sure that rowset at the same schema version alawys contain the same size of columns. - // so that all columns at schema_version is in either _context.tablet_schema or schema_change_recorder - for (const auto& [name, column] : schema_view.column_name_to_column) { - if (_context.tablet_schema->field_index(name) == -1) { - const auto& tcolumn = schema_view.column_name_to_column[name]; - TabletColumn new_column(tcolumn); - _context.schema_change_recorder->add_extended_columns(column, - schema_view.schema_version); - } - } - - // Last schema alignment before flush to disk, due to the schema maybe variant before this procedure - // Eg. add columnA(INT) -> drop ColumnA -> add ColumnA(Double), then columnA could be type of `Double`, - // unfold will cast to Double type - RETURN_IF_ERROR(vectorized::schema_util::unfold_object( - flush_block.get_position_by_name(BeConsts::DYNAMIC_COLUMN_NAME), flush_block, true)); - flush_block.erase(BeConsts::DYNAMIC_COLUMN_NAME); - block.swap(flush_block); - return Status::OK(); -} - } // namespace doris diff --git a/be/src/olap/rowset/beta_rowset_writer.h b/be/src/olap/rowset/beta_rowset_writer.h index 5d1b3075933..9c615048a7f 100644 --- a/be/src/olap/rowset/beta_rowset_writer.h +++ b/be/src/olap/rowset/beta_rowset_writer.h @@ -58,9 +58,6 @@ class SegmentWriter; using SegCompactionCandidates = std::vector<segment_v2::SegmentSharedPtr>; using SegCompactionCandidatesSharedPtr = std::shared_ptr<SegCompactionCandidates>; -namespace vectorized::schema_util { -class LocalSchemaChangeRecorder; -} class BetaRowsetWriter : public RowsetWriter { friend class SegcompactionWorker; @@ -166,13 +163,6 @@ private: Status _rename_compacted_segment_plain(uint64_t seg_id); Status _rename_compacted_indices(int64_t begin, int64_t end, uint64_t seg_id); - // Unfold variant column to Block - // Eg. [A | B | C | (D, E, F)] - // After unfold block structure changed to -> [A | B | C | D | E | F] - // The expanded D, E, F is dynamic part of the block - // The flushed Block columns should match exactly from the same type of frontend meta - Status _unfold_variant_column(vectorized::Block& block, TabletSchemaSPtr& flush_schema); - // build a tmp rowset for load segment to calc delete_bitmap // for this segment RowsetSharedPtr _build_tmp(); diff --git a/be/src/olap/rowset/beta_rowset_writer_v2.cpp b/be/src/olap/rowset/beta_rowset_writer_v2.cpp index 6d030308805..abd7af2aaba 100644 --- a/be/src/olap/rowset/beta_rowset_writer_v2.cpp +++ b/be/src/olap/rowset/beta_rowset_writer_v2.cpp @@ -103,12 +103,6 @@ Status BetaRowsetWriterV2::flush_memtable(vectorized::Block* block, int32_t segm } TabletSchemaSPtr flush_schema; - /* TODO: support dynamic schema - if (_context.tablet_schema->is_dynamic_schema()) { - // Unfold variant column - RETURN_IF_ERROR(_unfold_variant_column(*block, flush_schema)); - } - */ { SCOPED_RAW_TIMER(&_segment_writer_ns); RETURN_IF_ERROR( diff --git a/be/src/olap/rowset/beta_rowset_writer_v2.h b/be/src/olap/rowset/beta_rowset_writer_v2.h index 01f9cef3f1c..d35f4b2486f 100644 --- a/be/src/olap/rowset/beta_rowset_writer_v2.h +++ b/be/src/olap/rowset/beta_rowset_writer_v2.h @@ -56,10 +56,6 @@ namespace segment_v2 { class SegmentWriter; } // namespace segment_v2 -namespace vectorized::schema_util { -class LocalSchemaChangeRecorder; -} - class LoadStreamStub; class BetaRowsetWriterV2 : public RowsetWriter { --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org For additional commands, e-mail: commits-h...@doris.apache.org