-
Notifications
You must be signed in to change notification settings - Fork 94
Expand file tree
/
Copy pathcommon.hpp
More file actions
150 lines (105 loc) · 6.22 KB
/
common.hpp
File metadata and controls
150 lines (105 loc) · 6.22 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
#pragma once
#include "storage/iceberg_table_update.hpp"
#include "metadata/iceberg_manifest.hpp"
#include "metadata/iceberg_manifest_list.hpp"
#include "metadata/iceberg_snapshot.hpp"
#include "duckdb/common/vector.hpp"
#include "duckdb/common/string.hpp"
#include "duckdb/common/types.hpp"
#include "storage/iceberg_table_requirement.hpp"
#include "duckdb/common/types/value.hpp"
#include "metadata/iceberg_table_schema.hpp"
namespace duckdb {
struct IcebergTableInformation;
struct AddSchemaUpdate : public IcebergTableUpdate {
static constexpr const IcebergTableUpdateType TYPE = IcebergTableUpdateType::ADD_SCHEMA;
explicit AddSchemaUpdate(IcebergTableInformation &table_info);
void CreateUpdate(DatabaseInstance &db, ClientContext &context, IcebergCommitState &commit_state);
shared_ptr<IcebergTableSchema> table_schema = nullptr;
optional_idx last_column_id;
};
struct AssertCreateRequirement : public IcebergTableRequirement {
static constexpr const IcebergTableRequirementType TYPE = IcebergTableRequirementType::ASSERT_CREATE;
explicit AssertCreateRequirement(IcebergTableInformation &table_info);
void CreateRequirement(DatabaseInstance &db, ClientContext &context, IcebergCommitState &commit_state);
};
struct AssertCurrentSchemaIdRequirement : public IcebergTableRequirement {
static constexpr const IcebergTableRequirementType TYPE = IcebergTableRequirementType::ASSERT_CURRENT_SCHEMA_ID;
explicit AssertCurrentSchemaIdRequirement(IcebergTableInformation &table_info);
void CreateRequirement(DatabaseInstance &db, ClientContext &context, IcebergCommitState &commit_state);
int32_t current_schema_id;
};
struct AssertLastAssignedColumnFieldIdRequirement : public IcebergTableRequirement {
static constexpr const IcebergTableRequirementType TYPE =
IcebergTableRequirementType::ASSERT_LAST_ASSIGNED_FIELD_ID;
explicit AssertLastAssignedColumnFieldIdRequirement(IcebergTableInformation &table_info);
void CreateRequirement(DatabaseInstance &db, ClientContext &context, IcebergCommitState &commit_state);
int32_t last_assigned_column_field_id;
};
struct AssertLastAssignedPartitionIdRequirement : public IcebergTableRequirement {
static constexpr const IcebergTableRequirementType TYPE =
IcebergTableRequirementType::ASSERT_LAST_ASSIGNED_PARTITION_ID;
explicit AssertLastAssignedPartitionIdRequirement(IcebergTableInformation &table_info);
void CreateRequirement(DatabaseInstance &db, ClientContext &context, IcebergCommitState &commit_state);
int32_t last_assigned_partition_id;
};
struct AssertDefaultSpecIdRequirement : public IcebergTableRequirement {
static constexpr const IcebergTableRequirementType TYPE = IcebergTableRequirementType::ASSERT_DEFAULT_SPEC_ID;
explicit AssertDefaultSpecIdRequirement(IcebergTableInformation &table_info);
void CreateRequirement(DatabaseInstance &db, ClientContext &context, IcebergCommitState &commit_state);
int32_t default_spec_id;
};
struct AssignUUIDUpdate : public IcebergTableUpdate {
static constexpr const IcebergTableUpdateType TYPE = IcebergTableUpdateType::ASSIGN_UUID;
explicit AssignUUIDUpdate(IcebergTableInformation &table_info);
void CreateUpdate(DatabaseInstance &db, ClientContext &context, IcebergCommitState &commit_state);
};
struct UpgradeFormatVersion : public IcebergTableUpdate {
static constexpr const IcebergTableUpdateType TYPE = IcebergTableUpdateType::UPGRADE_FORMAT_VERSION;
explicit UpgradeFormatVersion(IcebergTableInformation &table_info);
void CreateUpdate(DatabaseInstance &db, ClientContext &context, IcebergCommitState &commit_state);
};
struct SetCurrentSchema : public IcebergTableUpdate {
static constexpr const IcebergTableUpdateType TYPE = IcebergTableUpdateType::UPGRADE_FORMAT_VERSION;
explicit SetCurrentSchema(IcebergTableInformation &table_info);
void CreateUpdate(DatabaseInstance &db, ClientContext &context, IcebergCommitState &commit_state);
};
struct AddPartitionSpec : public IcebergTableUpdate {
static constexpr const IcebergTableUpdateType TYPE = IcebergTableUpdateType::UPGRADE_FORMAT_VERSION;
explicit AddPartitionSpec(IcebergTableInformation &table_info);
void CreateUpdate(DatabaseInstance &db, ClientContext &context, IcebergCommitState &commit_state);
};
struct AddSortOrder : public IcebergTableUpdate {
static constexpr const int64_t DEFAULT_SORT_ORDER_ID = 0;
static constexpr const IcebergTableUpdateType TYPE = IcebergTableUpdateType::ADD_SORT_ORDER;
explicit AddSortOrder(IcebergTableInformation &table_info);
void CreateUpdate(DatabaseInstance &db, ClientContext &context, IcebergCommitState &commit_state);
};
struct SetDefaultSortOrder : public IcebergTableUpdate {
static constexpr const IcebergTableUpdateType TYPE = IcebergTableUpdateType::SET_DEFAULT_SORT_ORDER;
explicit SetDefaultSortOrder(IcebergTableInformation &table_info);
void CreateUpdate(DatabaseInstance &db, ClientContext &context, IcebergCommitState &commit_state);
};
struct SetDefaultSpec : public IcebergTableUpdate {
static constexpr const IcebergTableUpdateType TYPE = IcebergTableUpdateType::SET_DEFAULT_SPEC;
explicit SetDefaultSpec(IcebergTableInformation &table_info);
void CreateUpdate(DatabaseInstance &db, ClientContext &context, IcebergCommitState &commit_state);
};
struct SetProperties : public IcebergTableUpdate {
static constexpr const IcebergTableUpdateType TYPE = IcebergTableUpdateType::SET_PROPERTIES;
explicit SetProperties(IcebergTableInformation &table_info, case_insensitive_map_t<string> properties);
void CreateUpdate(DatabaseInstance &db, ClientContext &context, IcebergCommitState &commit_state);
case_insensitive_map_t<string> properties;
};
struct RemoveProperties : public IcebergTableUpdate {
static constexpr const IcebergTableUpdateType TYPE = IcebergTableUpdateType::REMOVE_PROPERTIES;
explicit RemoveProperties(IcebergTableInformation &table_info, vector<string> properties);
void CreateUpdate(DatabaseInstance &db, ClientContext &context, IcebergCommitState &commit_state);
vector<string> properties;
};
struct SetLocation : public IcebergTableUpdate {
static constexpr const IcebergTableUpdateType TYPE = IcebergTableUpdateType::SET_LOCATION;
explicit SetLocation(IcebergTableInformation &table_info);
void CreateUpdate(DatabaseInstance &db, ClientContext &context, IcebergCommitState &commit_state);
};
} // namespace duckdb