1 #ifndef _NDB_BENCH_TPCC_H_
2 #define _NDB_BENCH_TPCC_H_
4 #include "../record/encoder.h"
5 #include "../record/inline_str.h"
8 #define CUSTOMER_KEY_FIELDS(x, y) \
12 #define CUSTOMER_VALUE_FIELDS(x, y) \
14 y(inline_str_fixed<2>,c_credit) \
15 y(inline_str_8<16>,c_last) \
16 y(inline_str_8<16>,c_first) \
17 y(float,c_credit_lim) \
19 y(float,c_ytd_payment) \
20 y(int32_t,c_payment_cnt) \
21 y(int32_t,c_delivery_cnt) \
22 y(inline_str_8<20>,c_street_1) \
23 y(inline_str_8<20>,c_street_2) \
24 y(inline_str_8<20>,c_city) \
25 y(inline_str_fixed<2>,c_state) \
26 y(inline_str_fixed<9>,c_zip) \
27 y(inline_str_fixed<16>,c_phone) \
29 y(inline_str_fixed<2>,c_middle) \
30 y(inline_str_16<500>,c_data)
31 DO_STRUCT(customer, CUSTOMER_KEY_FIELDS, CUSTOMER_VALUE_FIELDS)
33 #define CUSTOMER_NAME_IDX_KEY_FIELDS(x, y) \
36 y(inline_str_fixed<16>,c_last) \
37 y(inline_str_fixed<16>,c_first)
38 #define CUSTOMER_NAME_IDX_VALUE_FIELDS(x, y) \
40 DO_STRUCT(customer_name_idx, CUSTOMER_NAME_IDX_KEY_FIELDS, CUSTOMER_NAME_IDX_VALUE_FIELDS)
42 #define DISTRICT_KEY_FIELDS(x, y) \
45 #define DISTRICT_VALUE_FIELDS(x, y) \
48 y(int32_t,d_next_o_id) \
49 y(inline_str_8<10>,d_name) \
50 y(inline_str_8<20>,d_street_1) \
51 y(inline_str_8<20>,d_street_2) \
52 y(inline_str_8<20>,d_city) \
53 y(inline_str_fixed<2>,d_state) \
54 y(inline_str_fixed<9>,d_zip)
55 DO_STRUCT(district, DISTRICT_KEY_FIELDS, DISTRICT_VALUE_FIELDS)
57 #define HISTORY_KEY_FIELDS(x, y) \
64 #define HISTORY_VALUE_FIELDS(x, y) \
66 y(inline_str_8<24>,h_data)
67 DO_STRUCT(history, HISTORY_KEY_FIELDS, HISTORY_VALUE_FIELDS)
69 #define ITEM_KEY_FIELDS(x, y) \
71 #define ITEM_VALUE_FIELDS(x, y) \
72 x(inline_str_8<24>,i_name) \
74 y(inline_str_8<50>,i_data) \
76 DO_STRUCT(item, ITEM_KEY_FIELDS, ITEM_VALUE_FIELDS)
78 #define NEW_ORDER_KEY_FIELDS(x, y) \
82 // need dummy b/c our btree cannot have empty values.
83 // we also size value so that it can fit a key
84 #define NEW_ORDER_VALUE_FIELDS(x, y) \
85 x(inline_str_fixed<12>,no_dummy)
86 DO_STRUCT(new_order, NEW_ORDER_KEY_FIELDS, NEW_ORDER_VALUE_FIELDS)
88 #define OORDER_KEY_FIELDS(x, y) \
92 #define OORDER_VALUE_FIELDS(x, y) \
94 y(int32_t,o_carrier_id) \
98 DO_STRUCT(oorder, OORDER_KEY_FIELDS, OORDER_VALUE_FIELDS)
100 #define OORDER_C_ID_IDX_KEY_FIELDS(x, y) \
105 #define OORDER_C_ID_IDX_VALUE_FIELDS(x, y) \
107 DO_STRUCT(oorder_c_id_idx, OORDER_C_ID_IDX_KEY_FIELDS, OORDER_C_ID_IDX_VALUE_FIELDS)
109 #define ORDER_LINE_KEY_FIELDS(x, y) \
114 #define ORDER_LINE_VALUE_FIELDS(x, y) \
116 y(uint32_t,ol_delivery_d) \
118 y(int32_t,ol_supply_w_id) \
119 y(int8_t,ol_quantity)
120 DO_STRUCT(order_line, ORDER_LINE_KEY_FIELDS, ORDER_LINE_VALUE_FIELDS)
122 #define STOCK_KEY_FIELDS(x, y) \
125 #define STOCK_VALUE_FIELDS(x, y) \
126 x(int16_t,s_quantity) \
128 y(int32_t,s_order_cnt) \
129 y(int32_t,s_remote_cnt)
130 DO_STRUCT(stock, STOCK_KEY_FIELDS, STOCK_VALUE_FIELDS)
132 #define STOCK_DATA_KEY_FIELDS(x, y) \
135 #define STOCK_DATA_VALUE_FIELDS(x, y) \
136 x(inline_str_8<50>,s_data) \
137 y(inline_str_fixed<24>,s_dist_01) \
138 y(inline_str_fixed<24>,s_dist_02) \
139 y(inline_str_fixed<24>,s_dist_03) \
140 y(inline_str_fixed<24>,s_dist_04) \
141 y(inline_str_fixed<24>,s_dist_05) \
142 y(inline_str_fixed<24>,s_dist_06) \
143 y(inline_str_fixed<24>,s_dist_07) \
144 y(inline_str_fixed<24>,s_dist_08) \
145 y(inline_str_fixed<24>,s_dist_09) \
146 y(inline_str_fixed<24>,s_dist_10)
147 DO_STRUCT(stock_data, STOCK_DATA_KEY_FIELDS, STOCK_DATA_VALUE_FIELDS)
149 #define WAREHOUSE_KEY_FIELDS(x, y) \
151 #define WAREHOUSE_VALUE_FIELDS(x, y) \
154 y(inline_str_8<10>,w_name) \
155 y(inline_str_8<20>,w_street_1) \
156 y(inline_str_8<20>,w_street_2) \
157 y(inline_str_8<20>,w_city) \
158 y(inline_str_fixed<2>,w_state) \
159 y(inline_str_fixed<9>,w_zip)
160 DO_STRUCT(warehouse, WAREHOUSE_KEY_FIELDS, WAREHOUSE_VALUE_FIELDS)