Barretenberg
The ZK-SNARK library at the core of Aztec
Loading...
Searching...
No Matches
lookups_tx.hpp
Go to the documentation of this file.
1// AUTOGENERATED FILE
2#pragma once
3
4#include <cstddef>
5#include <string_view>
6#include <tuple>
7
8#include "../columns.hpp"
11
12namespace bb::avm2 {
13
15
17 static constexpr std::string_view NAME = "LOOKUP_TX_READ_PHASE_SPEC";
18 static constexpr std::string_view RELATION_NAME = "tx";
19 static constexpr size_t LOOKUP_TUPLE_SIZE = 16;
20 static constexpr Column SRC_SELECTOR = Column::tx_sel;
21 static constexpr Column DST_SELECTOR = Column::precomputed_sel_phase;
22 static constexpr Column COUNTS = Column::lookup_tx_read_phase_spec_counts;
23 static constexpr Column INVERSES = Column::lookup_tx_read_phase_spec_inv;
24 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE> SRC_COLUMNS = {
25 ColumnAndShifts::tx_phase_value,
26 ColumnAndShifts::tx_is_public_call_request,
27 ColumnAndShifts::tx_is_teardown,
28 ColumnAndShifts::tx_is_collect_fee,
29 ColumnAndShifts::tx_is_tree_padding,
30 ColumnAndShifts::tx_is_cleanup,
31 ColumnAndShifts::tx_is_revertible,
32 ColumnAndShifts::tx_read_pi_start_offset,
33 ColumnAndShifts::tx_read_pi_length_offset,
34 ColumnAndShifts::tx_sel_non_revertible_append_note_hash,
35 ColumnAndShifts::tx_sel_non_revertible_append_nullifier,
36 ColumnAndShifts::tx_sel_non_revertible_append_l2_l1_msg,
37 ColumnAndShifts::tx_sel_revertible_append_note_hash,
38 ColumnAndShifts::tx_sel_revertible_append_nullifier,
39 ColumnAndShifts::tx_sel_revertible_append_l2_l1_msg,
40 ColumnAndShifts::tx_next_phase_on_revert
41 };
42 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE> DST_COLUMNS = {
43 ColumnAndShifts::precomputed_clk,
44 ColumnAndShifts::precomputed_is_public_call_request,
45 ColumnAndShifts::precomputed_is_teardown,
46 ColumnAndShifts::precomputed_is_collect_fee,
47 ColumnAndShifts::precomputed_is_tree_padding,
48 ColumnAndShifts::precomputed_is_cleanup,
49 ColumnAndShifts::precomputed_is_revertible,
50 ColumnAndShifts::precomputed_read_pi_start_offset,
51 ColumnAndShifts::precomputed_read_pi_length_offset,
52 ColumnAndShifts::precomputed_sel_non_revertible_append_note_hash,
53 ColumnAndShifts::precomputed_sel_non_revertible_append_nullifier,
54 ColumnAndShifts::precomputed_sel_non_revertible_append_l2_l1_msg,
55 ColumnAndShifts::precomputed_sel_revertible_append_note_hash,
56 ColumnAndShifts::precomputed_sel_revertible_append_nullifier,
57 ColumnAndShifts::precomputed_sel_revertible_append_l2_l1_msg,
58 ColumnAndShifts::precomputed_next_phase_on_revert
59 };
60};
61
63template <typename FF_>
65
67
69 static constexpr std::string_view NAME = "LOOKUP_TX_READ_PHASE_LENGTH";
70 static constexpr std::string_view RELATION_NAME = "tx";
71 static constexpr size_t LOOKUP_TUPLE_SIZE = 2;
72 static constexpr Column SRC_SELECTOR = Column::tx_sel_read_phase_length;
73 static constexpr Column DST_SELECTOR = Column::public_inputs_sel;
74 static constexpr Column COUNTS = Column::lookup_tx_read_phase_length_counts;
75 static constexpr Column INVERSES = Column::lookup_tx_read_phase_length_inv;
76 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE> SRC_COLUMNS = {
77 ColumnAndShifts::tx_read_pi_length_offset, ColumnAndShifts::tx_remaining_phase_counter
78 };
79 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE> DST_COLUMNS = {
80 ColumnAndShifts::precomputed_clk, ColumnAndShifts::public_inputs_cols_0_
81 };
82};
83
85template <typename FF_>
87
89
91 static constexpr std::string_view NAME = "LOOKUP_TX_READ_PUBLIC_CALL_REQUEST_PHASE";
92 static constexpr std::string_view RELATION_NAME = "tx";
93 static constexpr size_t LOOKUP_TUPLE_SIZE = 5;
94 static constexpr Column SRC_SELECTOR = Column::tx_should_process_call_request;
95 static constexpr Column DST_SELECTOR = Column::public_inputs_sel;
96 static constexpr Column COUNTS = Column::lookup_tx_read_public_call_request_phase_counts;
97 static constexpr Column INVERSES = Column::lookup_tx_read_public_call_request_phase_inv;
98 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE> SRC_COLUMNS = { ColumnAndShifts::tx_read_pi_offset,
99 ColumnAndShifts::tx_msg_sender,
100 ColumnAndShifts::tx_contract_addr,
101 ColumnAndShifts::tx_is_static,
102 ColumnAndShifts::tx_calldata_hash };
103 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE> DST_COLUMNS = {
104 ColumnAndShifts::precomputed_clk,
105 ColumnAndShifts::public_inputs_cols_0_,
106 ColumnAndShifts::public_inputs_cols_1_,
107 ColumnAndShifts::public_inputs_cols_2_,
108 ColumnAndShifts::public_inputs_cols_3_
109 };
110};
111
114template <typename FF_>
117
119
121 static constexpr std::string_view NAME = "LOOKUP_TX_READ_TREE_INSERT_VALUE";
122 static constexpr std::string_view RELATION_NAME = "tx";
123 static constexpr size_t LOOKUP_TUPLE_SIZE = 2;
124 static constexpr Column SRC_SELECTOR = Column::tx_is_tree_insert_phase;
125 static constexpr Column DST_SELECTOR = Column::public_inputs_sel;
126 static constexpr Column COUNTS = Column::lookup_tx_read_tree_insert_value_counts;
127 static constexpr Column INVERSES = Column::lookup_tx_read_tree_insert_value_inv;
128 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE> SRC_COLUMNS = { ColumnAndShifts::tx_read_pi_offset,
129 ColumnAndShifts::tx_leaf_value };
130 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE> DST_COLUMNS = {
131 ColumnAndShifts::precomputed_clk, ColumnAndShifts::public_inputs_cols_0_
132 };
133};
134
136template <typename FF_>
138
140
142 static constexpr std::string_view NAME = "LOOKUP_TX_NOTE_HASH_APPEND";
143 static constexpr std::string_view RELATION_NAME = "tx";
144 static constexpr size_t LOOKUP_TUPLE_SIZE = 8;
145 static constexpr Column SRC_SELECTOR = Column::tx_should_note_hash_append;
146 static constexpr Column DST_SELECTOR = Column::note_hash_tree_check_write;
147 static constexpr Column COUNTS = Column::lookup_tx_note_hash_append_counts;
148 static constexpr Column INVERSES = Column::lookup_tx_note_hash_append_inv;
149 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE> SRC_COLUMNS = {
150 ColumnAndShifts::tx_leaf_value,
151 ColumnAndShifts::tx_prev_note_hash_tree_size,
152 ColumnAndShifts::tx_prev_note_hash_tree_root,
153 ColumnAndShifts::precomputed_zero,
154 ColumnAndShifts::tx_sel_revertible_append_note_hash,
155 ColumnAndShifts::tx_prev_num_note_hashes_emitted,
156 ColumnAndShifts::tx_discard,
157 ColumnAndShifts::tx_next_note_hash_tree_root
158 };
159 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE> DST_COLUMNS = {
160 ColumnAndShifts::note_hash_tree_check_note_hash, ColumnAndShifts::note_hash_tree_check_leaf_index,
161 ColumnAndShifts::note_hash_tree_check_prev_root, ColumnAndShifts::note_hash_tree_check_should_silo,
162 ColumnAndShifts::note_hash_tree_check_should_unique, ColumnAndShifts::note_hash_tree_check_note_hash_index,
163 ColumnAndShifts::note_hash_tree_check_discard, ColumnAndShifts::note_hash_tree_check_next_root
164 };
165};
166
168template <typename FF_>
170
172
174 static constexpr std::string_view NAME = "LOOKUP_TX_NULLIFIER_APPEND";
175 static constexpr std::string_view RELATION_NAME = "tx";
176 static constexpr size_t LOOKUP_TUPLE_SIZE = 8;
177 static constexpr Column SRC_SELECTOR = Column::tx_should_nullifier_append;
178 static constexpr Column DST_SELECTOR = Column::nullifier_check_write;
179 static constexpr Column COUNTS = Column::lookup_tx_nullifier_append_counts;
180 static constexpr Column INVERSES = Column::lookup_tx_nullifier_append_inv;
181 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE> SRC_COLUMNS = {
182 ColumnAndShifts::tx_leaf_value,
183 ColumnAndShifts::tx_prev_nullifier_tree_root,
184 ColumnAndShifts::tx_reverted,
185 ColumnAndShifts::tx_next_nullifier_tree_root,
186 ColumnAndShifts::tx_prev_nullifier_tree_size,
187 ColumnAndShifts::tx_discard,
188 ColumnAndShifts::tx_prev_num_nullifiers_emitted,
189 ColumnAndShifts::precomputed_zero
190 };
191 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE> DST_COLUMNS = {
192 ColumnAndShifts::nullifier_check_nullifier,
193 ColumnAndShifts::nullifier_check_root,
194 ColumnAndShifts::nullifier_check_exists,
195 ColumnAndShifts::nullifier_check_write_root,
196 ColumnAndShifts::nullifier_check_tree_size_before_write,
197 ColumnAndShifts::nullifier_check_discard,
198 ColumnAndShifts::nullifier_check_nullifier_index,
199 ColumnAndShifts::nullifier_check_should_silo
200 };
201};
202
204template <typename FF_>
206
208
210 static constexpr std::string_view NAME = "LOOKUP_TX_READ_L2_L1_MSG";
211 static constexpr std::string_view RELATION_NAME = "tx";
212 static constexpr size_t LOOKUP_TUPLE_SIZE = 4;
213 static constexpr Column SRC_SELECTOR = Column::tx_should_try_l2_l1_msg_append;
214 static constexpr Column DST_SELECTOR = Column::public_inputs_sel;
215 static constexpr Column COUNTS = Column::lookup_tx_read_l2_l1_msg_counts;
216 static constexpr Column INVERSES = Column::lookup_tx_read_l2_l1_msg_inv;
217 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE> SRC_COLUMNS = {
218 ColumnAndShifts::tx_read_pi_offset,
219 ColumnAndShifts::tx_l2_l1_msg_recipient,
220 ColumnAndShifts::tx_l2_l1_msg_content,
221 ColumnAndShifts::tx_l2_l1_msg_contract_address
222 };
223 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE> DST_COLUMNS = {
224 ColumnAndShifts::precomputed_clk,
225 ColumnAndShifts::public_inputs_cols_0_,
226 ColumnAndShifts::public_inputs_cols_1_,
227 ColumnAndShifts::public_inputs_cols_2_
228 };
229};
230
232template <typename FF_>
234
236
238 static constexpr std::string_view NAME = "LOOKUP_TX_WRITE_L2_L1_MSG";
239 static constexpr std::string_view RELATION_NAME = "tx";
240 static constexpr size_t LOOKUP_TUPLE_SIZE = 4;
241 static constexpr Column SRC_SELECTOR = Column::tx_should_l2_l1_msg_append;
242 static constexpr Column DST_SELECTOR = Column::public_inputs_sel;
243 static constexpr Column COUNTS = Column::lookup_tx_write_l2_l1_msg_counts;
244 static constexpr Column INVERSES = Column::lookup_tx_write_l2_l1_msg_inv;
245 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE> SRC_COLUMNS = {
246 ColumnAndShifts::tx_write_pi_offset,
247 ColumnAndShifts::tx_l2_l1_msg_recipient,
248 ColumnAndShifts::tx_l2_l1_msg_content,
249 ColumnAndShifts::tx_l2_l1_msg_contract_address
250 };
251 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE> DST_COLUMNS = {
252 ColumnAndShifts::precomputed_clk,
253 ColumnAndShifts::public_inputs_cols_0_,
254 ColumnAndShifts::public_inputs_cols_1_,
255 ColumnAndShifts::public_inputs_cols_2_
256 };
257};
258
260template <typename FF_>
262
264
266 static constexpr std::string_view NAME = "LOOKUP_TX_READ_EFFECTIVE_FEE_PUBLIC_INPUTS";
267 static constexpr std::string_view RELATION_NAME = "tx";
268 static constexpr size_t LOOKUP_TUPLE_SIZE = 3;
269 static constexpr Column SRC_SELECTOR = Column::tx_is_collect_fee;
270 static constexpr Column DST_SELECTOR = Column::public_inputs_sel;
271 static constexpr Column COUNTS = Column::lookup_tx_read_effective_fee_public_inputs_counts;
272 static constexpr Column INVERSES = Column::lookup_tx_read_effective_fee_public_inputs_inv;
273 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE> SRC_COLUMNS = {
274 ColumnAndShifts::tx_read_pi_offset,
275 ColumnAndShifts::tx_effective_fee_per_da_gas,
276 ColumnAndShifts::tx_effective_fee_per_l2_gas
277 };
278 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE> DST_COLUMNS = {
279 ColumnAndShifts::precomputed_clk, ColumnAndShifts::public_inputs_cols_0_, ColumnAndShifts::public_inputs_cols_1_
280 };
281};
282
285template <typename FF_>
288
290
292 static constexpr std::string_view NAME = "LOOKUP_TX_READ_FEE_PAYER_PUBLIC_INPUTS";
293 static constexpr std::string_view RELATION_NAME = "tx";
294 static constexpr size_t LOOKUP_TUPLE_SIZE = 2;
295 static constexpr Column SRC_SELECTOR = Column::tx_is_collect_fee;
296 static constexpr Column DST_SELECTOR = Column::public_inputs_sel;
297 static constexpr Column COUNTS = Column::lookup_tx_read_fee_payer_public_inputs_counts;
298 static constexpr Column INVERSES = Column::lookup_tx_read_fee_payer_public_inputs_inv;
299 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE> SRC_COLUMNS = {
300 ColumnAndShifts::tx_fee_payer_pi_offset, ColumnAndShifts::tx_fee_payer
301 };
302 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE> DST_COLUMNS = {
303 ColumnAndShifts::precomputed_clk, ColumnAndShifts::public_inputs_cols_0_
304 };
305};
306
309template <typename FF_>
312
314
316 static constexpr std::string_view NAME = "LOOKUP_TX_BALANCE_SLOT_POSEIDON2";
317 static constexpr std::string_view RELATION_NAME = "tx";
318 static constexpr size_t LOOKUP_TUPLE_SIZE = 5;
319 static constexpr Column SRC_SELECTOR = Column::tx_is_collect_fee;
320 static constexpr Column DST_SELECTOR = Column::poseidon2_hash_end;
321 static constexpr Column COUNTS = Column::lookup_tx_balance_slot_poseidon2_counts;
322 static constexpr Column INVERSES = Column::lookup_tx_balance_slot_poseidon2_inv;
323 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE> SRC_COLUMNS = {
324 ColumnAndShifts::tx_is_collect_fee,
325 ColumnAndShifts::tx_fee_juice_balances_slot_constant,
326 ColumnAndShifts::tx_fee_payer,
327 ColumnAndShifts::precomputed_zero,
328 ColumnAndShifts::tx_fee_juice_balance_slot
329 };
330 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE> DST_COLUMNS = {
331 ColumnAndShifts::poseidon2_hash_start,
332 ColumnAndShifts::poseidon2_hash_input_0,
333 ColumnAndShifts::poseidon2_hash_input_1,
334 ColumnAndShifts::poseidon2_hash_input_2,
335 ColumnAndShifts::poseidon2_hash_output
336 };
337};
338
340template <typename FF_>
342
344
346 static constexpr std::string_view NAME = "LOOKUP_TX_BALANCE_READ";
347 static constexpr std::string_view RELATION_NAME = "tx";
348 static constexpr size_t LOOKUP_TUPLE_SIZE = 4;
349 static constexpr Column SRC_SELECTOR = Column::tx_is_collect_fee;
350 static constexpr Column DST_SELECTOR = Column::public_data_check_sel;
351 static constexpr Column COUNTS = Column::lookup_tx_balance_read_counts;
352 static constexpr Column INVERSES = Column::lookup_tx_balance_read_inv;
353 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE> SRC_COLUMNS = {
354 ColumnAndShifts::tx_fee_payer_balance,
355 ColumnAndShifts::tx_fee_juice_contract_address,
356 ColumnAndShifts::tx_fee_juice_balance_slot,
357 ColumnAndShifts::tx_prev_public_data_tree_root
358 };
359 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE> DST_COLUMNS = {
360 ColumnAndShifts::public_data_check_value,
361 ColumnAndShifts::public_data_check_address,
362 ColumnAndShifts::public_data_check_slot,
363 ColumnAndShifts::public_data_check_root
364 };
365};
366
368template <typename FF_>
370
372
374 static constexpr std::string_view NAME = "LOOKUP_TX_BALANCE_VALIDATION";
375 static constexpr std::string_view RELATION_NAME = "tx";
376 static constexpr size_t LOOKUP_TUPLE_SIZE = 3;
377 static constexpr Column SRC_SELECTOR = Column::tx_is_collect_fee;
378 static constexpr Column DST_SELECTOR = Column::ff_gt_sel_gt;
379 static constexpr Column COUNTS = Column::lookup_tx_balance_validation_counts;
380 static constexpr Column INVERSES = Column::lookup_tx_balance_validation_inv;
381 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE> SRC_COLUMNS = {
382 ColumnAndShifts::tx_fee, ColumnAndShifts::tx_fee_payer_balance, ColumnAndShifts::precomputed_zero
383 };
384 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE> DST_COLUMNS = { ColumnAndShifts::ff_gt_a,
385 ColumnAndShifts::ff_gt_b,
386 ColumnAndShifts::ff_gt_result };
387};
388
390template <typename FF_>
392
394
396 static constexpr std::string_view NAME = "LOOKUP_TX_WRITE_FEE_PUBLIC_INPUTS";
397 static constexpr std::string_view RELATION_NAME = "tx";
398 static constexpr size_t LOOKUP_TUPLE_SIZE = 2;
399 static constexpr Column SRC_SELECTOR = Column::tx_is_collect_fee;
400 static constexpr Column DST_SELECTOR = Column::public_inputs_sel;
401 static constexpr Column COUNTS = Column::lookup_tx_write_fee_public_inputs_counts;
402 static constexpr Column INVERSES = Column::lookup_tx_write_fee_public_inputs_inv;
403 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE> SRC_COLUMNS = { ColumnAndShifts::tx_write_pi_offset,
404 ColumnAndShifts::tx_fee };
405 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE> DST_COLUMNS = {
406 ColumnAndShifts::precomputed_clk, ColumnAndShifts::public_inputs_cols_0_
407 };
408};
409
411template <typename FF_>
414
415} // namespace bb::avm2
This file contains the template for the generic lookup that can be specialized to enforce various loo...
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > DST_COLUMNS
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > SRC_COLUMNS
static constexpr std::string_view RELATION_NAME
static constexpr std::string_view NAME
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > SRC_COLUMNS
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > DST_COLUMNS
static constexpr std::string_view RELATION_NAME
static constexpr std::string_view NAME
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > SRC_COLUMNS
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > DST_COLUMNS
static constexpr std::string_view RELATION_NAME
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > SRC_COLUMNS
static constexpr std::string_view NAME
static constexpr std::string_view RELATION_NAME
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > DST_COLUMNS
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > DST_COLUMNS
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > SRC_COLUMNS
static constexpr std::string_view NAME
static constexpr std::string_view RELATION_NAME
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > SRC_COLUMNS
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > DST_COLUMNS
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > DST_COLUMNS
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > SRC_COLUMNS
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > DST_COLUMNS
static constexpr std::string_view RELATION_NAME
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > SRC_COLUMNS
static constexpr std::string_view NAME
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > SRC_COLUMNS
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > DST_COLUMNS
static constexpr std::string_view RELATION_NAME
static constexpr std::string_view NAME
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > SRC_COLUMNS
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > DST_COLUMNS
static constexpr std::string_view RELATION_NAME
static constexpr std::string_view NAME
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > SRC_COLUMNS
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > DST_COLUMNS
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > SRC_COLUMNS
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > DST_COLUMNS
static constexpr std::string_view RELATION_NAME
static constexpr std::string_view RELATION_NAME
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > SRC_COLUMNS
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > DST_COLUMNS
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > SRC_COLUMNS
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > DST_COLUMNS
static constexpr std::string_view NAME
static constexpr std::string_view RELATION_NAME