diff --git a/src/iceberg/constants.h b/src/iceberg/constants.h index 61d10e2d6..759ae3cca 100644 --- a/src/iceberg/constants.h +++ b/src/iceberg/constants.h @@ -19,10 +19,12 @@ #pragma once +#include #include namespace iceberg { constexpr std::string_view kParquetFieldIdKey = "PARQUET:field_id"; +constexpr int64_t kInvalidSnapshotId = -1; } // namespace iceberg diff --git a/src/iceberg/inheritable_metadata.cc b/src/iceberg/inheritable_metadata.cc index 081b90ac5..1d740b5c3 100644 --- a/src/iceberg/inheritable_metadata.cc +++ b/src/iceberg/inheritable_metadata.cc @@ -92,7 +92,7 @@ Result> InheritableMetadataFactory::Empty() Result> InheritableMetadataFactory::FromManifest( const ManifestFile& manifest) { // Validate that the manifest has a snapshot ID assigned - if (manifest.added_snapshot_id == Snapshot::kInvalidSnapshotId) { + if (manifest.added_snapshot_id == kInvalidSnapshotId) { return InvalidManifest("Manifest file {} has no snapshot ID", manifest.manifest_path); } diff --git a/src/iceberg/json_internal.cc b/src/iceberg/json_internal.cc index 9d955d46b..8dd11dc03 100644 --- a/src/iceberg/json_internal.cc +++ b/src/iceberg/json_internal.cc @@ -1033,9 +1033,9 @@ Result> TableMetadataFromJson(const nlohmann::jso } // This field is optional, but internally we set this to -1 when not set - ICEBERG_ASSIGN_OR_RAISE(table_metadata->current_snapshot_id, - GetJsonValueOrDefault(json, kCurrentSnapshotId, - Snapshot::kInvalidSnapshotId)); + ICEBERG_ASSIGN_OR_RAISE( + table_metadata->current_snapshot_id, + GetJsonValueOrDefault(json, kCurrentSnapshotId, kInvalidSnapshotId)); if (table_metadata->format_version >= 3) { ICEBERG_ASSIGN_OR_RAISE(table_metadata->next_row_id, @@ -1053,7 +1053,7 @@ Result> TableMetadataFromJson(const nlohmann::jso ICEBERG_ASSIGN_OR_RAISE( table_metadata->refs, FromJsonMap>(json, kRefs, SnapshotRefFromJson)); - } else if (table_metadata->current_snapshot_id != Snapshot::kInvalidSnapshotId) { + } else if (table_metadata->current_snapshot_id != kInvalidSnapshotId) { table_metadata->refs["main"] = std::make_unique(SnapshotRef{ .snapshot_id = table_metadata->current_snapshot_id, .retention = SnapshotRef::Branch{}, diff --git a/src/iceberg/manifest/manifest_list.h b/src/iceberg/manifest/manifest_list.h index da70fb696..2f3185a18 100644 --- a/src/iceberg/manifest/manifest_list.h +++ b/src/iceberg/manifest/manifest_list.h @@ -27,6 +27,7 @@ #include #include +#include "iceberg/constants.h" #include "iceberg/iceberg_export.h" #include "iceberg/partition_spec.h" #include "iceberg/result.h" @@ -106,7 +107,7 @@ struct ICEBERG_EXPORT ManifestFile { int64_t min_sequence_number = TableMetadata::kInitialSequenceNumber; /// Field id: 503 /// ID of the snapshot where the manifest file was added - int64_t added_snapshot_id = -1; // Snapshot::kInvalidSnapshotId + int64_t added_snapshot_id = kInvalidSnapshotId; /// Field id: 504 /// Number of entries in the manifest that have status ADDED (1), when null this is /// assumed to be non-zero diff --git a/src/iceberg/manifest/manifest_writer.cc b/src/iceberg/manifest/manifest_writer.cc index 52ad807e0..c30f9f75b 100644 --- a/src/iceberg/manifest/manifest_writer.cc +++ b/src/iceberg/manifest/manifest_writer.cc @@ -238,7 +238,7 @@ Result ManifestWriter::ToManifestFile() const { .sequence_number = TableMetadata::kInvalidSequenceNumber, .min_sequence_number = min_sequence_number_.value_or(TableMetadata::kInvalidSequenceNumber), - .added_snapshot_id = adapter_->snapshot_id().value_or(Snapshot::kInvalidSnapshotId), + .added_snapshot_id = adapter_->snapshot_id().value_or(kInvalidSnapshotId), .added_files_count = add_files_count_, .existing_files_count = existing_files_count_, .deleted_files_count = delete_files_count_, diff --git a/src/iceberg/snapshot.h b/src/iceberg/snapshot.h index a047c76bf..3889607f9 100644 --- a/src/iceberg/snapshot.h +++ b/src/iceberg/snapshot.h @@ -229,8 +229,6 @@ struct ICEBERG_EXPORT DataOperation { /// /// Snapshots are created by table operations. struct ICEBERG_EXPORT Snapshot { - static constexpr int64_t kInvalidSnapshotId = -1; - /// A unique long ID. int64_t snapshot_id; /// The snapshot ID of the snapshot's parent. Omitted for any snapshot with no parent. diff --git a/src/iceberg/table_metadata.cc b/src/iceberg/table_metadata.cc index 095f91d14..06dcf0d96 100644 --- a/src/iceberg/table_metadata.cc +++ b/src/iceberg/table_metadata.cc @@ -537,7 +537,7 @@ class TableMetadataBuilder::Impl { metadata_.last_column_id = Schema::kInvalidColumnId; metadata_.default_spec_id = PartitionSpec::kInitialSpecId; metadata_.last_partition_id = PartitionSpec::kInvalidPartitionFieldId; - metadata_.current_snapshot_id = Snapshot::kInvalidSnapshotId; + metadata_.current_snapshot_id = kInvalidSnapshotId; metadata_.default_sort_order_id = SortOrder::kInitialSortOrderId; metadata_.next_row_id = TableMetadata::kInitialRowId; } diff --git a/src/iceberg/test/table_metadata_builder_test.cc b/src/iceberg/test/table_metadata_builder_test.cc index 77380e89e..83254e238 100644 --- a/src/iceberg/test/table_metadata_builder_test.cc +++ b/src/iceberg/test/table_metadata_builder_test.cc @@ -81,7 +81,7 @@ std::unique_ptr CreateBaseMetadata() { metadata->partition_specs.push_back(PartitionSpec::Unpartitioned()); metadata->default_spec_id = PartitionSpec::kInitialSpecId; metadata->last_partition_id = 0; - metadata->current_snapshot_id = Snapshot::kInvalidSnapshotId; + metadata->current_snapshot_id = kInvalidSnapshotId; metadata->default_sort_order_id = SortOrder::kUnsortedOrderId; metadata->sort_orders.push_back(SortOrder::Unsorted()); metadata->next_row_id = TableMetadata::kInitialRowId; @@ -234,7 +234,7 @@ TEST(TableMetadataBuilderTest, BuildFromEmpty) { EXPECT_EQ(metadata->last_sequence_number, TableMetadata::kInitialSequenceNumber); EXPECT_EQ(metadata->default_spec_id, PartitionSpec::kInitialSpecId); EXPECT_EQ(metadata->default_sort_order_id, SortOrder::kUnsortedOrderId); - EXPECT_EQ(metadata->current_snapshot_id, Snapshot::kInvalidSnapshotId); + EXPECT_EQ(metadata->current_snapshot_id, kInvalidSnapshotId); EXPECT_TRUE(metadata->metadata_log.empty()); } diff --git a/src/iceberg/test/table_requirements_test.cc b/src/iceberg/test/table_requirements_test.cc index c05e505f7..80f836367 100644 --- a/src/iceberg/test/table_requirements_test.cc +++ b/src/iceberg/test/table_requirements_test.cc @@ -53,7 +53,7 @@ std::unique_ptr CreateBaseMetadata( metadata->current_schema_id = Schema::kInitialSchemaId; metadata->default_spec_id = PartitionSpec::kInitialSpecId; metadata->last_partition_id = 0; - metadata->current_snapshot_id = Snapshot::kInvalidSnapshotId; + metadata->current_snapshot_id = kInvalidSnapshotId; metadata->default_sort_order_id = SortOrder::kUnsortedOrderId; metadata->next_row_id = TableMetadata::kInitialRowId; return metadata; diff --git a/src/iceberg/test/table_update_test.cc b/src/iceberg/test/table_update_test.cc index 44a37f98d..3cd0b7228 100644 --- a/src/iceberg/test/table_update_test.cc +++ b/src/iceberg/test/table_update_test.cc @@ -74,7 +74,7 @@ std::unique_ptr CreateBaseMetadata() { metadata->partition_specs.push_back(PartitionSpec::Unpartitioned()); metadata->default_spec_id = PartitionSpec::kInitialSpecId; metadata->last_partition_id = 0; - metadata->current_snapshot_id = Snapshot::kInvalidSnapshotId; + metadata->current_snapshot_id = kInvalidSnapshotId; metadata->sort_orders.push_back(SortOrder::Unsorted()); metadata->default_sort_order_id = SortOrder::kUnsortedOrderId; metadata->next_row_id = TableMetadata::kInitialRowId; diff --git a/src/iceberg/test/update_partition_spec_test.cc b/src/iceberg/test/update_partition_spec_test.cc index 4da8f448d..914a28e8b 100644 --- a/src/iceberg/test/update_partition_spec_test.cc +++ b/src/iceberg/test/update_partition_spec_test.cc @@ -130,7 +130,7 @@ class UpdatePartitionSpecTest : public ::testing::TestWithParam { metadata->schemas.push_back(std::move(schema)); metadata->default_spec_id = spec->spec_id(); metadata->last_partition_id = spec->last_assigned_field_id(); - metadata->current_snapshot_id = Snapshot::kInvalidSnapshotId; + metadata->current_snapshot_id = kInvalidSnapshotId; metadata->default_sort_order_id = SortOrder::kUnsortedOrderId; metadata->sort_orders.push_back(SortOrder::Unsorted()); metadata->next_row_id = TableMetadata::kInitialRowId;