Exemplo n.º 1
0
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));
	}
}
Exemplo n.º 2
0
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;
}
Exemplo n.º 3
0
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 */
}
Exemplo n.º 4
0
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;
}
Exemplo n.º 5
0
/*
 * 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, &timestamp, 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;

}
Exemplo n.º 6
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));
	}
}