@@ -233,13 +233,12 @@ Result<std::shared_ptr<Schema>> TableMetadata::Schema() const {
233233 return SchemaById (current_schema_id);
234234}
235235
236- Result<std::shared_ptr<Schema>> TableMetadata::SchemaById (
237- std::optional<int32_t > schema_id) const {
236+ Result<std::shared_ptr<Schema>> TableMetadata::SchemaById (int32_t schema_id) const {
238237 auto iter = std::ranges::find_if (schemas, [schema_id](const auto & schema) {
239238 return schema != nullptr && schema->schema_id () == schema_id;
240239 });
241240 if (iter == schemas.end ()) {
242- return NotFound (" Schema with ID {} is not found" , schema_id. value_or (- 1 ) );
241+ return NotFound (" Schema with ID {} is not found" , schema_id);
243242 }
244243 return *iter;
245244}
@@ -359,11 +358,8 @@ Result<TableMetadataCache::SnapshotsMapRef> TableMetadataCache::GetSnapshotsById
359358
360359Result<TableMetadataCache::SchemasMap> TableMetadataCache::InitSchemasMap (
361360 const TableMetadata* metadata) {
362- return metadata->schemas | std::views::filter ([](const auto & schema) {
363- return schema->schema_id ().has_value ();
364- }) |
365- std::views::transform ([](const auto & schema) {
366- return std::make_pair (schema->schema_id ().value (), schema);
361+ return metadata->schemas | std::views::transform ([](const auto & schema) {
362+ return std::make_pair (schema->schema_id (), schema);
367363 }) |
368364 std::ranges::to<SchemasMap>();
369365}
@@ -548,9 +544,7 @@ class TableMetadataBuilder::Impl {
548544 : base_(base_metadata), metadata_(*base_metadata) {
549545 // Initialize index maps from base metadata
550546 for (const auto & schema : metadata_.schemas ) {
551- if (schema->schema_id ().has_value ()) {
552- schemas_by_id_.emplace (schema->schema_id ().value (), schema);
553- }
547+ schemas_by_id_.emplace (schema->schema_id (), schema);
554548 }
555549
556550 for (const auto & spec : metadata_.partition_specs ) {
@@ -920,14 +914,13 @@ Status TableMetadataBuilder::Impl::SetCurrentSchema(int32_t schema_id) {
920914
921915Status TableMetadataBuilder::Impl::RemoveSchemas (
922916 const std::unordered_set<int32_t >& schema_ids) {
923- auto current_schema_id = metadata_.current_schema_id . value_or (Schema:: kInitialSchemaId ) ;
917+ auto current_schema_id = metadata_.current_schema_id ;
924918 ICEBERG_PRECHECK (!schema_ids.contains (current_schema_id),
925919 " Cannot remove current schema: {}" , current_schema_id);
926920
927921 if (!schema_ids.empty ()) {
928922 metadata_.schemas = metadata_.schemas | std::views::filter ([&](const auto & schema) {
929- return schema->schema_id ().has_value () &&
930- !schema_ids.contains (schema->schema_id ().value ());
923+ return !schema_ids.contains (schema->schema_id ());
931924 }) |
932925 std::ranges::to<std::vector<std::shared_ptr<Schema>>>();
933926 changes_.push_back (std::make_unique<table::RemoveSchemas>(schema_ids));
@@ -999,7 +992,7 @@ Result<std::unique_ptr<TableMetadata>> TableMetadataBuilder::Impl::Build() {
999992 std::chrono::system_clock::now ().time_since_epoch ())};
1000993 }
1001994
1002- auto current_schema_id = metadata_.current_schema_id . value_or (Schema:: kInitialSchemaId ) ;
995+ auto current_schema_id = metadata_.current_schema_id ;
1003996 auto schema_it = schemas_by_id_.find (current_schema_id);
1004997 ICEBERG_PRECHECK (schema_it != schemas_by_id_.end (),
1005998 " Current schema ID {} not found in schemas" , current_schema_id);
@@ -1072,9 +1065,9 @@ int32_t TableMetadataBuilder::Impl::ReuseOrCreateNewPartitionSpecId(
10721065int32_t TableMetadataBuilder::Impl::ReuseOrCreateNewSchemaId (
10731066 const Schema& new_schema) const {
10741067 // if the schema already exists, use its id; otherwise use the highest id + 1
1075- auto new_schema_id = metadata_.current_schema_id . value_or (Schema:: kInitialSchemaId ) ;
1068+ auto new_schema_id = metadata_.current_schema_id ;
10761069 for (auto & schema : metadata_.schemas ) {
1077- auto schema_id = schema->schema_id (). value_or (Schema:: kInitialSchemaId ) ;
1070+ auto schema_id = schema->schema_id ();
10781071 if (schema->SameSchema (new_schema)) {
10791072 return schema_id;
10801073 } else if (new_schema_id <= schema_id) {
0 commit comments