81
81
char my_w_name[20];
82
82
char my_d_name[20];
84
dbt2_init_values(vals, nvals);
84
dbt2_init_values(vals, nvals);
86
snprintf(c_last, C_LAST_LEN+1, "%s", data->pay_c_last);
86
snprintf(c_last, C_LAST_LEN+1, "%s", data->pay_c_last);
88
88
#ifdef DEBUG_INPUT_DATA
89
LOG_ERROR_MESSAGE("PAYMENT_INPUT: w_id: %d\n d_id: %d\n c_id: %d\n c_w_id: %d\n c_d_id: %d\n",w_id,d_id,c_id,c_w_id,c_d_id);
89
LOG_ERROR_MESSAGE("PAYMENT_INPUT: w_id: %d\n d_id: %d\n c_id: %d\n c_w_id: %d\n c_d_id: %d\n",w_id,d_id,c_id,c_w_id,c_d_id);
91
91
sprintf(query, PAYMENT_1, w_id);
94
LOG_ERROR_MESSAGE("PAYMENT_1 query: %s\n",query);
94
LOG_ERROR_MESSAGE("PAYMENT_1 query: %s\n",query);
96
if (dbt2_sql_execute(dbc, query, &result, "PAYMENT_1") && result.result_set)
98
dbt2_sql_fetchrow(dbc, &result);
100
vals[W_NAME]= dbt2_sql_getvalue(dbc, &result, 0);
101
vals[W_STREET_1]= dbt2_sql_getvalue(dbc, &result, 1);
102
vals[W_STREET_2]= dbt2_sql_getvalue(dbc, &result, 2);
103
vals[W_CITY]= dbt2_sql_getvalue(dbc, &result, 3);
104
vals[W_STATE]= dbt2_sql_getvalue(dbc, &result, 4);
105
vals[W_ZIP]= dbt2_sql_getvalue(dbc, &result, 5);
106
//W_NAME W_STREET_1 W_STREET_2
107
//W_CITY W_STATE W_ZIP
109
dbt2_sql_close_cursor(dbc, &result);
96
if (dbt2_sql_execute(dbc, query, &result, "PAYMENT_1") && result.result_set)
98
dbt2_sql_fetchrow(dbc, &result);
100
vals[W_NAME]= dbt2_sql_getvalue(dbc, &result, 0);
101
vals[W_STREET_1]= dbt2_sql_getvalue(dbc, &result, 1);
102
vals[W_STREET_2]= dbt2_sql_getvalue(dbc, &result, 2);
103
vals[W_CITY]= dbt2_sql_getvalue(dbc, &result, 3);
104
vals[W_STATE]= dbt2_sql_getvalue(dbc, &result, 4);
105
vals[W_ZIP]= dbt2_sql_getvalue(dbc, &result, 5);
106
//W_NAME W_STREET_1 W_STREET_2
107
//W_CITY W_STATE W_ZIP
109
dbt2_sql_close_cursor(dbc, &result);
116
116
sprintf(query, PAYMENT_2, h_amount, w_id);
118
118
#ifndef NO_CONFLICT_TEST
119
/* This UPDATE locks an entire warehouse, and would normally
120
* be done at the end of the transaction to reduce conflicts.
121
* But for the low conflict test we leave it out altogether.
119
/* This UPDATE locks an entire warehouse, and would normally
120
* be done at the end of the transaction to reduce conflicts.
121
* But for the low conflict test we leave it out altogether.
123
123
#ifdef DEBUG_QUERY
124
LOG_ERROR_MESSAGE("PAYMENT_2 query: %s\n",query);
124
LOG_ERROR_MESSAGE("PAYMENT_2 query: %s\n",query);
127
if (!dbt2_sql_execute(dbc, query, &result, "PAYMENT_2"))
127
if (!dbt2_sql_execute(dbc, query, &result, "PAYMENT_2"))
133
133
sprintf(query, PAYMENT_3, d_id, w_id);
135
135
#ifdef DEBUG_QUERY
136
LOG_ERROR_MESSAGE("PAYMENT_3 query: %s\n",query);
136
LOG_ERROR_MESSAGE("PAYMENT_3 query: %s\n",query);
139
if (dbt2_sql_execute(dbc, query, &result, "PAYMENT_3") && result.result_set)
141
dbt2_sql_fetchrow(dbc, &result);
139
if (dbt2_sql_execute(dbc, query, &result, "PAYMENT_3") && result.result_set)
141
dbt2_sql_fetchrow(dbc, &result);
143
vals[D_NAME]= dbt2_sql_getvalue(dbc, &result, 0);
144
vals[D_STREET_1]= dbt2_sql_getvalue(dbc, &result, 1);
145
vals[D_STREET_2]= dbt2_sql_getvalue(dbc, &result, 2);
146
vals[D_CITY]= dbt2_sql_getvalue(dbc, &result, 3);
147
vals[D_STATE]= dbt2_sql_getvalue(dbc, &result, 4);
148
vals[D_ZIP]= dbt2_sql_getvalue(dbc, &result, 5);
149
//D_NAME D_STREET_1 D_STREET_2
150
//D_CITY D_STATE D_ZIP
152
dbt2_sql_close_cursor(dbc, &result);
143
vals[D_NAME]= dbt2_sql_getvalue(dbc, &result, 0);
144
vals[D_STREET_1]= dbt2_sql_getvalue(dbc, &result, 1);
145
vals[D_STREET_2]= dbt2_sql_getvalue(dbc, &result, 2);
146
vals[D_CITY]= dbt2_sql_getvalue(dbc, &result, 3);
147
vals[D_STATE]= dbt2_sql_getvalue(dbc, &result, 4);
148
vals[D_ZIP]= dbt2_sql_getvalue(dbc, &result, 5);
149
//D_NAME D_STREET_1 D_STREET_2
150
//D_CITY D_STATE D_ZIP
152
dbt2_sql_close_cursor(dbc, &result);
159
159
sprintf(query, PAYMENT_4, h_amount, d_id, w_id);
161
161
#ifdef DEBUG_QUERY
162
LOG_ERROR_MESSAGE("PAYMENT_4 query: %s\n", query);
162
LOG_ERROR_MESSAGE("PAYMENT_4 query: %s\n", query);
165
if (!dbt2_sql_execute(dbc, query, &result, "PAYMENT_4"))
167
LOG_ERROR_MESSAGE("PAYMENT_4 query: %s", query);
165
if (!dbt2_sql_execute(dbc, query, &result, "PAYMENT_4"))
167
LOG_ERROR_MESSAGE("PAYMENT_4 query: %s", query);
173
sprintf(query, PAYMENT_5, w_id, d_id, c_last);
173
sprintf(query, PAYMENT_5, w_id, d_id, c_last);
175
175
#ifdef DEBUG_QUERY
176
LOG_ERROR_MESSAGE("PAYMENT_5 query: %s\n", query);
176
LOG_ERROR_MESSAGE("PAYMENT_5 query: %s\n", query);
179
if (dbt2_sql_execute(dbc, query, &result, "PAYMENT_5") && result.result_set)
181
dbt2_sql_fetchrow(dbc, &result);
182
vals[TMP_C_ID]= dbt2_sql_getvalue(dbc, &result, 0);
183
dbt2_sql_close_cursor(dbc, &result);
179
if (dbt2_sql_execute(dbc, query, &result, "PAYMENT_5") && result.result_set)
181
dbt2_sql_fetchrow(dbc, &result);
182
vals[TMP_C_ID]= dbt2_sql_getvalue(dbc, &result, 0);
183
dbt2_sql_close_cursor(dbc, &result);
187
LOG_ERROR_MESSAGE("ERROR: TMP_C_ID=NULL for query PAYMENT_5:\n%s\n", query);
190
my_c_id = atoi(vals[TMP_C_ID]);
187
LOG_ERROR_MESSAGE("ERROR: TMP_C_ID=NULL for query PAYMENT_5:\n%s\n", query);
190
my_c_id = atoi(vals[TMP_C_ID]);
203
203
sprintf(query, PAYMENT_6, c_w_id, c_d_id, my_c_id);
205
205
#ifdef DEBUG_QUERY
206
LOG_ERROR_MESSAGE("PAYMENT_6 query: %s\n",query);
206
LOG_ERROR_MESSAGE("PAYMENT_6 query: %s\n",query);
208
if (dbt2_sql_execute(dbc, query, &result, "PAYMENT_6") && result.result_set)
210
dbt2_sql_fetchrow(dbc, &result);
211
//C_FIRST C_MIDDLE MY_C_LAST
212
//C_STREET_1 C_STREET_2 C_CITY
213
//C_STATE C_ZIP C_PHONE C_SINCE
214
//C_CREDIT C_CREDIT_LIM C_DISCOUNT
215
//C_BALANCE C_DATA C_YTD_PAYMENT
216
//C_BALANCE and C_YTD_PAYMENT can be NULL
217
vals[C_FIRST]= dbt2_sql_getvalue(dbc, &result, 0);
218
vals[C_MIDDLE]= dbt2_sql_getvalue(dbc, &result, 1);
219
vals[MY_C_LAST]= dbt2_sql_getvalue(dbc, &result, 2);
220
vals[C_STREET_1]= dbt2_sql_getvalue(dbc, &result, 3);
221
vals[C_STREET_2]= dbt2_sql_getvalue(dbc, &result, 4);
222
vals[C_CITY]= dbt2_sql_getvalue(dbc, &result, 5);
223
vals[C_STATE]= dbt2_sql_getvalue(dbc, &result, 6);
224
vals[C_ZIP]= dbt2_sql_getvalue(dbc, &result, 7);
225
vals[C_PHONE]= dbt2_sql_getvalue(dbc, &result, 8);
226
vals[C_SINCE]= dbt2_sql_getvalue(dbc, &result, 9);
227
vals[C_CREDIT]= dbt2_sql_getvalue(dbc, &result, 10);
228
vals[C_CREDIT_LIM]= dbt2_sql_getvalue(dbc, &result, 11);
229
vals[C_DISCOUNT]= dbt2_sql_getvalue(dbc, &result, 12);
230
vals[C_BALANCE]= dbt2_sql_getvalue(dbc, &result, 13);
231
vals[C_DATA]= dbt2_sql_getvalue(dbc, &result, 14);
232
vals[C_YTD_PAYMENT]= dbt2_sql_getvalue(dbc, &result, 15);
234
dbt2_sql_close_cursor(dbc, &result);
208
if (dbt2_sql_execute(dbc, query, &result, "PAYMENT_6") && result.result_set)
210
dbt2_sql_fetchrow(dbc, &result);
211
//C_FIRST C_MIDDLE MY_C_LAST
212
//C_STREET_1 C_STREET_2 C_CITY
213
//C_STATE C_ZIP C_PHONE C_SINCE
214
//C_CREDIT C_CREDIT_LIM C_DISCOUNT
215
//C_BALANCE C_DATA C_YTD_PAYMENT
216
//C_BALANCE and C_YTD_PAYMENT can be NULL
217
vals[C_FIRST]= dbt2_sql_getvalue(dbc, &result, 0);
218
vals[C_MIDDLE]= dbt2_sql_getvalue(dbc, &result, 1);
219
vals[MY_C_LAST]= dbt2_sql_getvalue(dbc, &result, 2);
220
vals[C_STREET_1]= dbt2_sql_getvalue(dbc, &result, 3);
221
vals[C_STREET_2]= dbt2_sql_getvalue(dbc, &result, 4);
222
vals[C_CITY]= dbt2_sql_getvalue(dbc, &result, 5);
223
vals[C_STATE]= dbt2_sql_getvalue(dbc, &result, 6);
224
vals[C_ZIP]= dbt2_sql_getvalue(dbc, &result, 7);
225
vals[C_PHONE]= dbt2_sql_getvalue(dbc, &result, 8);
226
vals[C_SINCE]= dbt2_sql_getvalue(dbc, &result, 9);
227
vals[C_CREDIT]= dbt2_sql_getvalue(dbc, &result, 10);
228
vals[C_CREDIT_LIM]= dbt2_sql_getvalue(dbc, &result, 11);
229
vals[C_DISCOUNT]= dbt2_sql_getvalue(dbc, &result, 12);
230
vals[C_BALANCE]= dbt2_sql_getvalue(dbc, &result, 13);
231
vals[C_DATA]= dbt2_sql_getvalue(dbc, &result, 14);
232
vals[C_YTD_PAYMENT]= dbt2_sql_getvalue(dbc, &result, 15);
234
dbt2_sql_close_cursor(dbc, &result);
238
LOG_ERROR_MESSAGE("ERROR: C_CREDIT=NULL for query PAYMENT_6:\n%s\n", query);
238
LOG_ERROR_MESSAGE("ERROR: C_CREDIT=NULL for query PAYMENT_6:\n%s\n", query);
247
247
/* It's either "BC" or "GC". */
248
248
if (vals[C_CREDIT][0] == 'G')
250
sprintf(query, PAYMENT_7_GC, h_amount, my_c_id, c_w_id, c_d_id);
253
LOG_ERROR_MESSAGE("PAYMENT_7_GC query: %s\n",query);
255
if (!dbt2_sql_execute(dbc, query, &result, "PAYMENT_7_GC"))
262
char my_c_data[1000];
263
sprintf(my_c_data, "%d %d %d %d %d %f ", my_c_id, c_d_id,
264
c_w_id, d_id, w_id, h_amount);
265
/* Copy and escape all at once! */
266
dbt2_escape_str(vals[C_DATA], my_c_data);
267
sprintf(query, PAYMENT_7_BC, h_amount, my_c_data, my_c_id, c_w_id, c_d_id);
270
LOG_ERROR_MESSAGE("PAYMENT_7_BC query: %s\n",query);
273
if (!dbt2_sql_execute(dbc, query, &result, "PAYMENT_7_BC"))
250
sprintf(query, PAYMENT_7_GC, h_amount, my_c_id, c_w_id, c_d_id);
253
LOG_ERROR_MESSAGE("PAYMENT_7_GC query: %s\n",query);
255
if (!dbt2_sql_execute(dbc, query, &result, "PAYMENT_7_GC"))
262
char my_c_data[1000];
263
sprintf(my_c_data, "%d %d %d %d %d %f ", my_c_id, c_d_id,
264
c_w_id, d_id, w_id, h_amount);
265
/* Copy and escape all at once! */
266
dbt2_escape_str(vals[C_DATA], my_c_data);
267
sprintf(query, PAYMENT_7_BC, h_amount, my_c_data, my_c_id, c_w_id, c_d_id);
270
LOG_ERROR_MESSAGE("PAYMENT_7_BC query: %s\n",query);
273
if (!dbt2_sql_execute(dbc, query, &result, "PAYMENT_7_BC"))
279
279
/* Escape special characters. */
280
280
dbt2_escape_str(vals[W_NAME], my_w_name);
281
281
dbt2_escape_str(vals[D_NAME], my_d_name);
283
sprintf(query, PAYMENT_8, my_c_id, c_d_id, c_w_id, d_id, w_id,
284
h_amount, my_w_name, my_d_name);
283
sprintf(query, PAYMENT_8, my_c_id, c_d_id, c_w_id, d_id, w_id, h_amount, my_w_name, my_d_name);
286
285
#ifdef DEBUG_QUERY
287
LOG_ERROR_MESSAGE("PAYMENT_8 query: %s\n",query);
286
LOG_ERROR_MESSAGE("PAYMENT_8 query: %s\n",query);
290
if (!dbt2_sql_execute(dbc, query, &result, "PAYMENT_8"))
295
dbt2_free_values(vals, nvals);
289
if (!dbt2_sql_execute(dbc, query, &result, "PAYMENT_8"))
294
dbt2_free_values(vals, nvals);