Пример #1
0
/*
* Routine: 
* Purpose: 
* Algorithm:
* Data Structures:
*
* Params:
* Returns:
* Called By: 
* Calls: 
* Assumptions:
* Side Effects:
* TODO: None
*/
int
mk_s_manager(void *pDest, ds_key_t kIndex)
{
	static int bInit = 0;
	struct S_MANAGER_TBL *r;
	char *szFirst = NULL, 
		*szLast = NULL;
	
	if (pDest == NULL)
		r = &g_s_manager;
	else
		r = pDest;

	if (!bInit)
	{
		memset(&g_s_manager, 0, sizeof(struct S_MANAGER_TBL));
		bInit = 1;
	}
	
	r->id = kIndex;
	pick_distribution(&szFirst, "first_names", 1, 3, S_MANAGER_NAME);
	pick_distribution(&szLast, "last_names", 1, 1, S_MANAGER_NAME);
	sprintf(r->name, "%s %s", szFirst, szLast);
	row_stop(S_MANAGER);
	
	return(0);
}
Пример #2
0
/*
* Routine: 
* Purpose: 
* Algorithm:
* Data Structures:
*
* Params:
* Returns:
* Called By: 
* Calls: 
* Assumptions:
* Side Effects:
* TODO: None
*/
int
mk_s_promotion (void* row, ds_key_t index)
{
   static int bInit = 0;
   static int *pPermutation;
   ds_key_t kIndex;

   if (!bInit)
   {
      pPermutation = makePermutation(NULL, (int)getIDCount(PROMOTION), S_PROMOTION_ID);
      bInit = 1;
   }

   kIndex = getPermutationEntry(pPermutation, (int)index);
   mk_w_promotion(NULL, kIndex);
   row_stop(PROMOTION);

   return(0);
}
Пример #3
0
/*
* Routine: 
* Purpose: 
* Algorithm:
* Data Structures:
*
* Params:
* Returns:
* Called By: 
* Calls: 
* Assumptions:
* Side Effects:
* TODO: None
*/
int
mk_s_item (void* row, ds_key_t index)
{
   static int bInit = 0;
   static int *pPermutation;
   ds_key_t kIndex;

   if (!bInit)
   {
      pPermutation = makePermutation(NULL, (int)getIDCount(ITEM),
      S_ITEM_PERMUTE);
      bInit = 1;
   }

   kIndex = getPermutationEntry(pPermutation, (int)index);
   mk_w_item(NULL, getSKFromID(kIndex, S_ITEM_ID));
   row_stop(ITEM);

   return(0);
}
Пример #4
0
/*
* Routine: 
* Purpose: 
* Algorithm:
* Data Structures:
*
* Params:
* Returns:
* Called By: 
* Calls: 
* Assumptions:
* Side Effects:
* TODO: None
*/
int
mk_s_reason(void *pDest, ds_key_t kIndex)
{
	static int bInit = 0;
	struct S_REASON_TBL *r;
	
	if (pDest == NULL)
		r = &g_s_reason;
	else
		r = pDest;

	if (!bInit)
	{
		memset(&g_s_reason, 0, sizeof(struct S_REASON_TBL));
		bInit = 1;
	}
	
	r->kID = kIndex;
	gen_text(r->szDesc, 1, RS_S_REASON_DESC, S_REASON_DESC);
	row_stop(S_REASON);
	
	return(0);
}
Пример #5
0
int
vld_s_promotion(int nTable, ds_key_t kRow, int *Permutation)
{
   static int bInit = 0;
   static int *pPermutation;
   ds_key_t kIndex;
   table_func_t *pTF = getTdefFunctionsByNumber(PROMOTION);

   if (!bInit)
   {
      pPermutation = 
         makePermutation(NULL, (int)getIDCount(PROMOTION), S_PROMOTION_ID);
      bInit = 1;
   }

   kIndex = getPermutationEntry(pPermutation, (int)kRow);

   row_skip(PROMOTION, kRow - 1);
	pTF->builder(NULL, kIndex);
   row_stop(PROMOTION);

	return(0);
}
Пример #6
0
/*
* Routine: 
* Purpose: 
* Algorithm:
* Data Structures:
*
* Params:
* Returns:
* Called By: 
* Calls: 
* Assumptions:
* Side Effects:
* TODO: 
* 20031022 jms RNGUsage for descrition is an estimate
*/
int
mk_s_class(void *pDest, ds_key_t kIndex)
{
	struct S_CLASS_TBL *r;
	static int bInit = 0;
	
	if (pDest == NULL)
		r = &g_s_class;
	else
		r = pDest;

	if (!bInit)
	{
		memset(&g_s_class, 0, sizeof(struct S_CLASS_TBL));
		bInit = 1;
	}
	
	r->id = kIndex;
	r->subcat_id = mk_join(S_CLASS_SUBCAT_ID, S_SUBCATEGORY, 1);
	gen_text(r->desc, S_CLASS_DESC_MIN, RS_CLASS_DESC, S_CLASS_DESC);
	row_stop(S_CLASS);

	return(0);
}
Пример #7
0
/*
* Routine: 
* Purpose: 
* Algorithm:
* Data Structures:
*
* Params:
* Returns:
* Called By: 
* Calls: 
* Assumptions:
* Side Effects:
* TODO: None
*/
int
mk_s_division(void *pDest, ds_key_t kIndex)
{
	static int bInit = 0;
	struct S_DIVISION_TBL *r;
	
	if (pDest == NULL)
		r = &g_s_division;
	else
		r = pDest;

	if (!bInit)
	{
		memset(&g_s_division, 0, sizeof(struct S_DIVISION_TBL));
		bInit = 1;
	}
	
	r->id = kIndex;
	r->company = (kIndex % DIVISIONS_PER_COMPANY) + 1;
	mk_word(r->name, "syllables", kIndex, RS_DIVISION_NAME, S_DIVISION_NAME);
	row_stop(S_DIVISION);
	
	return(0);
}
Пример #8
0
/*
* generate a particular table
*/
void
gen_tbl (int tnum, long start, long count, long upd_num)
{
	static order_t o;
	supplier_t supp;
	customer_t cust;
	part_t part;
#ifdef SSBM
	date_t dt;
#else
	code_t code;
#endif
	static int completed = 0;
	static int init = 0;
	long i;

	int rows_per_segment=0;
	int rows_this_segment=-1;
	int residual_rows=0;

	if (insert_segments)
		{
		rows_per_segment = count / insert_segments;
		residual_rows = count - (rows_per_segment * insert_segments);
		}

	if (init == 0)
	{
		INIT_HUGE(o.okey);
		for (i=0; i < O_LCNT_MAX; i++)
#ifdef SSBM
			INIT_HUGE(o.lineorders[i].okey);	
#else
			INIT_HUGE(o.l[i].okey);
#endif
		init = 1;
	}

	for (i = start; count; count--, i++)
	{
		LIFENOISE (1000, i);
		row_start(tnum);

		switch (tnum)
		{
		case LINE:
#ifdef SSBM
#else
		case ORDER:
  		case ORDER_LINE: 
#endif
			mk_order (i, &o, upd_num % 10000);

		  if (insert_segments  && (upd_num > 0))
			if((upd_num / 10000) < residual_rows)
				{
				if((++rows_this_segment) > rows_per_segment) 
					{						
					rows_this_segment=0;
					upd_num += 10000;					
					}
				}
			else
				{
				if((++rows_this_segment) >= rows_per_segment) 
					{
					rows_this_segment=0;
					upd_num += 10000;
					}
				}

			if (set_seeds == 0)
				if (validate)
					tdefs[tnum].verify(&o, 0);
				else
					tdefs[tnum].loader[direct] (&o, upd_num);
			break;
		case SUPP:
			mk_supp (i, &supp);
			if (set_seeds == 0)
				if (validate)
					tdefs[tnum].verify(&supp, 0);
				else
					tdefs[tnum].loader[direct] (&supp, upd_num);
			break;
		case CUST:
			mk_cust (i, &cust);
			if (set_seeds == 0)
				if (validate)
					tdefs[tnum].verify(&cust, 0);
				else
					tdefs[tnum].loader[direct] (&cust, upd_num);
			break;
#ifdef SSBM
		case PART:
#else
		case PSUPP:
		case PART:
  		case PART_PSUPP:
#endif 
			mk_part (i, &part);
			if (set_seeds == 0)
				if (validate)
					tdefs[tnum].verify(&part, 0);
				else
					tdefs[tnum].loader[direct] (&part, upd_num);
			break;
#ifdef SSBM
		case DATE:
			mk_date (i, &dt);
			if (set_seeds == 0)
				if (validate)
					tdefs[tnum].verify(&dt, 0);
				else
					tdefs[tnum].loader[direct] (&dt, 0);
			break;
#else
		case NATION:
			mk_nation (i, &code);
			if (set_seeds == 0)
				if (validate)
					tdefs[tnum].verify(&code, 0);
				else
					tdefs[tnum].loader[direct] (&code, 0);
			break;
		case REGION:
			mk_region (i, &code);
			if (set_seeds == 0)
				if (validate)
					tdefs[tnum].verify(&code, 0);
				else
					tdefs[tnum].loader[direct] (&code, 0);
			break;
#endif
		}
		row_stop(tnum);
		if (set_seeds && (i % tdefs[tnum].base) < 2)
		{
			printf("\nSeeds for %s at rowcount %ld\n", tdefs[tnum].comment, i);
			dump_seeds(tnum);
		}
	}
	completed |= 1 << tnum;
}
Пример #9
0
/*
* generate a particular table
*/
void
gen_tbl (int tnum, DSS_HUGE start, DSS_HUGE count, long upd_num)
{
	static order_t o;
	supplier_t supp;
	customer_t cust;
	part_t part;
	code_t code;
	static int completed = 0;
	DSS_HUGE i;

	DSS_HUGE rows_per_segment=0;
	DSS_HUGE rows_this_segment=-1;
	DSS_HUGE residual_rows=0;

	if (insert_segments)
		{
		rows_per_segment = count / insert_segments;
		residual_rows = count - (rows_per_segment * insert_segments);
		}

	for (i = start; count; count--, i++)
	{
		LIFENOISE (1000, i);
		row_start(tnum);

		switch (tnum)
		{
		case LINE:
		case ORDER:
  		case ORDER_LINE: 
			mk_order (i, &o, upd_num % 10000);

		  if (insert_segments  && (upd_num > 0))
			if((upd_num / 10000) < residual_rows)
				{
				if((++rows_this_segment) > rows_per_segment) 
					{						
					rows_this_segment=0;
					upd_num += 10000;					
					}
				}
			else
				{
				if((++rows_this_segment) >= rows_per_segment) 
					{
					rows_this_segment=0;
					upd_num += 10000;
					}
				}

			if (set_seeds == 0)
				tdefs[tnum].loader(&o, upd_num);
			break;
		case SUPP:
			mk_supp (i, &supp);
			if (set_seeds == 0)
				tdefs[tnum].loader(&supp, upd_num);
			break;
		case CUST:
			mk_cust (i, &cust);
			if (set_seeds == 0)
				tdefs[tnum].loader(&cust, upd_num);
			break;
		case PSUPP:
		case PART:
  		case PART_PSUPP: 
			mk_part (i, &part);
			if (set_seeds == 0)
				tdefs[tnum].loader(&part, upd_num);
			break;
		case NATION:
			mk_nation (i, &code);
			if (set_seeds == 0)
				tdefs[tnum].loader(&code, 0);
			break;
		case REGION:
			mk_region (i, &code);
			if (set_seeds == 0)
				tdefs[tnum].loader(&code, 0);
			break;
		}
		row_stop(tnum);
		if (set_seeds && (i % tdefs[tnum].base) < 2)
		{
			printf("\nSeeds for %s at rowcount %ld\n", tdefs[tnum].comment, i);
			dump_seeds(tnum);
		}
	}
	completed |= 1 << tnum;
}