31#include "iceberg/iceberg_export.h"
33#include "iceberg/result.h"
46 bool contains_null =
true;
61 "True if any file has a null partition value");
64 "True if any file has a nan partition value");
65 inline static const SchemaField kLowerBound = SchemaField::MakeOptional(
66 510,
"lower_bound",
iceberg::binary(),
"Partition lower bound for all files");
67 inline static const SchemaField kUpperBound = SchemaField::MakeOptional(
68 511,
"upper_bound",
iceberg::binary(),
"Partition upper bound for all files");
72 static const std::shared_ptr<StructType>&
Type();
91 int64_t manifest_length = 0;
95 int32_t partition_spec_id = PartitionSpec::kInitialSpecId;
103 int64_t sequence_number = TableMetadata::kInitialSequenceNumber;
107 int64_t min_sequence_number = TableMetadata::kInitialSequenceNumber;
110 int64_t added_snapshot_id = kInvalidSnapshotId;
156 static constexpr int32_t kManifestPathFieldId = 500;
157 inline static const SchemaField kManifestPath = SchemaField::MakeRequired(
158 kManifestPathFieldId,
"manifest_path",
string(),
"Location URI with FS scheme");
160 static constexpr int32_t kManifestLengthFieldId = 501;
161 inline static const SchemaField kManifestLength = SchemaField::MakeRequired(
162 kManifestLengthFieldId,
"manifest_length",
int64(),
"Total file size in bytes");
164 static constexpr int32_t kPartitionSpecIdFieldId = 502;
165 inline static const SchemaField kPartitionSpecId = SchemaField::MakeRequired(
166 kPartitionSpecIdFieldId,
"partition_spec_id",
int32(),
"Spec ID used to write");
168 static constexpr int32_t kContentFieldId = 517;
169 inline static const SchemaField kContent = SchemaField::MakeOptional(
170 kContentFieldId,
"content",
int32(),
"Contents of the manifest: 0=data, 1=deletes");
172 static constexpr int32_t kSequenceNumberFieldId = 515;
174 SchemaField::MakeOptional(kSequenceNumberFieldId,
"sequence_number",
int64(),
175 "Sequence number when the manifest was added");
177 static constexpr int32_t kMinSequenceNumberFieldId = 516;
178 inline static const SchemaField kMinSequenceNumber =
179 SchemaField::MakeOptional(kMinSequenceNumberFieldId,
"min_sequence_number",
int64(),
180 "Lowest sequence number in the manifest");
182 static constexpr int32_t kAddedSnapshotIdFieldId = 503;
184 SchemaField::MakeRequired(kAddedSnapshotIdFieldId,
"added_snapshot_id",
int64(),
185 "Snapshot ID that added the manifest");
187 static constexpr int32_t kAddedFilesCountFieldId = 504;
188 inline static const SchemaField kAddedFilesCount = SchemaField::MakeOptional(
189 kAddedFilesCountFieldId,
"added_files_count",
int32(),
"Added entry count");
191 static constexpr int32_t kExistingFilesCountFieldId = 505;
192 inline static const SchemaField kExistingFilesCount =
193 SchemaField::MakeOptional(kExistingFilesCountFieldId,
"existing_files_count",
194 int32(),
"Existing entry count");
196 static constexpr int32_t kDeletedFilesCountFieldId = 506;
197 inline static const SchemaField kDeletedFilesCount = SchemaField::MakeOptional(
198 kDeletedFilesCountFieldId,
"deleted_files_count",
int32(),
"Deleted entry count");
200 static constexpr int32_t kAddedRowsCountFieldId = 512;
201 inline static const SchemaField kAddedRowsCount = SchemaField::MakeOptional(
202 kAddedRowsCountFieldId,
"added_rows_count",
int64(),
"Added rows count");
204 static constexpr int32_t kExistingRowsCountFieldId = 513;
205 inline static const SchemaField kExistingRowsCount = SchemaField::MakeOptional(
206 kExistingRowsCountFieldId,
"existing_rows_count",
int64(),
"Existing rows count");
208 static constexpr int32_t kDeletedRowsCountFieldId = 514;
209 inline static const SchemaField kDeletedRowsCount = SchemaField::MakeOptional(
210 kDeletedRowsCountFieldId,
"deleted_rows_count",
int64(),
"Deleted rows count");
212 static constexpr int32_t kPartitionSummaryFieldId = 507;
213 inline static const SchemaField kPartitions = SchemaField::MakeOptional(
214 kPartitionSummaryFieldId,
"partitions",
215 list(SchemaField::MakeRequired(508, std::string(ListType::kElementName),
217 PartitionFieldSummary::kContainsNull,
218 PartitionFieldSummary::kContainsNaN,
219 PartitionFieldSummary::kLowerBound,
220 PartitionFieldSummary::kUpperBound,
222 "Summary for each partition");
224 static constexpr int32_t kKeyMetadataFieldId = 519;
225 inline static const SchemaField kKeyMetadata = SchemaField::MakeOptional(
226 kKeyMetadataFieldId,
"key_metadata", binary(),
"Encryption key metadata blob");
228 static constexpr int32_t kFirstRowIdFieldId = 520;
229 inline static const SchemaField kFirstRowId = SchemaField::MakeOptional(
230 kFirstRowIdFieldId,
"first_row_id", int64(),
231 "Starting row ID to assign to new rows in ADDED data files");
233 bool operator==(
const ManifestFile& other)
const {
234 return manifest_path == other.manifest_path;
237 static const std::shared_ptr<StructType>& Type();
258ICEBERG_EXPORT
inline constexpr std::string_view ToString(
ManifestContent type)
noexcept {
260 case ManifestContent::kData:
262 case ManifestContent::kDeletes:
270 std::string_view str)
noexcept {
271 if (str ==
"data")
return ManifestContent::kData;
272 if (str ==
"deletes")
return ManifestContent::kDeletes;
273 return InvalidArgument(
"Invalid manifest content type: {}", str);
280struct hash<iceberg::ManifestFile> {
282 return std::hash<std::string>{}(manifest_file.
manifest_path);
A type combined with a name.
Definition schema_field.h:39
Interface for a data type for a field.
Definition type.h:44
ICEBERG_EXPORT const std::shared_ptr< BinaryType > & binary()
Return a BinaryType instance.
std::shared_ptr< ListType > list(SchemaField element)
Create a ListType with the given element field.
Definition type.cc:392
ICEBERG_EXPORT const std::shared_ptr< IntType > & int32()
Return an IntType instance.
std::shared_ptr< StructType > struct_(std::vector< SchemaField > fields)
Create a StructType with the given fields.
Definition type.cc:396
ICEBERG_EXPORT const std::shared_ptr< BooleanType > & boolean()
Return a BooleanType instance.
ICEBERG_EXPORT const std::shared_ptr< LongType > & int64()
Return a LongType instance.
ManifestContent
The type of files tracked by the manifest, either data or delete files; 0 for all v1 manifests.
Definition manifest_list.h:77
@ kData
The manifest content is data.
@ kDeletes
The manifest content is deletes.
ICEBERG_EXPORT constexpr Result< ManifestContent > ManifestContentFromString(std::string_view str) noexcept
Get the relative manifest content type from name.
Definition manifest_list.h:269
Entry in a manifest list.
Definition manifest_list.h:85
std::vector< PartitionFieldSummary > partitions
Definition manifest_list.h:139
std::optional< int64_t > deleted_rows_count
Definition manifest_list.h:134
std::vector< uint8_t > key_metadata
Definition manifest_list.h:142
std::optional< int32_t > existing_files_count
Definition manifest_list.h:118
bool has_existing_files() const
Checks if this manifest file contains entries with EXISTING status.
Definition manifest_list.h:151
std::optional< int64_t > added_rows_count
Definition manifest_list.h:126
std::optional< int64_t > first_row_id
Definition manifest_list.h:145
std::string manifest_path
Definition manifest_list.h:88
std::optional< int32_t > added_files_count
Definition manifest_list.h:114
std::optional< int32_t > deleted_files_count
Definition manifest_list.h:122
bool has_added_files() const
Checks if this manifest file contains entries with ADDED status.
Definition manifest_list.h:148
std::optional< int64_t > existing_rows_count
Definition manifest_list.h:130
bool has_deleted_files() const
Checks if this manifest file contains entries with DELETED status.
Definition manifest_list.h:154
Definition manifest_list.h:252
std::vector< ManifestFile > entries
Entries in a manifest list.
Definition manifest_list.h:254
Field summary for partition field in the spec.
Definition manifest_list.h:43
std::optional< std::vector< uint8_t > > lower_bound
Definition manifest_list.h:53
std::optional< std::vector< uint8_t > > upper_bound
Definition manifest_list.h:57
std::optional< bool > contains_nan
Definition manifest_list.h:49