void tpcc_wl::init_tab_dist(uint64_t wid) { for (uint64_t did = 1; did <= DIST_PER_WARE; did++) { row_t * row; uint64_t row_id; t_district->get_new_row(row, 0, row_id); row->set_primary_key(did); row->set_value(D_ID, did); row->set_value(D_W_ID, wid); char name[10]; MakeAlphaString(6, 10, name); row->set_value(D_NAME, name); char street[20]; MakeAlphaString(10, 20, street); row->set_value(D_STREET_1, street); MakeAlphaString(10, 20, street); row->set_value(D_STREET_2, street); MakeAlphaString(10, 20, street); row->set_value(D_CITY, street); char state[2]; MakeAlphaString(2, 2, state); /* State */ row->set_value(D_STATE, state); char zip[9]; MakeNumberString(9, 9, zip); /* Zip */ row->set_value(D_ZIP, zip); double tax = (double)URand(0L,200L)/1000.0; double w_ytd=30000.00; row->set_value(D_TAX, tax); row->set_value(D_YTD, w_ytd); row->set_value(D_NEXT_O_ID, 3001); index_insert(i_district, distKey(did, wid), row, wh_to_part(wid)); } }
void tpcc_wl::init_tab_wh(uint32_t wid) { assert(wid >= 1 && wid <= g_num_wh); row_t * row; uint64_t row_id; t_warehouse->get_new_row(row, 0, row_id); row->set_primary_key(wid); row->set_value(W_ID, wid); char name[10]; MakeAlphaString(6, 10, name, wid-1); row->set_value(W_NAME, name); char street[20]; MakeAlphaString(10, 20, street, wid-1); row->set_value(W_STREET_1, street); MakeAlphaString(10, 20, street, wid-1); row->set_value(W_STREET_2, street); MakeAlphaString(10, 20, street, wid-1); row->set_value(W_CITY, street); char state[2]; MakeAlphaString(2, 2, state, wid-1); /* State */ row->set_value(W_STATE, state); char zip[9]; MakeNumberString(9, 9, zip, wid-1); /* Zip */ row->set_value(W_ZIP, zip); double tax = (double)URand(0L,200L,wid-1)/1000.0; double w_ytd=300000.00; row->set_value(W_TAX, tax); row->set_value(W_YTD, w_ytd); index_insert(i_warehouse, wid, row, wh_to_part(wid)); return; }
void MakeAddress(char *str1, char *str2, char *city, char *state, char *zip) { MakeAlphaString(10,20,str1); /* Street 1*/ MakeAlphaString(10,20,str2); /* Street 2*/ MakeAlphaString(10,20,city); /* City */ MakeAlphaString(2,2,state); /* State */ MakeNumberString(9,9,zip); /* Zip */ }
void tpcc_wl::init_tab_wh() { if (WL_VERB) printf("[init] workload table.\n"); for (UInt32 wid = 1; wid <= g_num_wh; wid ++) { row_t * row; uint64_t row_id; t_warehouse->get_new_row(row, 0, row_id); row->set_primary_key(wid); row->set_value(W_ID, wid); char name[10]; MakeAlphaString(6, 10, name); row->set_value(W_NAME, name); char street[20]; MakeAlphaString(10, 20, street); row->set_value(W_STREET_1, street); MakeAlphaString(10, 20, street); row->set_value(W_STREET_2, street); MakeAlphaString(10, 20, street); row->set_value(W_CITY, street); char state[2]; MakeAlphaString(2, 2, state); /* State */ row->set_value(W_STATE, state); char zip[9]; MakeNumberString(9, 9, zip); /* Zip */ row->set_value(W_ZIP, zip); double tax = (double)URand(0L,200L)/1000.0; double w_ytd=300000.00; row->set_value(W_TAX, tax); row->set_value(W_YTD, w_ytd); index_insert(i_warehouse, wid, row, wh_to_part(wid)); } return; }
/* * Loads Customer Table * Also inserts corresponding history record * * id - customer id * d_id - district id * w_id - warehouse id */ int Customer(long d_id, long w_id ) { long c_id; long c_d_id; long c_w_id; char c_first[17]; char c_middle[3]; char c_last[17]; char c_street_1[21]; char c_street_2[21]; char c_city[21]; char c_state[3]; char c_zip[10]; char c_phone[17]; char c_since[12]; char c_credit[3]; long c_credit_lim; float c_discount; float c_balance; char c_data[501]; float h_amount; char h_data[25]; int err; printf("Loading Customer for DID=%ld, WID=%ld\n",d_id,w_id); for (c_id=1; c_id<=CUST_PER_DIST; c_id++) { DBT key, data; CUSTOMER_PRIMARY_KEY c_key; CUSTOMER_PRIMARY_DATA c_primdata; HISTORY_PRIMARY_KEY h_key; memset(&c_key, 0, sizeof(CUSTOMER_PRIMARY_KEY)); memset(&c_primdata, 0, sizeof(CUSTOMER_PRIMARY_DATA)); memset(&h_key, 0, sizeof(HISTORY_PRIMARY_KEY)); /* Generate Customer Data */ c_d_id=d_id; c_w_id=w_id; MakeAlphaString( 8, 16, c_first ); c_middle[0]='O'; c_middle[1]='E'; c_middle[2] = '\0'; if (c_id <= 1000) Lastname(c_id-1,c_last); else Lastname(NURand(255,0,999),c_last); MakeAddress( c_street_1, c_street_2, c_city, c_state, c_zip ); MakeNumberString( 16, 16, c_phone ); if (random1(0L,1L)) c_credit[0]='G'; else c_credit[0]='B'; c_credit[1]='C'; c_credit[2]='\0'; c_credit_lim=50000; c_discount=((float)random1(0L,50L))/100.0; c_balance= -10.0; MakeAlphaString(300,500,c_data); /* Prepare for putting into the database */ c_key.C_W_ID = c_w_id; c_key.C_D_ID = c_d_id; c_key.C_ID = c_id; memcpy(&c_primdata.C_FIRST, &c_first, 17); memcpy(&c_primdata.C_MIDDLE, &c_middle, 3); memcpy(&c_primdata.C_LAST, &c_last, 17); memcpy(&c_primdata.C_STREET_1, &c_street_1, 21); memcpy(&c_primdata.C_STREET_2, &c_street_2, 21); memcpy(&c_primdata.C_CITY, &c_city, 21); memcpy(&c_primdata.C_STATE, &c_state, 3); memcpy(&c_primdata.C_ZIP, &c_zip, 10); memcpy(&c_primdata.C_PHONE, &c_phone, 17); memcpy(&c_primdata.C_DATA, &c_data, 501); memcpy(&c_primdata.C_CREDIT, &c_credit, 3); memcpy(c_primdata.C_CREDIT, &c_credit, 3); c_primdata.C_DISCOUNT = c_discount; c_primdata.C_BALANCE = c_balance; memset(&key, 0, sizeof(DBT)); key.data = &c_key; key.size = sizeof(CUSTOMER_PRIMARY_KEY); memset(&data, 0, sizeof(DBT)); data.data = &c_primdata; data.size = sizeof(CUSTOMER_PRIMARY_DATA); if((err=dbp_customer->put(dbp_customer, 0, &key, &data, 0))) { db_error("DB->put", err); return -1; } h_amount = 10.0; MakeAlphaString(12,24,h_data); memset(&key, 0, sizeof(DBT)); key.data = &h_key; key.size = sizeof(HISTORY_PRIMARY_KEY); memset(&data, 0, sizeof(DBT)); h_key.H_C_ID = c_id; h_key.H_C_D_ID = c_d_id; h_key.H_C_W_ID = c_w_id; h_key.H_W_ID = c_w_id; h_key.H_D_ID = c_d_id; h_key.H_AMOUNT = h_amount; memcpy(&h_key.H_DATE, ×tamp, 26); memcpy(&h_key.H_DATA, &h_data, 24); if((err=dbp_history->put(dbp_history, 0, &key, &data, 0))) { db_error("DB->put", err); return -1; } if ( option_debug ) printf( "CID = %ld, LST = %s, P# = %s\n", c_id, c_last, c_phone ); if ( !(c_id % 100) ) { printf("."); if ( !(c_id % 1000) ) printf(" %ld\n",c_id); } } printf("Customer Done.\n"); return 0; }
void tpcc_wl::init_tab_cust(uint64_t did, uint64_t wid) { assert(g_cust_per_dist >= 1000); for (UInt32 cid = 1; cid <= g_cust_per_dist; cid++) { row_t * row; uint64_t row_id; t_customer->get_new_row(row, 0, row_id); row->set_primary_key(cid); row->set_value(C_ID, cid); row->set_value(C_D_ID, did); row->set_value(C_W_ID, wid); char c_last[LASTNAME_LEN]; if (cid <= 1000) Lastname(cid - 1, c_last); else Lastname(NURand(255,0,999), c_last); row->set_value(C_LAST, c_last); #if !TPCC_SMALL char * tmp = "OE"; row->set_value(C_MIDDLE, tmp); char c_first[FIRSTNAME_LEN]; MakeAlphaString(FIRSTNAME_MINLEN, sizeof(c_first), c_first); row->set_value(C_FIRST, c_first); char street[20]; MakeAlphaString(10, 20, street); row->set_value(C_STREET_1, street); MakeAlphaString(10, 20, street); row->set_value(C_STREET_2, street); MakeAlphaString(10, 20, street); row->set_value(C_CITY, street); char state[2]; MakeAlphaString(2, 2, state); /* State */ row->set_value(C_STATE, state); char zip[9]; MakeNumberString(9, 9, zip); /* Zip */ row->set_value(C_ZIP, zip); char phone[16]; MakeNumberString(16, 16, phone); /* Zip */ row->set_value(C_PHONE, phone); row->set_value(C_SINCE, 0); row->set_value(C_CREDIT_LIM, 50000); row->set_value(C_DELIVERY_CNT, 0); char c_data[500]; MakeAlphaString(300, 500, c_data); row->set_value(C_DATA, c_data); #endif if (RAND(10) == 0) { char tmp[] = "GC"; row->set_value(C_CREDIT, tmp); } else { char tmp[] = "BC"; row->set_value(C_CREDIT, tmp); } row->set_value(C_DISCOUNT, (double)RAND(5000) / 10000); row->set_value(C_BALANCE, -10.0); row->set_value(C_YTD_PAYMENT, 10.0); row->set_value(C_PAYMENT_CNT, 1); uint64_t key; key = custNPKey(c_last, did, wid); index_insert(i_customer_last, key, row, wh_to_part(wid)); key = custKey(cid, did, wid); index_insert(i_customer_id, key, row, wh_to_part(wid)); } }