1 | /* |
2 | * Legal Notice |
3 | * |
4 | * This document and associated source code (the "Work") is a part of a |
5 | * benchmark specification maintained by the TPC. |
6 | * |
7 | * The TPC reserves all right, title, and interest to the Work as provided |
8 | * under U.S. and international laws, including without limitation all patent |
9 | * and trademark rights therein. |
10 | * |
11 | * No Warranty |
12 | * |
13 | * 1.1 TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, THE INFORMATION |
14 | * CONTAINED HEREIN IS PROVIDED "AS IS" AND WITH ALL FAULTS, AND THE |
15 | * AUTHORS AND DEVELOPERS OF THE WORK HEREBY DISCLAIM ALL OTHER |
16 | * WARRANTIES AND CONDITIONS, EITHER EXPRESS, IMPLIED OR STATUTORY, |
17 | * INCLUDING, BUT NOT LIMITED TO, ANY (IF ANY) IMPLIED WARRANTIES, |
18 | * DUTIES OR CONDITIONS OF MERCHANTABILITY, OF FITNESS FOR A PARTICULAR |
19 | * PURPOSE, OF ACCURACY OR COMPLETENESS OF RESPONSES, OF RESULTS, OF |
20 | * WORKMANLIKE EFFORT, OF LACK OF VIRUSES, AND OF LACK OF NEGLIGENCE. |
21 | * ALSO, THERE IS NO WARRANTY OR CONDITION OF TITLE, QUIET ENJOYMENT, |
22 | * QUIET POSSESSION, CORRESPONDENCE TO DESCRIPTION OR NON-INFRINGEMENT |
23 | * WITH REGARD TO THE WORK. |
24 | * 1.2 IN NO EVENT WILL ANY AUTHOR OR DEVELOPER OF THE WORK BE LIABLE TO |
25 | * ANY OTHER PARTY FOR ANY DAMAGES, INCLUDING BUT NOT LIMITED TO THE |
26 | * COST OF PROCURING SUBSTITUTE GOODS OR SERVICES, LOST PROFITS, LOSS |
27 | * OF USE, LOSS OF DATA, OR ANY INCIDENTAL, CONSEQUENTIAL, DIRECT, |
28 | * INDIRECT, OR SPECIAL DAMAGES WHETHER UNDER CONTRACT, TORT, WARRANTY, |
29 | * OR OTHERWISE, ARISING IN ANY WAY OUT OF THIS OR ANY OTHER AGREEMENT |
30 | * RELATING TO THE WORK, WHETHER OR NOT SUCH AUTHOR OR DEVELOPER HAD |
31 | * ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. |
32 | * |
33 | * Contributors |
34 | * - Sergey Vasilevskiy, Doug Johnson, Larry Loen |
35 | */ |
36 | |
37 | /****************************************************************************** |
38 | * Description: Simple behaviorless structs representing a row in a table. |
39 | * These are what is emitted by EGen to database loaders. |
40 | ******************************************************************************/ |
41 | |
42 | #ifndef TABLE_ROWS_H |
43 | #define TABLE_ROWS_H |
44 | |
45 | #include "utilities/EGenStandardTypes.h" |
46 | #include "utilities/TableConsts.h" |
47 | #include "utilities/DateTime.h" |
48 | |
49 | using namespace std; |
50 | |
51 | namespace TPCE { |
52 | |
53 | // ACCOUNT_PERMISSION table |
54 | typedef struct ACCOUNT_PERMISSION_ROW { |
55 | TIdent AP_CA_ID; |
56 | char AP_ACL[cACL_len + 1]; // binary column in the table |
57 | char AP_TAX_ID[cTAX_ID_len + 1]; |
58 | char AP_L_NAME[cL_NAME_len + 1]; |
59 | char AP_F_NAME[cF_NAME_len + 1]; |
60 | } * PACCOUNT_PERMISSION_ROW; |
61 | |
62 | // ADDRESS table |
63 | typedef struct ADDRESS_ROW { |
64 | TIdent AD_ID; |
65 | char AD_LINE1[cAD_LINE_len + 1]; |
66 | char AD_LINE2[cAD_LINE_len + 1]; |
67 | char AD_ZC_CODE[cAD_ZIP_len + 1]; |
68 | char AD_CTRY[cAD_CTRY_len + 1]; |
69 | } * PADDRESS_ROW; |
70 | |
71 | // BROKER table |
72 | typedef struct BROKER_ROW { |
73 | TIdent B_ID; |
74 | char B_ST_ID[cST_ID_len + 1]; |
75 | char B_NAME[cB_NAME_len + 1]; |
76 | int B_NUM_TRADES; |
77 | double B_COMM_TOTAL; |
78 | } * PBROKER_ROW; |
79 | |
80 | // CASH_TRANSACTION table |
81 | typedef struct CASH_TRANSACTION_ROW { |
82 | TTrade CT_T_ID; |
83 | CDateTime CT_DTS; |
84 | double CT_AMT; |
85 | char CT_NAME[cCT_NAME_len + 1]; |
86 | } * PCASH_TRANSACTION_ROW; |
87 | |
88 | // CHARGE table |
89 | typedef struct CHARGE_ROW { |
90 | char CH_TT_ID[cTT_ID_len + 1]; |
91 | int CH_C_TIER; |
92 | double CH_CHRG; |
93 | } * PCHARGE_ROW; |
94 | |
95 | // COMMISSION_RATE table |
96 | typedef struct COMMISSION_RATE_ROW { |
97 | int CR_C_TIER; |
98 | char CR_TT_ID[cTT_ID_len + 1]; |
99 | char CR_EX_ID[cEX_ID_len + 1]; |
100 | int CR_FROM_QTY; |
101 | int CR_TO_QTY; |
102 | double CR_RATE; |
103 | } * PCOMMISSION_RATE_ROW; |
104 | |
105 | // COMPANY table |
106 | typedef struct COMPANY_ROW { |
107 | TIdent CO_ID; |
108 | char CO_ST_ID[cST_ID_len + 1]; |
109 | char CO_NAME[cCO_NAME_len + 1]; |
110 | char CO_IN_ID[cIN_ID_len + 1]; |
111 | char CO_SP_RATE[cSP_RATE_len + 1]; |
112 | char CO_CEO[cCEO_NAME_len + 1]; |
113 | TIdent CO_AD_ID; |
114 | char CO_DESC[cCO_DESC_len + 1]; |
115 | CDateTime CO_OPEN_DATE; |
116 | } * PCOMPANY_ROW; |
117 | |
118 | // COMPANY_COMPETITOR table |
119 | typedef struct COMPANY_COMPETITOR_ROW { |
120 | TIdent CP_CO_ID; |
121 | TIdent CP_COMP_CO_ID; |
122 | char CP_IN_ID[cIN_ID_len + 1]; |
123 | } * PCOMPANY_COMPETITOR_ROW; |
124 | |
125 | // CUSTOMER table |
126 | typedef struct CUSTOMER_ROW { |
127 | TIdent C_ID; |
128 | char C_TAX_ID[cTAX_ID_len + 1]; |
129 | char C_ST_ID[cST_ID_len + 1]; |
130 | char C_L_NAME[cL_NAME_len + 1]; |
131 | char C_F_NAME[cF_NAME_len + 1]; |
132 | char C_M_NAME[cM_NAME_len + 1]; |
133 | char C_GNDR; |
134 | char C_TIER; |
135 | CDateTime C_DOB; |
136 | TIdent C_AD_ID; |
137 | char C_CTRY_1[cCTRY_len + 1]; |
138 | char C_AREA_1[cAREA_len + 1]; |
139 | char C_LOCAL_1[cLOCAL_len + 1]; |
140 | char C_EXT_1[cEXT_len + 1]; |
141 | char C_CTRY_2[cCTRY_len + 1]; |
142 | char C_AREA_2[cAREA_len + 1]; |
143 | char C_LOCAL_2[cLOCAL_len + 1]; |
144 | char C_EXT_2[cEXT_len + 1]; |
145 | char C_CTRY_3[cCTRY_len + 1]; |
146 | char C_AREA_3[cAREA_len + 1]; |
147 | char C_LOCAL_3[cLOCAL_len + 1]; |
148 | char C_EXT_3[cEXT_len + 1]; |
149 | char C_EMAIL_1[cEMAIL_len + 1]; |
150 | char C_EMAIL_2[cEMAIL_len + 1]; |
151 | |
152 | CUSTOMER_ROW() : C_ID(0){}; |
153 | |
154 | } * PCUSTOMER_ROW; |
155 | |
156 | // CUSTOMER_ACCOUNT table |
157 | typedef struct CUSTOMER_ACCOUNT_ROW { |
158 | TIdent CA_ID; |
159 | TIdent CA_B_ID; |
160 | TIdent CA_C_ID; |
161 | char CA_NAME[cCA_NAME_len + 1]; |
162 | char CA_TAX_ST; |
163 | double CA_BAL; |
164 | } * PCUSTOMER_ACCOUNT_ROW; |
165 | |
166 | // CUSTOMER_TAXRATE table |
167 | typedef struct CUSTOMER_TAXRATE_ROW { |
168 | char CX_TX_ID[cTX_ID_len + 1]; |
169 | TIdent CX_C_ID; |
170 | } * PCUSTOMER_TAXRATE_ROW; |
171 | |
172 | // DAILY_MARKET table |
173 | typedef struct DAILY_MARKET_ROW { |
174 | CDateTime DM_DATE; |
175 | char DM_S_SYMB[cSYMBOL_len + 1]; |
176 | double DM_CLOSE; |
177 | double DM_HIGH; |
178 | double DM_LOW; |
179 | INT64 DM_VOL; |
180 | } * PDAILY_MARKET_ROW; |
181 | |
182 | // EXCHANGE table |
183 | typedef struct EXCHANGE_ROW { |
184 | char EX_ID[cEX_ID_len + 1]; |
185 | char EX_NAME[cEX_NAME_len + 1]; |
186 | int EX_NUM_SYMB; |
187 | int EX_OPEN; |
188 | int EX_CLOSE; |
189 | char EX_DESC[cEX_DESC_len + 1]; |
190 | TIdent EX_AD_ID; |
191 | } * PEXCHANGE_ROW; |
192 | |
193 | // FINANCIAL table |
194 | typedef struct FINANCIAL_ROW { |
195 | TIdent FI_CO_ID; |
196 | int FI_YEAR; |
197 | int FI_QTR; |
198 | CDateTime FI_QTR_START_DATE; |
199 | double FI_REVENUE; |
200 | double FI_NET_EARN; |
201 | double FI_BASIC_EPS; |
202 | double FI_DILUT_EPS; |
203 | double FI_MARGIN; |
204 | double FI_INVENTORY; |
205 | double FI_ASSETS; |
206 | double FI_LIABILITY; |
207 | INT64 FI_OUT_BASIC; |
208 | INT64 FI_OUT_DILUT; |
209 | } * PFINANCIAL_ROW; |
210 | |
211 | // HOLDING table |
212 | typedef struct HOLDING_ROW { |
213 | TTrade H_T_ID; |
214 | TIdent H_CA_ID; |
215 | char H_S_SYMB[cSYMBOL_len + 1]; |
216 | CDateTime H_DTS; |
217 | double H_PRICE; |
218 | int H_QTY; |
219 | } * PHOLDING_ROW; |
220 | |
221 | // HOLDING_HISTORY table |
222 | typedef struct HOLDING_HISTORY_ROW { |
223 | TTrade HH_H_T_ID; |
224 | TTrade HH_T_ID; |
225 | int HH_BEFORE_QTY; |
226 | int HH_AFTER_QTY; |
227 | } * PHOLDING_HISTORY_ROW; |
228 | |
229 | // HOLDING_SUMMARY table |
230 | typedef struct HOLDING_SUMMARY_ROW { |
231 | TIdent HS_CA_ID; |
232 | char HS_S_SYMB[cSYMBOL_len + 1]; |
233 | int HS_QTY; |
234 | } * PHOLDING_SUMMARY_ROW; |
235 | |
236 | // INDUSTRY table |
237 | typedef struct INDUSTRY_ROW { |
238 | char IN_ID[cIN_ID_len + 1]; |
239 | char IN_NAME[cIN_NAME_len + 1]; |
240 | char IN_SC_ID[cSC_ID_len + 1]; |
241 | } * PINDUSTRY_ROW; |
242 | |
243 | // LAST_TRADE table |
244 | typedef struct LAST_TRADE_ROW { |
245 | char LT_S_SYMB[cSYMBOL_len + 1]; |
246 | CDateTime LT_DTS; |
247 | double LT_PRICE; |
248 | double LT_OPEN_PRICE; |
249 | INT64 LT_VOL; |
250 | } * PLAST_TRADE_ROW; |
251 | |
252 | // NEWS_ITEM table |
253 | typedef struct NEWS_ITEM_ROW { |
254 | TIdent NI_ID; |
255 | char NI_HEADLINE[cNI_HEADLINE_len + 1]; |
256 | char NI_SUMMARY[cNI_SUMMARY_len + 1]; |
257 | char NI_ITEM[cNI_ITEM_len + 1]; |
258 | CDateTime NI_DTS; |
259 | char NI_SOURCE[cNI_SOURCE_len + 1]; |
260 | char NI_AUTHOR[cNI_AUTHOR_len + 1]; |
261 | } * PNEWS_ITEM_ROW; |
262 | |
263 | // NEWS_XREF table |
264 | typedef struct NEWS_XREF_ROW { |
265 | TIdent NX_NI_ID; |
266 | TIdent NX_CO_ID; |
267 | } * PNEWS_XREF_ROW; |
268 | |
269 | // SECTOR table |
270 | typedef struct SECTOR_ROW { |
271 | char SC_ID[cSC_ID_len + 1]; |
272 | char SC_NAME[cSC_NAME_len + 1]; |
273 | } * PSECTOR_ROW; |
274 | |
275 | // SECURITY table |
276 | typedef struct SECURITY_ROW { |
277 | char S_SYMB[cSYMBOL_len + 1]; |
278 | char S_ISSUE[cS_ISSUE_len + 1]; |
279 | char S_ST_ID[cST_ID_len + 1]; |
280 | char S_NAME[cS_NAME_len + 1]; |
281 | char S_EX_ID[cEX_ID_len + 1]; |
282 | TIdent S_CO_ID; |
283 | INT64 S_NUM_OUT; |
284 | CDateTime S_START_DATE; |
285 | CDateTime S_EXCH_DATE; |
286 | double S_PE; |
287 | float S_52WK_HIGH; |
288 | CDateTime S_52WK_HIGH_DATE; |
289 | float S_52WK_LOW; |
290 | CDateTime S_52WK_LOW_DATE; |
291 | double S_DIVIDEND; |
292 | double S_YIELD; |
293 | } * PSECURITY_ROW; |
294 | |
295 | // SETTLEMENT table |
296 | typedef struct SETTLEMENT_ROW { |
297 | TTrade SE_T_ID; |
298 | char SE_CASH_TYPE[cSE_CASH_TYPE_len + 1]; |
299 | CDateTime SE_CASH_DUE_DATE; |
300 | double SE_AMT; |
301 | } * PSETTLEMENT_ROW; |
302 | |
303 | // STATUS_TYPE table |
304 | typedef struct STATUS_TYPE_ROW { |
305 | char ST_ID[cST_ID_len + 1]; |
306 | char ST_NAME[cST_NAME_len + 1]; |
307 | } * PSTATUS_TYPE_ROW; |
308 | |
309 | // TAXRATE table |
310 | typedef struct TAX_RATE_ROW { |
311 | char TX_ID[cTX_ID_len + 1]; |
312 | char TX_NAME[cTX_NAME_len + 1]; |
313 | double TX_RATE; |
314 | } * PTAX_RATE_ROW; |
315 | |
316 | // TRADE table |
317 | typedef struct TRADE_ROW { |
318 | TTrade T_ID; |
319 | CDateTime T_DTS; |
320 | char T_ST_ID[cST_ID_len + 1]; |
321 | char T_TT_ID[cTT_ID_len + 1]; |
322 | bool T_IS_CASH; |
323 | char T_S_SYMB[cSYMBOL_len + 1]; |
324 | int T_QTY; |
325 | double T_BID_PRICE; |
326 | TIdent T_CA_ID; |
327 | char T_EXEC_NAME[cEXEC_NAME_len + 1]; |
328 | double T_TRADE_PRICE; |
329 | double T_CHRG; |
330 | double T_COMM; |
331 | double T_TAX; |
332 | bool T_LIFO; |
333 | } * PTRADE_ROW; |
334 | |
335 | // TRADE_HISTORY table |
336 | typedef struct TRADE_HISTORY_ROW { |
337 | TTrade TH_T_ID; |
338 | CDateTime TH_DTS; |
339 | char TH_ST_ID[cST_ID_len + 1]; |
340 | } * PTRADE_HISTORY_ROW; |
341 | |
342 | // TRADE_REQUEST table |
343 | typedef struct TRADE_REQUEST_ROW { |
344 | TTrade TR_T_ID; |
345 | char TR_TT_ID[cTT_ID_len + 1]; |
346 | char TR_S_SYMB[cSYMBOL_len + 1]; |
347 | int TR_QTY; |
348 | double TR_BID_PRICE; |
349 | TIdent TR_B_ID; |
350 | } * PTRADE_REQUEST_ROW; |
351 | |
352 | // TRADE_TYPE table |
353 | typedef struct TRADE_TYPE_ROW { |
354 | char TT_ID[cTT_ID_len + 1]; |
355 | char TT_NAME[cTT_NAME_len + 1]; |
356 | bool TT_IS_SELL; |
357 | bool TT_IS_MRKT; |
358 | } * PTRADE_TYPE_ROW; |
359 | |
360 | // WATCH_ITEM table |
361 | typedef struct WATCH_ITEM_ROW { |
362 | TIdent WI_WL_ID; |
363 | char WI_S_SYMB[cSYMBOL_len + 1]; |
364 | } * PWATCH_ITEM_ROW; |
365 | |
366 | // WATCH_LIST table |
367 | typedef struct WATCH_LIST_ROW { |
368 | TIdent WL_ID; |
369 | TIdent WL_C_ID; |
370 | } * PWATCH_LIST_ROW; |
371 | |
372 | // ZIP_CODE table |
373 | typedef struct ZIP_CODE_ROW { |
374 | char ZC_CODE[cZC_CODE_len + 1]; |
375 | char ZC_TOWN[cZC_TOWN_len + 1]; |
376 | char ZC_DIV[cZC_DIV_len + 1]; |
377 | } * PZIP_CODE_ROW; |
378 | |
379 | } // namespace TPCE |
380 | |
381 | #endif // #ifndef TABLE_ROWS_H |
382 | |