iceberg-cpp
Loading...
Searching...
No Matches
table_update.h
Go to the documentation of this file.
1/*
2 * Licensed to the Apache Software Foundation (ASF) under one
3 * or more contributor license agreements. See the NOTICE file
4 * distributed with this work for additional information
5 * regarding copyright ownership. The ASF licenses this file
6 * to you under the Apache License, Version 2.0 (the
7 * "License"); you may not use this file except in compliance
8 * with the License. You may obtain a copy of the License at
9 *
10 * http://www.apache.org/licenses/LICENSE-2.0
11 *
12 * Unless required by applicable law or agreed to in writing,
13 * software distributed under the License is distributed on an
14 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15 * KIND, either express or implied. See the License for the
16 * specific language governing permissions and limitations
17 * under the License.
18 */
19
20#pragma once
21
24
25#include <memory>
26#include <optional>
27#include <string>
28#include <unordered_map>
29#include <unordered_set>
30#include <vector>
31
33#include "iceberg/iceberg_export.h"
34#include "iceberg/snapshot.h"
35#include "iceberg/type_fwd.h"
36
37namespace iceberg {
38
43class ICEBERG_EXPORT TableUpdate {
44 public:
45 enum class Kind : uint8_t {
46 kAssignUUID,
47 kUpgradeFormatVersion,
48 kAddSchema,
49 kSetCurrentSchema,
50 kAddPartitionSpec,
51 kSetDefaultPartitionSpec,
52 kRemovePartitionSpecs,
53 kRemoveSchemas,
54 kAddSortOrder,
55 kSetDefaultSortOrder,
56 kAddSnapshot,
57 kRemoveSnapshots,
58 kRemoveSnapshotRef,
59 kSetSnapshotRef,
60 kSetProperties,
61 kRemoveProperties,
62 kSetLocation,
63 kSetStatistics,
64 kRemoveStatistics,
65 kSetPartitionStatistics,
66 kRemovePartitionStatistics,
67 kAddEncryptionKey,
68 kRemoveEncryptionKey,
69 };
70
71 virtual ~TableUpdate();
72
74 virtual Kind kind() const = 0;
75
83 virtual void ApplyTo(TableMetadataBuilder& builder) const = 0;
84
92 virtual void GenerateRequirements(TableUpdateContext& context) const = 0;
93
98 virtual bool Equals(const TableUpdate& other) const = 0;
99
103 virtual std::unique_ptr<TableUpdate> Clone() const = 0;
104
106 friend bool operator==(const TableUpdate& lhs, const TableUpdate& rhs) {
107 return lhs.Equals(rhs);
108 }
109};
110
111namespace table {
112
114class ICEBERG_EXPORT AssignUUID : public TableUpdate {
115 public:
116 explicit AssignUUID(std::string uuid) : uuid_(std::move(uuid)) {}
117
118 const std::string& uuid() const { return uuid_; }
119
120 void ApplyTo(TableMetadataBuilder& builder) const override;
121
122 void GenerateRequirements(TableUpdateContext& context) const override;
123
124 Kind kind() const override { return Kind::kAssignUUID; }
125
126 bool Equals(const TableUpdate& other) const override;
127
128 std::unique_ptr<TableUpdate> Clone() const override;
129
130 private:
131 std::string uuid_;
132};
133
135class ICEBERG_EXPORT UpgradeFormatVersion : public TableUpdate {
136 public:
137 explicit UpgradeFormatVersion(int8_t format_version)
138 : format_version_(format_version) {}
139
140 int8_t format_version() const { return format_version_; }
141
142 void ApplyTo(TableMetadataBuilder& builder) const override;
143
144 void GenerateRequirements(TableUpdateContext& context) const override;
145
146 Kind kind() const override { return Kind::kUpgradeFormatVersion; }
147
148 bool Equals(const TableUpdate& other) const override;
149
150 std::unique_ptr<TableUpdate> Clone() const override;
151
152 private:
153 int8_t format_version_;
154};
155
157class ICEBERG_EXPORT AddSchema : public TableUpdate {
158 public:
159 explicit AddSchema(std::shared_ptr<Schema> schema, int32_t last_column_id)
160 : schema_(std::move(schema)), last_column_id_(last_column_id) {}
161
162 const std::shared_ptr<Schema>& schema() const { return schema_; }
163
164 int32_t last_column_id() const { return last_column_id_; }
165
166 void ApplyTo(TableMetadataBuilder& builder) const override;
167
168 void GenerateRequirements(TableUpdateContext& context) const override;
169
170 Kind kind() const override { return Kind::kAddSchema; }
171
172 bool Equals(const TableUpdate& other) const override;
173
174 std::unique_ptr<TableUpdate> Clone() const override;
175
176 private:
177 std::shared_ptr<Schema> schema_;
178 int32_t last_column_id_;
179};
180
182class ICEBERG_EXPORT SetCurrentSchema : public TableUpdate {
183 public:
184 explicit SetCurrentSchema(int32_t schema_id) : schema_id_(schema_id) {}
185
186 int32_t schema_id() const { return schema_id_; }
187
188 void ApplyTo(TableMetadataBuilder& builder) const override;
189
190 void GenerateRequirements(TableUpdateContext& context) const override;
191
192 Kind kind() const override { return Kind::kSetCurrentSchema; }
193
194 bool Equals(const TableUpdate& other) const override;
195
196 std::unique_ptr<TableUpdate> Clone() const override;
197
198 private:
199 int32_t schema_id_;
200};
201
203class ICEBERG_EXPORT AddPartitionSpec : public TableUpdate {
204 public:
205 explicit AddPartitionSpec(std::shared_ptr<PartitionSpec> spec)
206 : spec_(std::move(spec)) {}
207
208 const std::shared_ptr<PartitionSpec>& spec() const { return spec_; }
209
210 void ApplyTo(TableMetadataBuilder& builder) const override;
211
212 void GenerateRequirements(TableUpdateContext& context) const override;
213
214 Kind kind() const override { return Kind::kAddPartitionSpec; }
215
216 bool Equals(const TableUpdate& other) const override;
217
218 std::unique_ptr<TableUpdate> Clone() const override;
219
220 private:
221 std::shared_ptr<PartitionSpec> spec_;
222};
223
225class ICEBERG_EXPORT SetDefaultPartitionSpec : public TableUpdate {
226 public:
227 explicit SetDefaultPartitionSpec(int32_t spec_id) : spec_id_(spec_id) {}
228
229 int32_t spec_id() const { return spec_id_; }
230
231 void ApplyTo(TableMetadataBuilder& builder) const override;
232
233 void GenerateRequirements(TableUpdateContext& context) const override;
234
235 Kind kind() const override { return Kind::kSetDefaultPartitionSpec; }
236
237 bool Equals(const TableUpdate& other) const override;
238
239 std::unique_ptr<TableUpdate> Clone() const override;
240
241 private:
242 int32_t spec_id_;
243};
244
246class ICEBERG_EXPORT RemovePartitionSpecs : public TableUpdate {
247 public:
248 explicit RemovePartitionSpecs(std::vector<int32_t> spec_ids)
249 : spec_ids_(std::move(spec_ids)) {}
250
251 const std::vector<int32_t>& spec_ids() const { return spec_ids_; }
252
253 void ApplyTo(TableMetadataBuilder& builder) const override;
254
255 void GenerateRequirements(TableUpdateContext& context) const override;
256
257 Kind kind() const override { return Kind::kRemovePartitionSpecs; }
258
259 bool Equals(const TableUpdate& other) const override;
260
261 std::unique_ptr<TableUpdate> Clone() const override;
262
263 private:
264 std::vector<int32_t> spec_ids_;
265};
266
268class ICEBERG_EXPORT RemoveSchemas : public TableUpdate {
269 public:
270 explicit RemoveSchemas(std::unordered_set<int32_t> schema_ids)
271 : schema_ids_(std::move(schema_ids)) {}
272
273 const std::unordered_set<int32_t>& schema_ids() const { return schema_ids_; }
274
275 void ApplyTo(TableMetadataBuilder& builder) const override;
276
277 void GenerateRequirements(TableUpdateContext& context) const override;
278
279 Kind kind() const override { return Kind::kRemoveSchemas; }
280
281 bool Equals(const TableUpdate& other) const override;
282
283 std::unique_ptr<TableUpdate> Clone() const override;
284
285 private:
286 std::unordered_set<int32_t> schema_ids_;
287};
288
290class ICEBERG_EXPORT AddSortOrder : public TableUpdate {
291 public:
292 explicit AddSortOrder(std::shared_ptr<SortOrder> sort_order)
293 : sort_order_(std::move(sort_order)) {}
294
295 const std::shared_ptr<SortOrder>& sort_order() const { return sort_order_; }
296
297 void ApplyTo(TableMetadataBuilder& builder) const override;
298
299 void GenerateRequirements(TableUpdateContext& context) const override;
300
301 Kind kind() const override { return Kind::kAddSortOrder; }
302
303 bool Equals(const TableUpdate& other) const override;
304
305 std::unique_ptr<TableUpdate> Clone() const override;
306
307 private:
308 std::shared_ptr<SortOrder> sort_order_;
309};
310
312class ICEBERG_EXPORT SetDefaultSortOrder : public TableUpdate {
313 public:
314 explicit SetDefaultSortOrder(int32_t sort_order_id) : sort_order_id_(sort_order_id) {}
315
316 int32_t sort_order_id() const { return sort_order_id_; }
317
318 void ApplyTo(TableMetadataBuilder& builder) const override;
319
320 void GenerateRequirements(TableUpdateContext& context) const override;
321
322 Kind kind() const override { return Kind::kSetDefaultSortOrder; }
323
324 bool Equals(const TableUpdate& other) const override;
325
326 std::unique_ptr<TableUpdate> Clone() const override;
327
328 private:
329 int32_t sort_order_id_;
330};
331
333class ICEBERG_EXPORT AddSnapshot : public TableUpdate {
334 public:
335 explicit AddSnapshot(std::shared_ptr<Snapshot> snapshot)
336 : snapshot_(std::move(snapshot)) {}
337
338 const std::shared_ptr<Snapshot>& snapshot() const { return snapshot_; }
339
340 void ApplyTo(TableMetadataBuilder& builder) const override;
341
342 void GenerateRequirements(TableUpdateContext& context) const override;
343
344 Kind kind() const override { return Kind::kAddSnapshot; }
345
346 bool Equals(const TableUpdate& other) const override;
347
348 std::unique_ptr<TableUpdate> Clone() const override;
349
350 private:
351 std::shared_ptr<Snapshot> snapshot_;
352};
353
355class ICEBERG_EXPORT RemoveSnapshots : public TableUpdate {
356 public:
357 explicit RemoveSnapshots(std::vector<int64_t> snapshot_ids)
358 : snapshot_ids_(std::move(snapshot_ids)) {}
359
360 const std::vector<int64_t>& snapshot_ids() const { return snapshot_ids_; }
361
362 void ApplyTo(TableMetadataBuilder& builder) const override;
363
364 void GenerateRequirements(TableUpdateContext& context) const override;
365
366 Kind kind() const override { return Kind::kRemoveSnapshots; }
367
368 bool Equals(const TableUpdate& other) const override;
369
370 std::unique_ptr<TableUpdate> Clone() const override;
371
372 private:
373 std::vector<int64_t> snapshot_ids_;
374};
375
377class ICEBERG_EXPORT RemoveSnapshotRef : public TableUpdate {
378 public:
379 explicit RemoveSnapshotRef(std::string ref_name) : ref_name_(std::move(ref_name)) {}
380
381 const std::string& ref_name() const { return ref_name_; }
382
383 void ApplyTo(TableMetadataBuilder& builder) const override;
384
385 void GenerateRequirements(TableUpdateContext& context) const override;
386
387 Kind kind() const override { return Kind::kRemoveSnapshotRef; }
388
389 bool Equals(const TableUpdate& other) const override;
390
391 std::unique_ptr<TableUpdate> Clone() const override;
392
393 private:
394 std::string ref_name_;
395};
396
398class ICEBERG_EXPORT SetSnapshotRef : public TableUpdate {
399 public:
400 SetSnapshotRef(std::string ref_name, int64_t snapshot_id, SnapshotRefType type,
401 std::optional<int32_t> min_snapshots_to_keep = std::nullopt,
402 std::optional<int64_t> max_snapshot_age_ms = std::nullopt,
403 std::optional<int64_t> max_ref_age_ms = std::nullopt)
404 : ref_name_(std::move(ref_name)),
405 snapshot_id_(snapshot_id),
406 type_(type),
407 min_snapshots_to_keep_(min_snapshots_to_keep),
408 max_snapshot_age_ms_(max_snapshot_age_ms),
409 max_ref_age_ms_(max_ref_age_ms) {}
410
411 SetSnapshotRef(std::string ref_name, const SnapshotRef& ref)
412 : ref_name_(std::move(ref_name)), snapshot_id_(ref.snapshot_id), type_(ref.type()) {
413 if (type_ == SnapshotRefType::kBranch) {
414 const auto& branch = std::get<SnapshotRef::Branch>(ref.retention);
415 min_snapshots_to_keep_ = branch.min_snapshots_to_keep;
416 max_snapshot_age_ms_ = branch.max_snapshot_age_ms;
417 max_ref_age_ms_ = branch.max_ref_age_ms;
418 } else {
419 const auto& tag = std::get<SnapshotRef::Tag>(ref.retention);
420 max_ref_age_ms_ = tag.max_ref_age_ms;
421 }
422 }
423
424 const std::string& ref_name() const { return ref_name_; }
425 int64_t snapshot_id() const { return snapshot_id_; }
426 SnapshotRefType type() const { return type_; }
427 const std::optional<int32_t>& min_snapshots_to_keep() const {
428 return min_snapshots_to_keep_;
429 }
430 const std::optional<int64_t>& max_snapshot_age_ms() const {
431 return max_snapshot_age_ms_;
432 }
433 const std::optional<int64_t>& max_ref_age_ms() const { return max_ref_age_ms_; }
434
435 void ApplyTo(TableMetadataBuilder& builder) const override;
436
437 void GenerateRequirements(TableUpdateContext& context) const override;
438
439 Kind kind() const override { return Kind::kSetSnapshotRef; }
440
441 bool Equals(const TableUpdate& other) const override;
442
443 std::unique_ptr<TableUpdate> Clone() const override;
444
445 private:
446 std::string ref_name_;
447 int64_t snapshot_id_;
448 SnapshotRefType type_;
449 std::optional<int32_t> min_snapshots_to_keep_;
450 std::optional<int64_t> max_snapshot_age_ms_;
451 std::optional<int64_t> max_ref_age_ms_;
452};
453
455class ICEBERG_EXPORT SetProperties : public TableUpdate {
456 public:
457 explicit SetProperties(std::unordered_map<std::string, std::string> updated)
458 : updated_(std::move(updated)) {}
459
460 const std::unordered_map<std::string, std::string>& updated() const { return updated_; }
461
462 void ApplyTo(TableMetadataBuilder& builder) const override;
463
464 void GenerateRequirements(TableUpdateContext& context) const override;
465
466 Kind kind() const override { return Kind::kSetProperties; }
467
468 bool Equals(const TableUpdate& other) const override;
469
470 std::unique_ptr<TableUpdate> Clone() const override;
471
472 private:
473 std::unordered_map<std::string, std::string> updated_;
474};
475
477class ICEBERG_EXPORT RemoveProperties : public TableUpdate {
478 public:
479 explicit RemoveProperties(std::unordered_set<std::string> removed)
480 : removed_(std::move(removed)) {}
481
482 const std::unordered_set<std::string>& removed() const { return removed_; }
483
484 void ApplyTo(TableMetadataBuilder& builder) const override;
485
486 void GenerateRequirements(TableUpdateContext& context) const override;
487
488 Kind kind() const override { return Kind::kRemoveProperties; }
489
490 bool Equals(const TableUpdate& other) const override;
491
492 std::unique_ptr<TableUpdate> Clone() const override;
493
494 private:
495 std::unordered_set<std::string> removed_;
496};
497
499class ICEBERG_EXPORT SetLocation : public TableUpdate {
500 public:
501 explicit SetLocation(std::string location) : location_(std::move(location)) {}
502
503 const std::string& location() const { return location_; }
504
505 void ApplyTo(TableMetadataBuilder& builder) const override;
506
507 void GenerateRequirements(TableUpdateContext& context) const override;
508
509 Kind kind() const override { return Kind::kSetLocation; }
510
511 bool Equals(const TableUpdate& other) const override;
512
513 std::unique_ptr<TableUpdate> Clone() const override;
514
515 private:
516 std::string location_;
517};
518
520class ICEBERG_EXPORT SetStatistics : public TableUpdate {
521 public:
522 explicit SetStatistics(std::shared_ptr<StatisticsFile> statistics_file)
523 : statistics_file_(std::move(statistics_file)) {}
524
525 int64_t snapshot_id() const;
526
527 const std::shared_ptr<StatisticsFile>& statistics_file() const {
528 return statistics_file_;
529 }
530
531 void ApplyTo(TableMetadataBuilder& builder) const override;
532
533 void GenerateRequirements(TableUpdateContext& context) const override;
534
535 Kind kind() const override { return Kind::kSetStatistics; }
536
537 bool Equals(const TableUpdate& other) const override;
538
539 std::unique_ptr<TableUpdate> Clone() const override;
540
541 private:
542 std::shared_ptr<StatisticsFile> statistics_file_;
543};
544
546class ICEBERG_EXPORT RemoveStatistics : public TableUpdate {
547 public:
548 explicit RemoveStatistics(int64_t snapshot_id) : snapshot_id_(snapshot_id) {}
549
550 int64_t snapshot_id() const { return snapshot_id_; }
551
552 void ApplyTo(TableMetadataBuilder& builder) const override;
553
554 void GenerateRequirements(TableUpdateContext& context) const override;
555
556 Kind kind() const override { return Kind::kRemoveStatistics; }
557
558 bool Equals(const TableUpdate& other) const override;
559
560 std::unique_ptr<TableUpdate> Clone() const override;
561
562 private:
563 int64_t snapshot_id_;
564};
565
567class ICEBERG_EXPORT SetPartitionStatistics : public TableUpdate {
568 public:
569 explicit SetPartitionStatistics(
570 std::shared_ptr<PartitionStatisticsFile> partition_statistics_file)
571 : partition_statistics_file_(std::move(partition_statistics_file)) {}
572
573 int64_t snapshot_id() const;
574
575 const std::shared_ptr<PartitionStatisticsFile>& partition_statistics_file() const {
576 return partition_statistics_file_;
577 }
578
579 void ApplyTo(TableMetadataBuilder& builder) const override;
580
581 void GenerateRequirements(TableUpdateContext& context) const override;
582
583 Kind kind() const override { return Kind::kSetPartitionStatistics; }
584
585 bool Equals(const TableUpdate& other) const override;
586
587 std::unique_ptr<TableUpdate> Clone() const override;
588
589 private:
590 std::shared_ptr<PartitionStatisticsFile> partition_statistics_file_;
591};
592
594class ICEBERG_EXPORT RemovePartitionStatistics : public TableUpdate {
595 public:
596 explicit RemovePartitionStatistics(int64_t snapshot_id) : snapshot_id_(snapshot_id) {}
597
598 int64_t snapshot_id() const { return snapshot_id_; }
599
600 void ApplyTo(TableMetadataBuilder& builder) const override;
601
602 void GenerateRequirements(TableUpdateContext& context) const override;
603
604 Kind kind() const override { return Kind::kRemovePartitionStatistics; }
605
606 bool Equals(const TableUpdate& other) const override;
607
608 std::unique_ptr<TableUpdate> Clone() const override;
609
610 private:
611 int64_t snapshot_id_;
612};
613
615class ICEBERG_EXPORT AddEncryptionKey : public TableUpdate {
616 public:
617 explicit AddEncryptionKey(EncryptedKey key) : key_(std::move(key)) {}
618
619 const EncryptedKey& key() const { return key_; }
620
621 void ApplyTo(TableMetadataBuilder& builder) const override;
622
623 void GenerateRequirements(TableUpdateContext& context) const override;
624
625 Kind kind() const override { return Kind::kAddEncryptionKey; }
626
627 bool Equals(const TableUpdate& other) const override;
628
629 std::unique_ptr<TableUpdate> Clone() const override;
630
631 private:
632 EncryptedKey key_;
633};
634
636class ICEBERG_EXPORT RemoveEncryptionKey : public TableUpdate {
637 public:
638 explicit RemoveEncryptionKey(std::string key_id) : key_id_(std::move(key_id)) {}
639
640 const std::string& key_id() const { return key_id_; }
641
642 void ApplyTo(TableMetadataBuilder& builder) const override;
643
644 void GenerateRequirements(TableUpdateContext& context) const override;
645
646 Kind kind() const override { return Kind::kRemoveEncryptionKey; }
647
648 bool Equals(const TableUpdate& other) const override;
649
650 std::unique_ptr<TableUpdate> Clone() const override;
651
652 private:
653 std::string key_id_;
654};
655
656} // namespace table
657
658} // namespace iceberg
Builder class for constructing TableMetadata objects.
Definition table_metadata.h:226
Context for generating table requirements.
Definition table_requirements.h:45
Base class for metadata update operations.
Definition table_update.h:43
virtual Kind kind() const =0
Return the kind of this update.
friend bool operator==(const TableUpdate &lhs, const TableUpdate &rhs)
Compare two TableUpdate instances for equality.
Definition table_update.h:106
virtual void GenerateRequirements(TableUpdateContext &context) const =0
Generate update requirements for this metadata update.
virtual void ApplyTo(TableMetadataBuilder &builder) const =0
Apply this update to a TableMetadataBuilder.
virtual bool Equals(const TableUpdate &other) const =0
Check equality with another TableUpdate.
virtual std::unique_ptr< TableUpdate > Clone() const =0
Create a deep copy of this update.
Represents adding an encryption key to the table.
Definition table_update.h:615
Kind kind() const override
Return the kind of this update.
Definition table_update.h:625
Represents adding a new partition spec to the table.
Definition table_update.h:203
Kind kind() const override
Return the kind of this update.
Definition table_update.h:214
Represents adding a new schema to the table.
Definition table_update.h:157
Kind kind() const override
Return the kind of this update.
Definition table_update.h:170
Represents adding a snapshot to the table.
Definition table_update.h:333
Kind kind() const override
Return the kind of this update.
Definition table_update.h:344
Represents adding a new sort order to the table.
Definition table_update.h:290
Kind kind() const override
Return the kind of this update.
Definition table_update.h:301
Represents an assignment of a UUID to the table.
Definition table_update.h:114
Kind kind() const override
Return the kind of this update.
Definition table_update.h:124
Represents removing an encryption key from the table.
Definition table_update.h:636
Kind kind() const override
Return the kind of this update.
Definition table_update.h:646
Represents removing partition specs from the table.
Definition table_update.h:246
Kind kind() const override
Return the kind of this update.
Definition table_update.h:257
Represents removing partition statistics for a snapshot.
Definition table_update.h:594
Kind kind() const override
Return the kind of this update.
Definition table_update.h:604
Represents removing table properties.
Definition table_update.h:477
Kind kind() const override
Return the kind of this update.
Definition table_update.h:488
Represents removing schemas from the table.
Definition table_update.h:268
Kind kind() const override
Return the kind of this update.
Definition table_update.h:279
Represents removing a snapshot reference.
Definition table_update.h:377
Kind kind() const override
Return the kind of this update.
Definition table_update.h:387
Represents removing snapshots from the table.
Definition table_update.h:355
Kind kind() const override
Return the kind of this update.
Definition table_update.h:366
Represents removing statistics for a snapshot.
Definition table_update.h:546
Kind kind() const override
Return the kind of this update.
Definition table_update.h:556
Represents setting the current schema.
Definition table_update.h:182
Kind kind() const override
Return the kind of this update.
Definition table_update.h:192
Represents setting the default partition spec.
Definition table_update.h:225
Kind kind() const override
Return the kind of this update.
Definition table_update.h:235
Represents setting the default sort order.
Definition table_update.h:312
Kind kind() const override
Return the kind of this update.
Definition table_update.h:322
Represents setting the table location.
Definition table_update.h:499
Kind kind() const override
Return the kind of this update.
Definition table_update.h:509
Represents setting partition statistics for a snapshot.
Definition table_update.h:567
Kind kind() const override
Return the kind of this update.
Definition table_update.h:583
Represents setting table properties.
Definition table_update.h:455
Kind kind() const override
Return the kind of this update.
Definition table_update.h:466
Represents setting a snapshot reference.
Definition table_update.h:398
Kind kind() const override
Return the kind of this update.
Definition table_update.h:439
Represents setting statistics for a snapshot.
Definition table_update.h:520
Kind kind() const override
Return the kind of this update.
Definition table_update.h:535
Represents an upgrade of the table format version.
Definition table_update.h:135
Kind kind() const override
Return the kind of this update.
Definition table_update.h:146
ICEBERG_EXPORT const std::shared_ptr< UuidType > & uuid()
Return a UuidType instance.
Represents an encrypted table key entry.
Definition encrypted_key.h:34
A reference to a snapshot, either a branch or a tag.
Definition snapshot.h:68