1use versioned_feature_core::FeatureVersion;
2
3#[derive(Clone, Debug, Default)]
4pub struct GroveDBVersions {
5 pub apply_batch: GroveDBApplyBatchVersions,
6 pub element: GroveDBElementMethodVersions,
7 pub operations: GroveDBOperationsVersions,
8 pub aggregate_sum_path_query_methods: GroveDBAggregateSumPathQueryMethodVersions,
9 pub path_query_methods: GroveDBPathQueryMethodVersions,
10 pub replication: GroveDBReplicationVersions,
11 pub query_limits: GroveDBQueryLimits,
12}
13
14#[derive(Clone, Debug)]
15pub struct GroveDBQueryLimits {
16 pub max_aggregate_sum_query_elements_scanned: u16,
17}
18
19impl Default for GroveDBQueryLimits {
20 fn default() -> Self {
21 Self {
22 max_aggregate_sum_query_elements_scanned: 1024,
23 }
24 }
25}
26
27#[derive(Clone, Debug, Default)]
28pub struct GroveDBAggregateSumPathQueryMethodVersions {
29 pub merge: FeatureVersion,
30}
31
32#[derive(Clone, Debug, Default)]
33pub struct GroveDBPathQueryMethodVersions {
34 pub terminal_keys: FeatureVersion,
35 pub merge: FeatureVersion,
36 pub query_items_at_path: FeatureVersion,
37 pub should_add_parent_tree_at_path: FeatureVersion,
38}
39
40#[derive(Clone, Debug, Default)]
41pub struct GroveDBApplyBatchVersions {
42 pub apply_batch_structure: FeatureVersion,
43 pub apply_body: FeatureVersion,
44 pub continue_partial_apply_body: FeatureVersion,
45 pub apply_operations_without_batching: FeatureVersion,
46 pub apply_batch: FeatureVersion,
47 pub apply_partial_batch: FeatureVersion,
48 pub open_batch_transactional_merk_at_path: FeatureVersion,
49 pub open_batch_merk_at_path: FeatureVersion,
50 pub apply_batch_with_element_flags_update: FeatureVersion,
51 pub apply_partial_batch_with_element_flags_update: FeatureVersion,
52 pub estimated_case_operations_for_batch: FeatureVersion,
53}
54
55#[derive(Clone, Debug, Default)]
56pub struct GroveDBOperationsVersions {
57 pub get: GroveDBOperationsGetVersions,
58 pub insert: GroveDBOperationsInsertVersions,
59 pub delete: GroveDBOperationsDeleteVersions,
60 pub delete_up_tree: GroveDBOperationsDeleteUpTreeVersions,
61 pub query: GroveDBOperationsQueryVersions,
62 pub proof: GroveDBOperationsProofVersions,
63 pub average_case: GroveDBOperationsAverageCaseVersions,
64 pub worst_case: GroveDBOperationsWorstCaseVersions,
65}
66
67#[derive(Clone, Debug, Default)]
68pub struct GroveDBOperationsGetVersions {
69 pub get: FeatureVersion,
70 pub get_caching_optional: FeatureVersion,
71 pub follow_reference: FeatureVersion,
72 pub follow_reference_once: FeatureVersion,
73 pub get_raw: FeatureVersion,
74 pub get_raw_caching_optional: FeatureVersion,
75 pub get_raw_optional: FeatureVersion,
76 pub get_raw_optional_caching_optional: FeatureVersion,
77 pub has_raw: FeatureVersion,
78 pub check_subtree_exists_invalid_path: FeatureVersion,
79 pub average_case_for_has_raw: FeatureVersion,
80 pub average_case_for_has_raw_tree: FeatureVersion,
81 pub average_case_for_get_raw: FeatureVersion,
82 pub average_case_for_get: FeatureVersion,
83 pub average_case_for_get_tree: FeatureVersion,
84 pub worst_case_for_has_raw: FeatureVersion,
85 pub worst_case_for_get_raw: FeatureVersion,
86 pub worst_case_for_get: FeatureVersion,
87 pub is_empty_tree: FeatureVersion,
88}
89
90#[derive(Clone, Debug, Default)]
91pub struct GroveDBOperationsProofVersions {
92 pub prove_query: FeatureVersion,
93 pub prove_query_many: FeatureVersion,
94 pub prove_query_non_serialized: FeatureVersion,
95 pub prove_trunk_chunk: FeatureVersion,
96 pub prove_trunk_chunk_non_serialized: FeatureVersion,
97 pub prove_branch_chunk: FeatureVersion,
98 pub prove_branch_chunk_non_serialized: FeatureVersion,
99 pub verify_query_with_options: FeatureVersion,
100 pub verify_query_raw: FeatureVersion,
101 pub verify_layer_proof: FeatureVersion,
102 pub verify_query: FeatureVersion,
103 pub verify_subset_query: FeatureVersion,
104 pub verify_query_with_absence_proof: FeatureVersion,
105 pub verify_subset_query_with_absence_proof: FeatureVersion,
106 pub verify_query_with_chained_path_queries: FeatureVersion,
107 pub verify_query_get_parent_tree_info_with_options: FeatureVersion,
108}
109
110#[derive(Clone, Debug, Default)]
111pub struct GroveDBOperationsQueryVersions {
112 pub query_encoded_many: FeatureVersion,
113 pub query_many_raw: FeatureVersion,
114 pub get_proved_path_query: FeatureVersion,
115 pub query: FeatureVersion,
116 pub query_item_value: FeatureVersion,
117 pub query_item_value_or_sum: FeatureVersion,
118 pub query_aggregate_sums: FeatureVersion,
119 pub query_aggregate_count_on_range: FeatureVersion,
120 pub query_aggregate_sum_on_range: FeatureVersion,
121 pub query_aggregate_count_and_sum_on_range: FeatureVersion,
122 pub query_sums: FeatureVersion,
123 pub query_raw: FeatureVersion,
124 pub query_keys_optional: FeatureVersion,
125 pub query_raw_keys_optional: FeatureVersion,
126 pub follow_element: FeatureVersion,
127}
128
129#[derive(Clone, Debug, Default)]
130pub struct GroveDBOperationsAverageCaseVersions {
131 pub add_average_case_get_merk_at_path: FeatureVersion,
132 pub average_case_merk_replace_tree: FeatureVersion,
133 pub average_case_merk_insert_tree: FeatureVersion,
134 pub average_case_merk_delete_tree: FeatureVersion,
135 pub average_case_merk_insert_element: FeatureVersion,
136 pub average_case_merk_replace_element: FeatureVersion,
137 pub average_case_merk_patch_element: FeatureVersion,
138 pub average_case_merk_delete_element: FeatureVersion,
139 pub add_average_case_has_raw_cost: FeatureVersion,
140 pub add_average_case_has_raw_tree_cost: FeatureVersion,
141 pub add_average_case_get_raw_cost: FeatureVersion,
142 pub add_average_case_get_raw_tree_cost: FeatureVersion,
143 pub add_average_case_get_cost: FeatureVersion,
144}
145
146#[derive(Clone, Debug, Default)]
147pub struct GroveDBOperationsWorstCaseVersions {
148 pub add_worst_case_get_merk_at_path: FeatureVersion,
149 pub worst_case_merk_replace_tree: FeatureVersion,
150 pub worst_case_merk_insert_tree: FeatureVersion,
151 pub worst_case_merk_delete_tree: FeatureVersion,
152 pub worst_case_merk_insert_element: FeatureVersion,
153 pub worst_case_merk_replace_element: FeatureVersion,
154 pub worst_case_merk_patch_element: FeatureVersion,
155 pub worst_case_merk_delete_element: FeatureVersion,
156 pub add_worst_case_has_raw_cost: FeatureVersion,
157 pub add_worst_case_get_raw_tree_cost: FeatureVersion,
158 pub add_worst_case_get_raw_cost: FeatureVersion,
159 pub add_worst_case_get_cost: FeatureVersion,
160}
161
162#[derive(Clone, Debug, Default)]
163pub struct GroveDBOperationsInsertVersions {
164 pub insert: FeatureVersion,
165 pub insert_on_transaction: FeatureVersion,
166 pub insert_without_transaction: FeatureVersion,
167 pub add_element_on_transaction: FeatureVersion,
168 pub add_element_without_transaction: FeatureVersion,
169 pub insert_if_not_exists: FeatureVersion,
170 pub insert_if_not_exists_return_existing_element: FeatureVersion,
171 pub insert_if_changed_value: FeatureVersion,
172}
173
174#[derive(Clone, Debug, Default)]
175pub struct GroveDBOperationsDeleteVersions {
176 pub delete: FeatureVersion,
177 pub clear_subtree: FeatureVersion,
178 pub delete_with_sectional_storage_function: FeatureVersion,
179 pub delete_if_empty_tree: FeatureVersion,
180 pub delete_if_empty_tree_with_sectional_storage_function: FeatureVersion,
181 pub delete_operation_for_delete_internal: FeatureVersion,
182 pub delete_internal_on_transaction: FeatureVersion,
183 pub delete_internal_without_transaction: FeatureVersion,
184 pub average_case_delete_operation_for_delete: FeatureVersion,
185 pub worst_case_delete_operation_for_delete: FeatureVersion,
186}
187
188#[derive(Clone, Debug, Default)]
189pub struct GroveDBOperationsDeleteUpTreeVersions {
190 pub delete_up_tree_while_empty: FeatureVersion,
191 pub delete_up_tree_while_empty_with_sectional_storage: FeatureVersion,
192 pub delete_operations_for_delete_up_tree_while_empty: FeatureVersion,
193 pub add_delete_operations_for_delete_up_tree_while_empty: FeatureVersion,
194 pub average_case_delete_operations_for_delete_up_tree_while_empty: FeatureVersion,
195 pub worst_case_delete_operations_for_delete_up_tree_while_empty: FeatureVersion,
196}
197
198#[derive(Clone, Debug, Default)]
199pub struct GroveDBOperationsApplyBatchVersions {
200 pub apply_batch_structure: FeatureVersion,
201 pub apply_body: FeatureVersion,
202 pub continue_partial_apply_body: FeatureVersion,
203 pub apply_operations_without_batching: FeatureVersion,
204 pub apply_batch: FeatureVersion,
205 pub apply_partial_batch: FeatureVersion,
206 pub open_batch_transactional_merk_at_path: FeatureVersion,
207 pub open_batch_merk_at_path: FeatureVersion,
208 pub apply_batch_with_element_flags_update: FeatureVersion,
209 pub apply_partial_batch_with_element_flags_update: FeatureVersion,
210 pub estimated_case_operations_for_batch: FeatureVersion,
211}
212
213#[derive(Clone, Debug, Default)]
214pub struct GroveDBElementMethodVersions {
215 pub delete: FeatureVersion,
216 pub delete_with_sectioned_removal_bytes: FeatureVersion,
217 pub delete_into_batch_operations: FeatureVersion,
218 pub element_at_key_already_exists: FeatureVersion,
219 pub get: FeatureVersion,
220 pub get_optional: FeatureVersion,
221 pub get_from_storage: FeatureVersion,
222 pub get_optional_from_storage: FeatureVersion,
223 pub get_with_absolute_refs: FeatureVersion,
224 pub get_value_hash: FeatureVersion,
225 pub get_with_value_hash: FeatureVersion,
226 pub get_specialized_cost: FeatureVersion,
227 pub value_defined_cost: FeatureVersion,
228 pub value_defined_cost_for_serialized_value: FeatureVersion,
229 pub specialized_costs_for_key_value: FeatureVersion,
230 pub required_item_space: FeatureVersion,
231 pub required_item_with_sum_item_space: FeatureVersion,
232 pub required_reference_with_sum_item_space: FeatureVersion,
233 pub insert: FeatureVersion,
234 pub insert_into_batch_operations: FeatureVersion,
235 pub insert_if_not_exists: FeatureVersion,
236 pub insert_if_not_exists_into_batch_operations: FeatureVersion,
237 pub insert_if_changed_value: FeatureVersion,
238 pub insert_if_changed_value_into_batch_operations: FeatureVersion,
239 pub insert_reference: FeatureVersion,
240 pub insert_reference_into_batch_operations: FeatureVersion,
241 pub insert_reference_if_changed_value: FeatureVersion,
242 pub insert_subtree: FeatureVersion,
243 pub insert_subtree_into_batch_operations: FeatureVersion,
244 pub get_query: FeatureVersion,
245 pub get_aggregate_sum_query: FeatureVersion,
246 pub get_query_values: FeatureVersion,
247 pub get_query_apply_function: FeatureVersion,
248 pub get_path_query: FeatureVersion,
249 pub get_sized_query: FeatureVersion,
250 pub get_aggregate_sum_query_apply_function: FeatureVersion,
251 pub path_query_push: FeatureVersion,
252 pub aggregate_sum_path_query_push: FeatureVersion,
253 pub query_item: FeatureVersion,
254 pub basic_push: FeatureVersion,
255 pub basic_aggregate_sum_push: FeatureVersion,
256 pub serialize: FeatureVersion,
272 pub serialized_size: FeatureVersion,
273 pub deserialize: FeatureVersion,
274 pub aggregate_sum_query_item: FeatureVersion,
275}
276
277#[derive(Clone, Debug, Default)]
278pub struct GroveDBReplicationVersions {
279 pub get_subtrees_metadata: FeatureVersion,
280 pub fetch_chunk: FeatureVersion,
281 pub start_snapshot_syncing: FeatureVersion,
282 pub apply_chunk: FeatureVersion,
283}