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 204797a537d [feature](merge-cloud) Add cloud rowset meta & tablet meta
definition (#29911)
204797a537d is described below
commit 204797a537d3bbea9fcbeb83a749b45df4b4c6d8
Author: walter <[email protected]>
AuthorDate: Fri Jan 12 20:41:28 2024 +0800
[feature](merge-cloud) Add cloud rowset meta & tablet meta definition
(#29911)
---
be/src/cloud/cloud_meta_mgr.cpp | 4 +-
be/src/cloud/pb_convert.cpp | 578 +++++++++++++++++++++++++++++++++++++---
be/src/cloud/pb_convert.h | 23 ++
gensrc/proto/cloud.proto | 14 +-
gensrc/proto/olap_file.proto | 133 ++++++++-
5 files changed, 700 insertions(+), 52 deletions(-)
diff --git a/be/src/cloud/cloud_meta_mgr.cpp b/be/src/cloud/cloud_meta_mgr.cpp
index f2fcf5132f6..e6915eae914 100644
--- a/be/src/cloud/cloud_meta_mgr.cpp
+++ b/be/src/cloud/cloud_meta_mgr.cpp
@@ -29,6 +29,7 @@
#include <vector>
#include "cloud/config.h"
+#include "cloud/pb_convert.h"
#include "common/logging.h"
#include "common/status.h"
#include "common/sync_point.h"
@@ -207,7 +208,8 @@ Status CloudMetaMgr::get_tablet_meta(int64_t tablet_id,
TabletMetaSharedPtr* tab
return Status::InternalError("failed to get tablet meta: {}",
resp.status().msg());
}
*tablet_meta = std::make_shared<TabletMeta>();
- (*tablet_meta)->init_from_pb(resp.tablet_meta());
+ (*tablet_meta)
+
->init_from_pb(cloud_tablet_meta_to_doris(std::move(*resp.mutable_tablet_meta())));
VLOG_DEBUG << "get tablet meta, tablet_id: " <<
(*tablet_meta)->tablet_id();
return Status::OK();
}
diff --git a/be/src/cloud/pb_convert.cpp b/be/src/cloud/pb_convert.cpp
index 6cb388df103..664a9f53c50 100644
--- a/be/src/cloud/pb_convert.cpp
+++ b/be/src/cloud/pb_convert.cpp
@@ -17,62 +17,276 @@
#include "cloud/pb_convert.h"
+#include <gen_cpp/olap_file.pb.h>
+
+#include <utility>
+
namespace doris::cloud {
-TabletSchemaCloudPB doris_tablet_schema_to_cloud(const TabletSchemaPB& in) {
+RowsetMetaCloudPB doris_rowset_meta_to_cloud(const RowsetMetaPB& in) {
+ RowsetMetaCloudPB out;
+ doris_rowset_meta_to_cloud(&out, in);
+ return out;
+}
+
+RowsetMetaCloudPB doris_rowset_meta_to_cloud(RowsetMetaPB&& in) {
+ RowsetMetaCloudPB out;
+ doris_rowset_meta_to_cloud(&out, std::move(in));
+ return out;
+}
+
+void doris_rowset_meta_to_cloud(RowsetMetaCloudPB* out, const RowsetMetaPB&
in) {
+ // ATTN: please keep the set order aligned with the definition of proto
`TabletSchemaCloudPB`.
+ out->set_rowset_id(in.rowset_id());
+ out->set_partition_id(in.partition_id());
+ out->set_tablet_id(in.tablet_id());
+ out->set_txn_id(in.txn_id());
+ out->set_tablet_schema_hash(in.tablet_schema_hash());
+ out->set_rowset_type(in.rowset_type());
+ out->set_rowset_state(in.rowset_state());
+ out->set_start_version(in.start_version());
+ out->set_end_version(in.end_version());
+ out->set_version_hash(in.version_hash());
+ out->set_num_rows(in.num_rows());
+ out->set_total_disk_size(in.total_disk_size());
+ out->set_data_disk_size(in.data_disk_size());
+ out->set_index_disk_size(in.index_disk_size());
+ out->mutable_zone_maps()->CopyFrom(in.zone_maps());
+ if (in.has_delete_predicate()) {
+ out->mutable_delete_predicate()->CopyFrom(in.delete_predicate());
+ }
+ out->set_empty(in.empty());
+ out->mutable_load_id()->CopyFrom(in.load_id());
+ out->set_delete_flag(in.delete_flag());
+ out->set_creation_time(in.creation_time());
+ out->mutable_tablet_uid()->CopyFrom(in.tablet_uid());
+ out->set_num_segments(in.num_segments());
+ out->set_rowset_id_v2(in.rowset_id_v2());
+ out->set_resource_id(in.resource_id());
+ out->set_newest_write_timestamp(in.newest_write_timestamp());
+ out->mutable_segments_key_bounds()->CopyFrom(in.segments_key_bounds());
+ if (in.has_tablet_schema()) {
+ doris_tablet_schema_to_cloud(out->mutable_tablet_schema(),
in.tablet_schema());
+ }
+ out->set_txn_expiration(in.txn_expiration());
+ out->set_segments_overlap_pb(in.segments_overlap_pb());
+ out->mutable_segments_file_size()->CopyFrom(in.segments_file_size());
+ out->set_index_id(in.index_id());
+ if (in.has_schema_version()) {
+ // See cloud/src/meta-service/meta_service_schema.cpp for details.
+ out->set_schema_version(in.schema_version());
+ }
+ out->set_enable_segments_file_size(in.enable_segments_file_size());
+}
+
+void doris_rowset_meta_to_cloud(RowsetMetaCloudPB* out, RowsetMetaPB&& in) {
// ATTN: please keep the set order aligned with the definition of proto
`TabletSchemaCloudPB`.
+ out->set_rowset_id(in.rowset_id());
+ out->set_partition_id(in.partition_id());
+ out->set_tablet_id(in.tablet_id());
+ out->set_txn_id(in.txn_id());
+ out->set_tablet_schema_hash(in.tablet_schema_hash());
+ out->set_rowset_type(in.rowset_type());
+ out->set_rowset_state(in.rowset_state());
+ out->set_start_version(in.start_version());
+ out->set_end_version(in.end_version());
+ out->set_version_hash(in.version_hash());
+ out->set_num_rows(in.num_rows());
+ out->set_total_disk_size(in.total_disk_size());
+ out->set_data_disk_size(in.data_disk_size());
+ out->set_index_disk_size(in.index_disk_size());
+ out->mutable_zone_maps()->Swap(in.mutable_zone_maps());
+ if (in.has_delete_predicate()) {
+ out->mutable_delete_predicate()->Swap(in.mutable_delete_predicate());
+ }
+ out->set_empty(in.empty());
+ out->mutable_load_id()->CopyFrom(in.load_id());
+ out->set_delete_flag(in.delete_flag());
+ out->set_creation_time(in.creation_time());
+ out->mutable_tablet_uid()->CopyFrom(in.tablet_uid());
+ out->set_num_segments(in.num_segments());
+ out->set_rowset_id_v2(in.rowset_id_v2());
+ out->set_resource_id(in.resource_id());
+ out->set_newest_write_timestamp(in.newest_write_timestamp());
+ out->mutable_segments_key_bounds()->Swap(in.mutable_segments_key_bounds());
+ if (in.has_tablet_schema()) {
+ doris_tablet_schema_to_cloud(out->mutable_tablet_schema(),
+ std::move(*in.mutable_tablet_schema()));
+ }
+ out->set_txn_expiration(in.txn_expiration());
+ out->set_segments_overlap_pb(in.segments_overlap_pb());
+ out->mutable_segments_file_size()->Swap(in.mutable_segments_file_size());
+ out->set_index_id(in.index_id());
+ if (in.has_schema_version()) {
+ // See cloud/src/meta-service/meta_service_schema.cpp for details.
+ out->set_schema_version(in.schema_version());
+ }
+ out->set_enable_segments_file_size(in.enable_segments_file_size());
+}
+
+RowsetMetaPB cloud_rowset_meta_to_doris(const RowsetMetaCloudPB& in) {
+ RowsetMetaPB out;
+ cloud_rowset_meta_to_doris(&out, in);
+ return out;
+}
+
+RowsetMetaPB cloud_rowset_meta_to_doris(RowsetMetaCloudPB&& in) {
+ RowsetMetaPB out;
+ cloud_rowset_meta_to_doris(&out, std::move(in));
+ return out;
+}
+
+void cloud_rowset_meta_to_doris(RowsetMetaPB* out, const RowsetMetaCloudPB&
in) {
+ // ATTN: please keep the set order aligned with the definition of proto
`TabletSchemaCloudPB`.
+ out->set_rowset_id(in.rowset_id());
+ out->set_partition_id(in.partition_id());
+ out->set_tablet_id(in.tablet_id());
+ out->set_txn_id(in.txn_id());
+ out->set_tablet_schema_hash(in.tablet_schema_hash());
+ out->set_rowset_type(in.rowset_type());
+ out->set_rowset_state(in.rowset_state());
+ out->set_start_version(in.start_version());
+ out->set_end_version(in.end_version());
+ out->set_version_hash(in.version_hash());
+ out->set_num_rows(in.num_rows());
+ out->set_total_disk_size(in.total_disk_size());
+ out->set_data_disk_size(in.data_disk_size());
+ out->set_index_disk_size(in.index_disk_size());
+ out->mutable_zone_maps()->CopyFrom(in.zone_maps());
+ if (in.has_delete_predicate()) {
+ out->mutable_delete_predicate()->CopyFrom(in.delete_predicate());
+ }
+ out->set_empty(in.empty());
+ out->mutable_load_id()->CopyFrom(in.load_id());
+ out->set_delete_flag(in.delete_flag());
+ out->set_creation_time(in.creation_time());
+ out->mutable_tablet_uid()->CopyFrom(in.tablet_uid());
+ out->set_num_segments(in.num_segments());
+ out->set_rowset_id_v2(in.rowset_id_v2());
+ out->set_resource_id(in.resource_id());
+ out->set_newest_write_timestamp(in.newest_write_timestamp());
+ out->mutable_segments_key_bounds()->CopyFrom(in.segments_key_bounds());
+ if (in.has_tablet_schema()) {
+ cloud_tablet_schema_to_doris(out->mutable_tablet_schema(),
in.tablet_schema());
+ }
+ out->set_txn_expiration(in.txn_expiration());
+ out->set_segments_overlap_pb(in.segments_overlap_pb());
+ out->mutable_segments_file_size()->CopyFrom(in.segments_file_size());
+ out->set_index_id(in.index_id());
+ if (in.has_schema_version()) {
+ // See cloud/src/meta-service/meta_service_schema.cpp for details.
+ out->set_schema_version(in.schema_version());
+ }
+ out->set_enable_segments_file_size(in.enable_segments_file_size());
+}
+
+void cloud_rowset_meta_to_doris(RowsetMetaPB* out, RowsetMetaCloudPB&& in) {
+ // ATTN: please keep the set order aligned with the definition of proto
`TabletSchemaCloudPB`.
+ out->set_rowset_id(in.rowset_id());
+ out->set_partition_id(in.partition_id());
+ out->set_tablet_id(in.tablet_id());
+ out->set_txn_id(in.txn_id());
+ out->set_tablet_schema_hash(in.tablet_schema_hash());
+ out->set_rowset_type(in.rowset_type());
+ out->set_rowset_state(in.rowset_state());
+ out->set_start_version(in.start_version());
+ out->set_end_version(in.end_version());
+ out->set_version_hash(in.version_hash());
+ out->set_num_rows(in.num_rows());
+ out->set_total_disk_size(in.total_disk_size());
+ out->set_data_disk_size(in.data_disk_size());
+ out->set_index_disk_size(in.index_disk_size());
+ out->mutable_zone_maps()->Swap(in.mutable_zone_maps());
+ if (in.has_delete_predicate()) {
+ out->mutable_delete_predicate()->Swap(in.mutable_delete_predicate());
+ }
+ out->set_empty(in.empty());
+ out->mutable_load_id()->CopyFrom(in.load_id());
+ out->set_delete_flag(in.delete_flag());
+ out->set_creation_time(in.creation_time());
+ out->mutable_tablet_uid()->CopyFrom(in.tablet_uid());
+ out->set_num_segments(in.num_segments());
+ out->set_rowset_id_v2(in.rowset_id_v2());
+ out->set_resource_id(in.resource_id());
+ out->set_newest_write_timestamp(in.newest_write_timestamp());
+ out->mutable_segments_key_bounds()->Swap(in.mutable_segments_key_bounds());
+ if (in.has_tablet_schema()) {
+ cloud_tablet_schema_to_doris(out->mutable_tablet_schema(),
+ std::move(*in.mutable_tablet_schema()));
+ }
+ out->set_txn_expiration(in.txn_expiration());
+ out->set_segments_overlap_pb(in.segments_overlap_pb());
+ out->mutable_segments_file_size()->Swap(in.mutable_segments_file_size());
+ out->set_index_id(in.index_id());
+ if (in.has_schema_version()) {
+ // See cloud/src/meta-service/meta_service_schema.cpp for details.
+ out->set_schema_version(in.schema_version());
+ }
+ out->set_enable_segments_file_size(in.enable_segments_file_size());
+}
+
+TabletSchemaCloudPB doris_tablet_schema_to_cloud(const TabletSchemaPB& in) {
TabletSchemaCloudPB out;
- out.set_keys_type(in.keys_type());
- out.mutable_column()->CopyFrom(in.column());
- out.set_num_short_key_columns(in.num_short_key_columns());
- out.set_num_rows_per_row_block(in.num_rows_per_row_block());
- out.set_compress_kind(in.compress_kind());
- out.set_bf_fpp(in.bf_fpp());
- out.set_next_column_unique_id(in.next_column_unique_id());
- out.set_delete_sign_idx(in.delete_sign_idx());
- out.set_sequence_col_idx(in.sequence_col_idx());
- out.set_sort_type(in.sort_type());
- out.set_sort_col_num(in.sort_col_num());
- out.set_compression_type(in.compression_type());
- out.set_schema_version(in.schema_version());
- out.set_disable_auto_compaction(in.disable_auto_compaction());
- out.mutable_index()->CopyFrom(in.index());
- out.set_version_col_idx(in.version_col_idx());
- out.set_store_row_column(in.store_row_column());
-
out.set_enable_single_replica_compaction(in.enable_single_replica_compaction());
- out.set_skip_write_index_on_load(in.skip_write_index_on_load());
- out.mutable_cluster_key_idxes()->CopyFrom(in.cluster_key_idxes());
- out.set_is_dynamic_schema(in.is_dynamic_schema());
+ doris_tablet_schema_to_cloud(&out, in);
return out;
}
TabletSchemaCloudPB doris_tablet_schema_to_cloud(TabletSchemaPB&& in) {
// ATTN: please keep the set order aligned with the definition of proto.
TabletSchemaCloudPB out;
- out.set_keys_type(in.keys_type());
- out.mutable_column()->Swap(in.mutable_column());
- out.set_num_short_key_columns(in.num_short_key_columns());
- out.set_num_rows_per_row_block(in.num_rows_per_row_block());
- out.set_compress_kind(in.compress_kind());
- out.set_bf_fpp(in.bf_fpp());
- out.set_next_column_unique_id(in.next_column_unique_id());
- out.set_delete_sign_idx(in.delete_sign_idx());
- out.set_sequence_col_idx(in.sequence_col_idx());
- out.set_sort_type(in.sort_type());
- out.set_sort_col_num(in.sort_col_num());
- out.set_compression_type(in.compression_type());
- out.set_schema_version(in.schema_version());
- out.set_disable_auto_compaction(in.disable_auto_compaction());
- out.mutable_index()->Swap(in.mutable_index());
- out.set_version_col_idx(in.version_col_idx());
- out.set_store_row_column(in.store_row_column());
-
out.set_enable_single_replica_compaction(in.enable_single_replica_compaction());
- out.set_skip_write_index_on_load(in.skip_write_index_on_load());
- out.mutable_cluster_key_idxes()->Swap(in.mutable_cluster_key_idxes());
- out.set_is_dynamic_schema(in.is_dynamic_schema());
+ doris_tablet_schema_to_cloud(&out, std::move(in));
return out;
}
+void doris_tablet_schema_to_cloud(TabletSchemaCloudPB* out, const
TabletSchemaPB& in) {
+ // ATTN: please keep the set order aligned with the definition of proto.
+ out->set_keys_type(in.keys_type());
+ out->mutable_column()->CopyFrom(in.column());
+ out->set_num_short_key_columns(in.num_short_key_columns());
+ out->set_num_rows_per_row_block(in.num_rows_per_row_block());
+ out->set_compress_kind(in.compress_kind());
+ out->set_bf_fpp(in.bf_fpp());
+ out->set_next_column_unique_id(in.next_column_unique_id());
+ out->set_delete_sign_idx(in.delete_sign_idx());
+ out->set_sequence_col_idx(in.sequence_col_idx());
+ out->set_sort_type(in.sort_type());
+ out->set_sort_col_num(in.sort_col_num());
+ out->set_compression_type(in.compression_type());
+ out->set_schema_version(in.schema_version());
+ out->set_disable_auto_compaction(in.disable_auto_compaction());
+ out->mutable_index()->CopyFrom(in.index());
+ out->set_version_col_idx(in.version_col_idx());
+ out->set_store_row_column(in.store_row_column());
+
out->set_enable_single_replica_compaction(in.enable_single_replica_compaction());
+ out->set_skip_write_index_on_load(in.skip_write_index_on_load());
+ out->mutable_cluster_key_idxes()->CopyFrom(in.cluster_key_idxes());
+ out->set_is_dynamic_schema(in.is_dynamic_schema());
+}
+
+void doris_tablet_schema_to_cloud(TabletSchemaCloudPB* out, TabletSchemaPB&&
in) {
+ out->set_keys_type(in.keys_type());
+ out->mutable_column()->Swap(in.mutable_column());
+ out->set_num_short_key_columns(in.num_short_key_columns());
+ out->set_num_rows_per_row_block(in.num_rows_per_row_block());
+ out->set_compress_kind(in.compress_kind());
+ out->set_bf_fpp(in.bf_fpp());
+ out->set_next_column_unique_id(in.next_column_unique_id());
+ out->set_delete_sign_idx(in.delete_sign_idx());
+ out->set_sequence_col_idx(in.sequence_col_idx());
+ out->set_sort_type(in.sort_type());
+ out->set_sort_col_num(in.sort_col_num());
+ out->set_compression_type(in.compression_type());
+ out->set_schema_version(in.schema_version());
+ out->set_disable_auto_compaction(in.disable_auto_compaction());
+ out->mutable_index()->Swap(in.mutable_index());
+ out->set_version_col_idx(in.version_col_idx());
+ out->set_store_row_column(in.store_row_column());
+
out->set_enable_single_replica_compaction(in.enable_single_replica_compaction());
+ out->set_skip_write_index_on_load(in.skip_write_index_on_load());
+ out->mutable_cluster_key_idxes()->Swap(in.mutable_cluster_key_idxes());
+ out->set_is_dynamic_schema(in.is_dynamic_schema());
+}
+
TabletSchemaPB cloud_tablet_schema_to_doris(const TabletSchemaCloudPB& in) {
TabletSchemaPB out;
cloud_tablet_schema_to_doris(&out, in);
@@ -135,4 +349,282 @@ void cloud_tablet_schema_to_doris(TabletSchemaPB* out,
TabletSchemaCloudPB&& in)
out->set_is_dynamic_schema(in.is_dynamic_schema());
}
+TabletMetaCloudPB doris_tablet_meta_to_cloud(const TabletMetaPB& in) {
+ TabletMetaCloudPB out;
+ doris_tablet_meta_to_cloud(&out, in);
+ return out;
+}
+
+TabletMetaCloudPB doris_tablet_meta_to_cloud(TabletMetaPB&& in) {
+ TabletMetaCloudPB out;
+ doris_tablet_meta_to_cloud(&out, std::move(in));
+ return out;
+}
+
+void doris_tablet_meta_to_cloud(TabletMetaCloudPB* out, const TabletMetaPB&
in) {
+ // ATTN: please keep the set order aligned with the definition of proto.
+ out->set_table_id(in.table_id());
+ out->set_partition_id(in.partition_id());
+ out->set_tablet_id(in.tablet_id());
+ out->set_schema_hash(in.schema_hash());
+ out->set_shard_id(in.shard_id());
+ out->set_creation_time(in.creation_time());
+ out->set_cumulative_layer_point(in.cumulative_layer_point());
+ out->set_tablet_state(in.tablet_state());
+ if (in.has_schema()) {
+ doris_tablet_schema_to_cloud(out->mutable_schema(), in.schema());
+ }
+ if (in.rs_metas_size()) {
+ out->mutable_rs_metas()->Reserve(in.rs_metas_size());
+ for (const auto& rs_meta : in.rs_metas()) {
+ doris_rowset_meta_to_cloud(out->add_rs_metas(), rs_meta);
+ }
+ }
+ // ATTN: inc_rs_metas are deprecated, ignored here.
+ if (in.has_alter_task()) {
+ out->mutable_alter_task()->CopyFrom(in.alter_task());
+ }
+ out->set_in_restore_mode(in.in_restore_mode());
+ out->mutable_tablet_uid()->CopyFrom(in.tablet_uid());
+ out->set_end_rowset_id(in.end_rowset_id());
+ out->set_preferred_rowset_type(in.preferred_rowset_type());
+ out->set_tablet_type(in.tablet_type());
+ if (in.stale_rs_metas_size()) {
+ out->mutable_stale_rs_metas()->Reserve(in.stale_rs_metas_size());
+ for (const auto& rs_meta : in.stale_rs_metas()) {
+ doris_rowset_meta_to_cloud(out->add_stale_rs_metas(), rs_meta);
+ }
+ }
+ out->set_replica_id(in.replica_id());
+ if (in.has_delete_bitmap()) {
+ out->mutable_delete_bitmap()->CopyFrom(in.delete_bitmap());
+ }
+
out->set_enable_unique_key_merge_on_write(in.enable_unique_key_merge_on_write());
+ out->set_storage_policy_id(in.storage_policy_id());
+ out->mutable_cooldown_meta_id()->CopyFrom(in.cooldown_meta_id());
+ if (in.has_binlog_config()) {
+ out->mutable_binlog_config()->CopyFrom(in.binlog_config());
+ }
+ out->set_compaction_policy(in.compaction_policy());
+
out->set_time_series_compaction_goal_size_mbytes(in.time_series_compaction_goal_size_mbytes());
+ out->set_time_series_compaction_file_count_threshold(
+ in.time_series_compaction_file_count_threshold());
+ out->set_time_series_compaction_time_threshold_seconds(
+ in.time_series_compaction_time_threshold_seconds());
+ out->set_time_series_compaction_empty_rowsets_threshold(
+ in.time_series_compaction_empty_rowsets_threshold());
+ out->set_index_id(in.index_id());
+ out->set_is_in_memory(in.is_in_memory());
+ out->set_is_persistent(in.is_persistent());
+ out->set_table_name(in.table_name());
+ out->set_ttl_seconds(in.ttl_seconds());
+ if (in.has_schema_version()) {
+ out->set_schema_version(in.schema_version());
+ }
+}
+
+void doris_tablet_meta_to_cloud(TabletMetaCloudPB* out, TabletMetaPB&& in) {
+ // ATTN: please keep the set order aligned with the definition of proto.
+ out->set_table_id(in.table_id());
+ out->set_partition_id(in.partition_id());
+ out->set_tablet_id(in.tablet_id());
+ out->set_schema_hash(in.schema_hash());
+ out->set_shard_id(in.shard_id());
+ out->set_creation_time(in.creation_time());
+ out->set_cumulative_layer_point(in.cumulative_layer_point());
+ out->set_tablet_state(in.tablet_state());
+ if (in.has_schema()) {
+ doris_tablet_schema_to_cloud(out->mutable_schema(),
std::move(*in.mutable_schema()));
+ }
+ if (in.rs_metas_size()) {
+ size_t rs_metas_size = in.rs_metas_size();
+ out->mutable_rs_metas()->Reserve(rs_metas_size);
+ for (size_t i = 0; i < rs_metas_size; ++i) {
+ doris_rowset_meta_to_cloud(out->add_rs_metas(),
std::move(*in.mutable_rs_metas(i)));
+ }
+ }
+ // ATTN: inc_rs_metas are deprecated, ignored here.
+ if (in.has_alter_task()) {
+ out->mutable_alter_task()->Swap(in.mutable_alter_task());
+ }
+ out->set_in_restore_mode(in.in_restore_mode());
+ out->mutable_tablet_uid()->CopyFrom(in.tablet_uid());
+ out->set_end_rowset_id(in.end_rowset_id());
+ out->set_preferred_rowset_type(in.preferred_rowset_type());
+ out->set_tablet_type(in.tablet_type());
+ if (in.stale_rs_metas_size()) {
+ size_t rs_metas_size = in.stale_rs_metas_size();
+ out->mutable_stale_rs_metas()->Reserve(rs_metas_size);
+ for (size_t i = 0; i < rs_metas_size; i++) {
+ doris_rowset_meta_to_cloud(out->add_stale_rs_metas(),
+
std::move(*in.mutable_stale_rs_metas(i)));
+ }
+ }
+ out->set_replica_id(in.replica_id());
+ if (in.has_delete_bitmap()) {
+ out->mutable_delete_bitmap()->Swap(in.mutable_delete_bitmap());
+ }
+
out->set_enable_unique_key_merge_on_write(in.enable_unique_key_merge_on_write());
+ out->set_storage_policy_id(in.storage_policy_id());
+ out->mutable_cooldown_meta_id()->CopyFrom(in.cooldown_meta_id());
+ if (in.has_binlog_config()) {
+ out->mutable_binlog_config()->Swap(in.mutable_binlog_config());
+ }
+ out->set_compaction_policy(in.compaction_policy());
+
out->set_time_series_compaction_goal_size_mbytes(in.time_series_compaction_goal_size_mbytes());
+ out->set_time_series_compaction_file_count_threshold(
+ in.time_series_compaction_file_count_threshold());
+ out->set_time_series_compaction_time_threshold_seconds(
+ in.time_series_compaction_time_threshold_seconds());
+ out->set_time_series_compaction_empty_rowsets_threshold(
+ in.time_series_compaction_empty_rowsets_threshold());
+ out->set_index_id(in.index_id());
+ out->set_is_in_memory(in.is_in_memory());
+ out->set_is_persistent(in.is_persistent());
+ out->set_table_name(in.table_name());
+ out->set_ttl_seconds(in.ttl_seconds());
+ if (in.has_schema_version()) {
+ out->set_schema_version(in.schema_version());
+ }
+}
+
+TabletMetaPB cloud_tablet_meta_to_doris(const TabletMetaCloudPB& in) {
+ TabletMetaPB out;
+ cloud_tablet_meta_to_doris(&out, in);
+ return out;
+}
+
+TabletMetaPB cloud_tablet_meta_to_doris(TabletMetaCloudPB&& in) {
+ TabletMetaPB out;
+ cloud_tablet_meta_to_doris(&out, std::move(in));
+ return out;
+}
+
+void cloud_tablet_meta_to_doris(TabletMetaPB* out, const TabletMetaCloudPB&
in) {
+ // ATTN: please keep the set order aligned with the definition of proto.
+ out->set_table_id(in.table_id());
+ out->set_partition_id(in.partition_id());
+ out->set_tablet_id(in.tablet_id());
+ out->set_schema_hash(in.schema_hash());
+ out->set_shard_id(in.shard_id());
+ out->set_creation_time(in.creation_time());
+ out->set_cumulative_layer_point(in.cumulative_layer_point());
+ out->set_tablet_state(in.tablet_state());
+ if (in.has_schema()) {
+ cloud_tablet_schema_to_doris(out->mutable_schema(), in.schema());
+ }
+ if (in.rs_metas_size()) {
+ out->mutable_rs_metas()->Reserve(in.rs_metas_size());
+ for (const auto& rs_meta : in.rs_metas()) {
+ cloud_rowset_meta_to_doris(out->add_rs_metas(), rs_meta);
+ }
+ }
+ // ATTN: inc_rs_metas are deprecated, ignored here.
+ if (in.has_alter_task()) {
+ out->mutable_alter_task()->CopyFrom(in.alter_task());
+ }
+ out->set_in_restore_mode(in.in_restore_mode());
+ out->mutable_tablet_uid()->CopyFrom(in.tablet_uid());
+ out->set_end_rowset_id(in.end_rowset_id());
+ out->set_preferred_rowset_type(in.preferred_rowset_type());
+ out->set_tablet_type(in.tablet_type());
+ if (in.stale_rs_metas_size()) {
+ out->mutable_stale_rs_metas()->Reserve(in.stale_rs_metas_size());
+ for (const auto& rs_meta : in.stale_rs_metas()) {
+ cloud_rowset_meta_to_doris(out->add_stale_rs_metas(), rs_meta);
+ }
+ }
+ out->set_replica_id(in.replica_id());
+ if (in.has_delete_bitmap()) {
+ out->mutable_delete_bitmap()->CopyFrom(in.delete_bitmap());
+ }
+
out->set_enable_unique_key_merge_on_write(in.enable_unique_key_merge_on_write());
+ out->set_storage_policy_id(in.storage_policy_id());
+ out->mutable_cooldown_meta_id()->CopyFrom(in.cooldown_meta_id());
+ if (in.has_binlog_config()) {
+ out->mutable_binlog_config()->CopyFrom(in.binlog_config());
+ }
+ out->set_compaction_policy(in.compaction_policy());
+
out->set_time_series_compaction_goal_size_mbytes(in.time_series_compaction_goal_size_mbytes());
+ out->set_time_series_compaction_file_count_threshold(
+ in.time_series_compaction_file_count_threshold());
+ out->set_time_series_compaction_time_threshold_seconds(
+ in.time_series_compaction_time_threshold_seconds());
+ out->set_time_series_compaction_empty_rowsets_threshold(
+ in.time_series_compaction_empty_rowsets_threshold());
+ out->set_index_id(in.index_id());
+ out->set_is_in_memory(in.is_in_memory());
+ out->set_is_persistent(in.is_persistent());
+ out->set_table_name(in.table_name());
+ out->set_ttl_seconds(in.ttl_seconds());
+ if (in.has_schema_version()) {
+ out->set_schema_version(in.schema_version());
+ }
+}
+
+void cloud_tablet_meta_to_doris(TabletMetaPB* out, TabletMetaCloudPB&& in) {
+ // ATTN: please keep the set order aligned with the definition of proto.
+ out->set_table_id(in.table_id());
+ out->set_partition_id(in.partition_id());
+ out->set_tablet_id(in.tablet_id());
+ out->set_schema_hash(in.schema_hash());
+ out->set_shard_id(in.shard_id());
+ out->set_creation_time(in.creation_time());
+ out->set_cumulative_layer_point(in.cumulative_layer_point());
+ out->set_tablet_state(in.tablet_state());
+ if (in.has_schema()) {
+ cloud_tablet_schema_to_doris(out->mutable_schema(),
std::move(*in.mutable_schema()));
+ }
+ if (in.rs_metas_size()) {
+ size_t rs_metas_size = in.rs_metas_size();
+ out->mutable_rs_metas()->Reserve(rs_metas_size);
+ for (size_t i = 0; i < rs_metas_size; ++i) {
+ cloud_rowset_meta_to_doris(out->add_rs_metas(),
std::move(*in.mutable_rs_metas(i)));
+ }
+ }
+ // ATTN: inc_rs_metas are deprecated, ignored here.
+ if (in.has_alter_task()) {
+ out->mutable_alter_task()->Swap(in.mutable_alter_task());
+ }
+ out->set_in_restore_mode(in.in_restore_mode());
+ out->mutable_tablet_uid()->CopyFrom(in.tablet_uid());
+ out->set_end_rowset_id(in.end_rowset_id());
+ out->set_preferred_rowset_type(in.preferred_rowset_type());
+ out->set_tablet_type(in.tablet_type());
+ if (in.stale_rs_metas_size()) {
+ size_t rs_metas_size = in.stale_rs_metas_size();
+ out->mutable_stale_rs_metas()->Reserve(rs_metas_size);
+ for (size_t i = 0; i < rs_metas_size; i++) {
+ cloud_rowset_meta_to_doris(out->add_stale_rs_metas(),
+
std::move(*in.mutable_stale_rs_metas(i)));
+ }
+ }
+ out->set_replica_id(in.replica_id());
+ if (in.has_delete_bitmap()) {
+ out->mutable_delete_bitmap()->Swap(in.mutable_delete_bitmap());
+ }
+
out->set_enable_unique_key_merge_on_write(in.enable_unique_key_merge_on_write());
+ out->set_storage_policy_id(in.storage_policy_id());
+ out->mutable_cooldown_meta_id()->CopyFrom(in.cooldown_meta_id());
+ if (in.has_binlog_config()) {
+ out->mutable_binlog_config()->Swap(in.mutable_binlog_config());
+ }
+ out->set_compaction_policy(in.compaction_policy());
+
out->set_time_series_compaction_goal_size_mbytes(in.time_series_compaction_goal_size_mbytes());
+ out->set_time_series_compaction_file_count_threshold(
+ in.time_series_compaction_file_count_threshold());
+ out->set_time_series_compaction_time_threshold_seconds(
+ in.time_series_compaction_time_threshold_seconds());
+ out->set_time_series_compaction_empty_rowsets_threshold(
+ in.time_series_compaction_empty_rowsets_threshold());
+ out->set_index_id(in.index_id());
+ out->set_is_in_memory(in.is_in_memory());
+ out->set_is_persistent(in.is_persistent());
+ out->set_table_name(in.table_name());
+ out->set_ttl_seconds(in.ttl_seconds());
+ if (in.has_schema_version()) {
+ out->set_schema_version(in.schema_version());
+ }
+}
+
} // namespace doris::cloud
diff --git a/be/src/cloud/pb_convert.h b/be/src/cloud/pb_convert.h
index db8b77d7b09..0cfa033f293 100644
--- a/be/src/cloud/pb_convert.h
+++ b/be/src/cloud/pb_convert.h
@@ -19,11 +19,34 @@
namespace doris::cloud {
+// RowsetMetaPB <=> RowsetMetaCloudPB
+RowsetMetaCloudPB doris_rowset_meta_to_cloud(const RowsetMetaPB&);
+RowsetMetaCloudPB doris_rowset_meta_to_cloud(RowsetMetaPB&&);
+void doris_rowset_meta_to_cloud(RowsetMetaCloudPB* out, const RowsetMetaPB&
in);
+void doris_rowset_meta_to_cloud(RowsetMetaCloudPB* out, RowsetMetaPB&& in);
+RowsetMetaPB cloud_rowset_meta_to_doris(const RowsetMetaCloudPB&);
+RowsetMetaPB cloud_rowset_meta_to_doris(RowsetMetaCloudPB&&);
+void cloud_rowset_meta_to_doris(RowsetMetaPB* out, const RowsetMetaCloudPB&
in);
+void cloud_rowset_meta_to_doris(RowsetMetaPB* out, RowsetMetaCloudPB&& in);
+
+// TabletSchemaPB <=> TabletSchemaCloudPB
TabletSchemaCloudPB doris_tablet_schema_to_cloud(const TabletSchemaPB&);
TabletSchemaCloudPB doris_tablet_schema_to_cloud(TabletSchemaPB&&);
+void doris_tablet_schema_to_cloud(TabletSchemaCloudPB* out, const
TabletSchemaPB& in);
+void doris_tablet_schema_to_cloud(TabletSchemaCloudPB* out, TabletSchemaPB&&
in);
TabletSchemaPB cloud_tablet_schema_to_doris(const TabletSchemaCloudPB&);
TabletSchemaPB cloud_tablet_schema_to_doris(TabletSchemaCloudPB&&);
void cloud_tablet_schema_to_doris(TabletSchemaPB* out, const
TabletSchemaCloudPB& in);
void cloud_tablet_schema_to_doris(TabletSchemaPB* out, TabletSchemaCloudPB&&
in);
+// TabletMetaPB <=> TabletMetaCloudPB
+TabletMetaCloudPB doris_tablet_meta_to_cloud(const TabletMetaPB&);
+TabletMetaCloudPB doris_tablet_meta_to_cloud(TabletMetaPB&&);
+void doris_tablet_meta_to_cloud(TabletMetaCloudPB* out, const TabletMetaPB&
in);
+void doris_tablet_meta_to_cloud(TabletMetaCloudPB* out, TabletMetaPB&& in);
+TabletMetaPB cloud_tablet_meta_to_doris(const TabletMetaCloudPB&);
+TabletMetaPB cloud_tablet_meta_to_doris(TabletMetaCloudPB&&);
+void cloud_tablet_meta_to_doris(TabletMetaPB* out, const TabletMetaCloudPB&
in);
+void cloud_tablet_meta_to_doris(TabletMetaPB* out, TabletMetaCloudPB&& in);
+
} // namespace doris::cloud
diff --git a/gensrc/proto/cloud.proto b/gensrc/proto/cloud.proto
index b3794e58128..ebf684a1ce4 100644
--- a/gensrc/proto/cloud.proto
+++ b/gensrc/proto/cloud.proto
@@ -396,7 +396,7 @@ message RecycleRowsetPB {
optional int64 creation_time = 3;
optional int64 expiration = 4; // expiration timestamp
optional Type type = 5;
- optional doris.RowsetMetaPB rowset_meta = 6;
+ optional doris.RowsetMetaCloudPB rowset_meta = 6;
}
message RecycleStagePB {
@@ -724,7 +724,7 @@ message GetObjStoreInfoResponse {
message CreateTabletsRequest {
optional string cloud_unique_id = 1; // For auth
- repeated doris.TabletMetaPB tablet_metas = 2;
+ repeated doris.TabletMetaCloudPB tablet_metas = 2;
}
message CreateTabletsResponse {
@@ -743,7 +743,7 @@ message UpdateTabletResponse {
message UpdateTabletSchemaRequest {
optional string cloud_unique_id = 1; // For auth
optional int64 tablet_id = 2;
- optional doris.TabletSchemaPB tablet_schema = 3;
+ optional doris.TabletSchemaCloudPB tablet_schema = 3;
}
message UpdateTabletSchemaResponse {
@@ -764,18 +764,18 @@ message GetTabletRequest {
message GetTabletResponse {
optional MetaServiceResponseStatus status = 1;
- optional doris.TabletMetaPB tablet_meta = 2;
+ optional doris.TabletMetaCloudPB tablet_meta = 2;
}
message CreateRowsetRequest {
optional string cloud_unique_id = 1; // For auth
- optional doris.RowsetMetaPB rowset_meta = 2;
+ optional doris.RowsetMetaCloudPB rowset_meta = 2;
optional bool temporary = 3;
}
message CreateRowsetResponse {
optional MetaServiceResponseStatus status = 1;
- optional doris.RowsetMetaPB existed_rowset_meta = 2;
+ optional doris.RowsetMetaCloudPB existed_rowset_meta = 2;
}
message GetRowsetRequest {
@@ -791,7 +791,7 @@ message GetRowsetRequest {
message GetRowsetResponse {
optional MetaServiceResponseStatus status = 1;
- repeated doris.RowsetMetaPB rowset_meta = 2;
+ repeated doris.RowsetMetaCloudPB rowset_meta = 2;
optional TabletStatsPB stats = 3;
}
diff --git a/gensrc/proto/olap_file.proto b/gensrc/proto/olap_file.proto
index 6a407858a33..8e2ba5c0498 100644
--- a/gensrc/proto/olap_file.proto
+++ b/gensrc/proto/olap_file.proto
@@ -60,6 +60,8 @@ message KeyBoundsPB {
required bytes max_key = 2;
}
+// ATTN: When adding or deleting fields, please update `message
RowsetMetaCloudPB`
+// simultaneously and modify the conversion function in the
be/src/cloud/pb_convert.{h,cpp}.
message RowsetMetaPB {
required int64 rowset_id = 1; // Deprecated. Use rowset_id_v2 instead.
optional int64 partition_id = 2;
@@ -111,6 +113,75 @@ message RowsetMetaPB {
repeated KeyBoundsPB segments_key_bounds = 27;
// tablet meta pb, for compaction
optional TabletSchemaPB tablet_schema = 28;
+ // alpha_rowset_extra_meta_pb is deleted
+ reserved 50;
+ // to indicate whether the data between the segments overlap
+ optional SegmentsOverlapPB segments_overlap_pb = 51 [default =
OVERLAP_UNKNOWN];
+
+ // For cloud
+ // for data recycling
+ optional int64 txn_expiration = 1000;
+ // the field is a vector, rename it
+ repeated int64 segments_file_size = 1001;
+ // index_id, schema_version -> schema
+ optional int64 index_id = 1002;
+ optional int32 schema_version = 1003;
+ // If enable_segments_file_size is false,
+ // the segments_file_size maybe is empty or error
+ optional bool enable_segments_file_size = 1004;
+}
+
+message RowsetMetaCloudPB {
+ required int64 rowset_id = 1; // Deprecated. Use rowset_id_v2 instead.
+ optional int64 partition_id = 2;
+ optional int64 tablet_id = 3;
+ // only for pending rowset
+ optional int64 txn_id = 4;
+ // tablet id and schema hash could find tablet
+ optional int32 tablet_schema_hash = 5;
+ optional RowsetTypePB rowset_type = 6;
+ optional RowsetStatePB rowset_state = 7;
+ // only for visible rowset. For alpha rowset, it's the same as
PDelta.start_version
+ optional int64 start_version = 8;
+ // only for visible rowset. For alpha rowset, it's the same as
PDelta.end_version
+ optional int64 end_version = 9;
+ // only for visible rowset. For alpha rowset, it's the same as
PDelta.version_hash
+ optional int64 version_hash = 10;
+ // total number of rows. For alpha rowset, it's calculated from segment
group
+ optional int64 num_rows = 11;
+ // calculated by index + data
+ optional int64 total_disk_size = 12;
+ // calculated sum(segmentgroup.data_size)
+ optional int64 data_disk_size = 13;
+ // calculated sum(segmentgroup.index_size)
+ optional int64 index_disk_size = 14;
+ // rowset level column min/max/null statistics, not not used currently
+ repeated ZoneMap zone_maps = 15;
+ optional DeletePredicatePB delete_predicate = 16;
+ // calculated from segment group
+ optional bool empty = 17;
+ // only for pending rowset
+ optional PUniqueId load_id = 18;
+ // not set, get from olap index header msg?
+ optional bool delete_flag = 19;
+ // For alpha rowset, it's the same as PDelta.creation_time
+ optional int64 creation_time = 20;
+ optional PUniqueId tablet_uid = 21;
+ // total number of segments
+ optional int64 num_segments = 22;
+ // rowset id definition, it will replace required rowset id
+ optional string rowset_id_v2 = 23;
+ // resource id
+ optional string resource_id = 24;
+ // used to be oldest write time: earliest write time
+ reserved 25;
+ // latest write time
+ optional int64 newest_write_timestamp = 26 [default = -1];
+ // the encoded segment min/max key of segments in this rowset,
+ // only used in unique key data model with primary_key_index support.
+ repeated KeyBoundsPB segments_key_bounds = 27;
+ // tablet meta pb, for compaction
+ optional TabletSchemaCloudPB tablet_schema = 28;
// for data recycling in CLOUD_MODE
optional int64 txn_expiration = 29;
// alpha_rowset_extra_meta_pb is deleted
@@ -118,7 +189,7 @@ message RowsetMetaPB {
// to indicate whether the data between the segments overlap
optional SegmentsOverlapPB segments_overlap_pb = 51 [default =
OVERLAP_UNKNOWN];
- // For cloud
+ // cloud
// the field is a vector, rename it
repeated int64 segments_file_size = 100;
// index_id, schema_version -> schema
@@ -339,6 +410,8 @@ message BinlogConfigPB {
optional int64 max_history_nums = 4;
}
+// ATTN: When adding or deleting fields, please update `message
TabletMetaCloudPB`
+// simultaneously and modify the conversion function in the
be/src/cloud/pb_convert.{h,cpp}.
message TabletMetaPB {
optional int64 table_id = 1; // ?
optional int64 partition_id = 2; // ?
@@ -379,6 +452,64 @@ message TabletMetaPB {
optional int64 time_series_compaction_file_count_threshold = 30 [default =
2000];
optional int64 time_series_compaction_time_threshold_seconds = 31 [default
= 3600];
optional int64 time_series_compaction_empty_rowsets_threshold = 32
[default = 5];
+
+ // For cloud
+ optional int64 index_id = 1000;
+ optional bool is_in_memory = 1001;
+ optional bool is_persistent = 1002;
+ optional string table_name = 1003;
+ optional int64 ttl_seconds = 1004;
+ optional int32 schema_version = 1005; // index_id, schema_version -> schema
+}
+
+message TabletMetaCloudPB {
+ optional int64 table_id = 1; // ?
+ optional int64 partition_id = 2; // ?
+ optional int64 tablet_id = 3; // OlapHeaderMessage.tablet_id
+ optional int32 schema_hash = 4; // OlapHeaderMessage.schema_hash
+ optional int32 shard_id = 5; // OlapHeaderMessage.shard
+ optional int64 creation_time = 6; // OlapHeaderMessage.creation_time
+ optional int64 cumulative_layer_point = 7; //
OlapHeaderMessage.cumulative_layer_point
+
+ optional TabletStatePB tablet_state = 8;
+ optional TabletSchemaCloudPB schema = 9;
+ repeated RowsetMetaCloudPB rs_metas = 10;
+ // @Deprecated
+ repeated RowsetMetaCloudPB inc_rs_metas = 11;
+ optional AlterTabletPB alter_task = 12;
+ // if true, this tablet will not do compaction,
+ // and does not create init version
+ optional bool in_restore_mode = 13 [default = false]; //
OlapHeaderMessage.in_restore_mode
+ // a uniqued id to identified tablet with same tablet_id and schema hash
+ optional PUniqueId tablet_uid = 14;
+ optional int64 end_rowset_id = 15;
+ optional RowsetTypePB preferred_rowset_type = 16;
+ optional TabletTypePB tablet_type = 17;
+ repeated RowsetMetaCloudPB stale_rs_metas = 18;
+ // optional StorageMediumPB storage_medium = 19 [default = HDD];
+ // optional string remote_storage_name = 20;
+ optional int64 replica_id = 21 [default = 0];
+ // 22 used to be string storage_policy = 22;
+ reserved 22;
+ optional DeleteBitmapPB delete_bitmap = 23;
+ // Use primary key index to speed up tabel unique key model
+ optional bool enable_unique_key_merge_on_write = 24 [default = false];
+ optional int64 index_id = 25;
+ optional bool is_in_memory = 26 [default=false];
+ optional bool is_persistent = 27 [default=false];
+ optional int64 storage_policy_id = 28;
+ optional PUniqueId cooldown_meta_id = 29;
+ optional BinlogConfigPB binlog_config = 30;
+ optional string compaction_policy = 31 [default = "size_based"];
+ optional int64 time_series_compaction_goal_size_mbytes = 32 [default =
1024];
+ optional int64 time_series_compaction_file_count_threshold = 33 [default =
2000];
+ optional int64 time_series_compaction_time_threshold_seconds = 34 [default
= 3600];
+ optional int64 time_series_compaction_empty_rowsets_threshold = 35
[default = 5];
+
+ // Use for selectdb-cloud
+ optional string table_name = 101;
+ optional int64 ttl_seconds = 102;
+ optional int32 schema_version = 103; // index_id, schema_version -> schema
}
message OLAPRawDeltaHeaderMessage {
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]