Skip to content

Commit 1a637cf

Browse files
committed
Place the implementation of private functions together
1 parent 62960f3 commit 1a637cf

1 file changed

Lines changed: 64 additions & 64 deletions

File tree

src/iceberg/table_metadata.cc

Lines changed: 64 additions & 64 deletions
Original file line numberDiff line numberDiff line change
@@ -706,23 +706,6 @@ Status TableMetadataBuilder::Impl::RemoveSchemas(const std::vector<int32_t>& sch
706706
return {};
707707
}
708708

709-
int32_t TableMetadataBuilder::Impl::ReuseOrCreateNewSortOrderId(
710-
const SortOrder& new_order) {
711-
if (new_order.is_unsorted()) {
712-
return SortOrder::kUnsortedOrderId;
713-
}
714-
// determine the next order id
715-
int32_t new_order_id = SortOrder::kInitialSortOrderId;
716-
for (const auto& order : metadata_.sort_orders) {
717-
if (order->SameOrder(new_order)) {
718-
return order->order_id();
719-
} else if (new_order_id <= order->order_id()) {
720-
new_order_id = order->order_id() + 1;
721-
}
722-
}
723-
return new_order_id;
724-
}
725-
726709
Result<int32_t> TableMetadataBuilder::Impl::AddSchema(const Schema& schema,
727710
int32_t new_last_column_id) {
728711
if (new_last_column_id < metadata_.last_column_id) {
@@ -765,6 +748,70 @@ Result<int32_t> TableMetadataBuilder::Impl::AddSchema(const Schema& schema,
765748
return new_schema_id;
766749
}
767750

751+
Result<std::unique_ptr<TableMetadata>> TableMetadataBuilder::Impl::Build() {
752+
// 1. Validate metadata consistency through TableMetadata#Validate
753+
754+
// 2. Update last_updated_ms if there are changes
755+
if (metadata_.last_updated_ms == kInvalidLastUpdatedMs) {
756+
metadata_.last_updated_ms =
757+
TimePointMs{std::chrono::duration_cast<std::chrono::milliseconds>(
758+
std::chrono::system_clock::now().time_since_epoch())};
759+
}
760+
761+
auto current_schema_id = metadata_.current_schema_id.value_or(Schema::kInitialSchemaId);
762+
auto schema_it = schemas_by_id_.find(current_schema_id);
763+
ICEBERG_PRECHECK(schema_it != schemas_by_id_.end(),
764+
"Current schema ID {} not found in schemas", current_schema_id);
765+
const auto& current_schema = schema_it->second;
766+
{
767+
auto spec_it = specs_by_id_.find(metadata_.default_spec_id);
768+
// FIXME(GuoTao.yu): Default spec must exist after we support update partition spec
769+
if (spec_it != specs_by_id_.end()) {
770+
ICEBERG_RETURN_UNEXPECTED(
771+
spec_it->second->Validate(*current_schema, /*allow_missing_fields=*/false));
772+
}
773+
auto sort_order_it = sort_orders_by_id_.find(metadata_.default_sort_order_id);
774+
ICEBERG_PRECHECK(sort_order_it != sort_orders_by_id_.end(),
775+
"Default sort order ID {} not found in sort orders",
776+
metadata_.default_sort_order_id);
777+
ICEBERG_RETURN_UNEXPECTED(sort_order_it->second->Validate(*current_schema));
778+
}
779+
780+
// 3. Buildup metadata_log from base metadata
781+
int32_t max_metadata_log_size =
782+
metadata_.properties.Get(TableProperties::kMetadataPreviousVersionsMax);
783+
if (base_ != nullptr && !previous_metadata_location_.empty()) {
784+
metadata_.metadata_log.emplace_back(base_->last_updated_ms,
785+
previous_metadata_location_);
786+
}
787+
if (metadata_.metadata_log.size() > max_metadata_log_size) {
788+
metadata_.metadata_log.erase(metadata_.metadata_log.begin(),
789+
metadata_.metadata_log.end() - max_metadata_log_size);
790+
}
791+
792+
// TODO(anyone): 4. update snapshot_log
793+
794+
// 5. Create and return the TableMetadata
795+
return std::make_unique<TableMetadata>(std::move(metadata_));
796+
}
797+
798+
int32_t TableMetadataBuilder::Impl::ReuseOrCreateNewSortOrderId(
799+
const SortOrder& new_order) {
800+
if (new_order.is_unsorted()) {
801+
return SortOrder::kUnsortedOrderId;
802+
}
803+
// determine the next order id
804+
int32_t new_order_id = SortOrder::kInitialSortOrderId;
805+
for (const auto& order : metadata_.sort_orders) {
806+
if (order->SameOrder(new_order)) {
807+
return order->order_id();
808+
} else if (new_order_id <= order->order_id()) {
809+
new_order_id = order->order_id() + 1;
810+
}
811+
}
812+
return new_order_id;
813+
}
814+
768815
int32_t TableMetadataBuilder::Impl::ReuseOrCreateNewSchemaId(
769816
const Schema& new_schema) const {
770817
// if the schema already exists, use its id; otherwise use the highest id + 1
@@ -816,53 +863,6 @@ Result<std::unique_ptr<SortOrder>> TableMetadataBuilder::Impl::UpdateSortOrderSc
816863
return SortOrder::Make(sort_order.order_id(), std::move(new_fields));
817864
}
818865

819-
Result<std::unique_ptr<TableMetadata>> TableMetadataBuilder::Impl::Build() {
820-
// 1. Validate metadata consistency through TableMetadata#Validate
821-
822-
// 2. Update last_updated_ms if there are changes
823-
if (metadata_.last_updated_ms == kInvalidLastUpdatedMs) {
824-
metadata_.last_updated_ms =
825-
TimePointMs{std::chrono::duration_cast<std::chrono::milliseconds>(
826-
std::chrono::system_clock::now().time_since_epoch())};
827-
}
828-
829-
auto current_schema_id = metadata_.current_schema_id.value_or(Schema::kInitialSchemaId);
830-
auto schema_it = schemas_by_id_.find(current_schema_id);
831-
ICEBERG_PRECHECK(schema_it != schemas_by_id_.end(),
832-
"Current schema ID {} not found in schemas", current_schema_id);
833-
const auto& current_schema = schema_it->second;
834-
{
835-
auto spec_it = specs_by_id_.find(metadata_.default_spec_id);
836-
// FIXME(GuoTao.yu): Default spec must exist after we support update partition spec
837-
if (spec_it != specs_by_id_.end()) {
838-
ICEBERG_RETURN_UNEXPECTED(
839-
spec_it->second->Validate(*current_schema, /*allow_missing_fields=*/false));
840-
}
841-
auto sort_order_it = sort_orders_by_id_.find(metadata_.default_sort_order_id);
842-
ICEBERG_PRECHECK(sort_order_it != sort_orders_by_id_.end(),
843-
"Default sort order ID {} not found in sort orders",
844-
metadata_.default_sort_order_id);
845-
ICEBERG_RETURN_UNEXPECTED(sort_order_it->second->Validate(*current_schema));
846-
}
847-
848-
// 3. Buildup metadata_log from base metadata
849-
int32_t max_metadata_log_size =
850-
metadata_.properties.Get(TableProperties::kMetadataPreviousVersionsMax);
851-
if (base_ != nullptr && !previous_metadata_location_.empty()) {
852-
metadata_.metadata_log.emplace_back(base_->last_updated_ms,
853-
previous_metadata_location_);
854-
}
855-
if (metadata_.metadata_log.size() > max_metadata_log_size) {
856-
metadata_.metadata_log.erase(metadata_.metadata_log.begin(),
857-
metadata_.metadata_log.end() - max_metadata_log_size);
858-
}
859-
860-
// TODO(anyone): 4. update snapshot_log
861-
862-
// 5. Create and return the TableMetadata
863-
return std::make_unique<TableMetadata>(std::move(metadata_));
864-
}
865-
866866
TableMetadataBuilder::TableMetadataBuilder(int8_t format_version)
867867
: impl_(std::make_unique<Impl>(format_version)) {}
868868

0 commit comments

Comments
 (0)